Б4 - Гердан

май 2007

Тази статия описва мрежовите разработки с Б4 от гледна точка на няколкогодишния ни опит. Обхвата им не е голям - предимно счетоводен тип. Tе са изградени върху LAN, тоест предполагат бърза мрежа и наблюдаем сървър.
Вижте също основите на мрежовите приложения.

Въведение
Работата в мрежа наподобява пиеса с точно определени стъпки, реплики и действия.
Целта на хореографията е да запази схемата на стандартния модел, но разпределена върху няколко работни места. Счетоводният модел е изключително силен и хармоничен. Той подчинява цяло обкръжение от сателитни информационни системи. Процедурите на работа се нормират и прихващат от сървърно приложение. Това води следните важни особености:

- 1. Сървърът (приложният сървър) е програма, която работи почти без намеса на човек. Там степента на равновесие и автоматика е много висока, а интерфейса е само административен. Програма от този тип не би била възможна в соло режим. Именно разработката на свестен приложен сървър ни отне няколко години. Не е имало причина, нито сме могли да го напишем по-рано.
- 2. При запис и възпроизвеждане в регистрите ние се придържаме към вече описания стандарт за документи. Как точно документите възникват и се оформят, е предмет на друг разказ. Засега да се съсредоточим върху факта, че те просто се подреждат в протокола. Важно е и всеки документ да съдържа променлива за време при гарантирана хронология.
- 3. Клиентите се нуждаят от бърз достъп до данните в счетоводния протокол - пряко и чрез уговорени справки. При големите обеми, които протоколът достига, мрежата се натоварва и възниква проблем със скоростта и синхронизацията.

Записи
Всяка записана порция в регистъра (протокола) е отражение на документ. Документите се произвеждат от програма при клиента, според вида и пълномощията му. Когато клиентът натисне "запис", се случват следните неща:
Възоснова на образа на документа на екрана, клиентската програма прави регистрова порция + заявка, която изпраща към сървъра. Сървърът приема заявката, издава регистрационен номер, записва порцията в протокола, обновява текущия статус и връща на клиента знак за успех, съпроводен с току-що издадения номер. След като тази транзакция завърши, хартията се отпечатва и може да напусне работното място.
Стандартна схема за мрежов кръг
Четене
Когато от клиентска машина поискаме форма или справка, тя се произвежда при клиента по данни от регистъра. Тъй като регистъра се пази на сървъра, клиентът може да разполага само с негово копие, което той получава при поискване. При това клиентът получава не целия регистър, а само поискания комплект за собственото му

Данново пространство и време
Схващането на хората за данни и време може да се представи като множество събития, възникнали след някакъв начален момент от време t, към който те подразбират едно стартово състояние. Всъщност всеки човек има собствен интерес към времето и участъка данни, така, че нито стартовите моменти, нито обхвата протоколни данни съвпадат.
Всеки клиент има собствено виждане за данните
Сега да формулираме главната задача на сървъра:
Да бъде произведен комплект "статус+регистър" по зададен начален и краен момент.
Това производство е възможно, защото сървърът пази статус в най-ранния момент t0 и протоколни данни достатъчни за кой да е от желаните комплекти.
Сървърът пази всичко
Но обикновената генерация "статус + събития -> статус" е технологично трудна и бавна. Времето, необходимо за тази генерация расте линейно с броя събития в протокола и при голям брой събития се проточва неприемливо дълго. Ето как стигнахме до идеята за

Дискретизация
Нека предположим, че освен стартовия статус пазим втори, междинен статус - например по средата на временната линия.
Гердан от две зърна
Така разстоянието от произволна временна точка до място с "познат" статус е двойно по-малко. Значи двойно по-малко е и времето за генерация на статуса, поискан от клиента. Разбира се "Двойно по-малко" означава "многократно по-малко", ако поддържаме гердан от много междинни статуси по линията на времето.
Гердан от много зърна
И щом имаме това удобно представяне, нямаше как да се въздържим от използването на

Кеш
Думата "много" спомената по-горе е преувеличена. Множеството статус-зърна от гердана е малко в компютърен смисъл и лесно се подава на кеширане, тоест възможност да избегнем повторното изпращане по мрежа на едни и същи непроменени данни. Действието на кеша е близко до следната представа: Да допуснем, че данните в регистъра са еквивалент на картинка. Тогава всяка модификация може да се представи като промяна в тази картинка, например появява се нов образ. Kешовия механизъм съобразява, че за да получим новата картинка е достатъчно да бъдат пренесени само няколко квадратчета:
Така работи кеша
В действителност и регистровите данни се дискретизират и се свеждат до множество подобно на статус-зърната. Така получихме двуредов гердан с който копчето "Донеси данни от сървъра" заработи значително по-пъргаво.

Обратимост
Обратимостта е възможност за промяна на стари данни. Форменият счетоводен модел има такова свойство, то произлиза от разместителния закон за събиране на числата. С малко усилия и програмен код всички гореописани мероприятия се съобразяват с него и тези системи понасят корекции, вмъкване и изтриване, запазвайки всички чекове и работоспособност.

Още няколко линка:
Основи на мрежовите приложения
Още за Б4
Начална страница

Valid HTML 4.01!