ЗНАЕТЕ ИНТУИТ, Лекция, Компонентни технологии и разработване на разпределен софтуер

Общи принципи на изграждане на разпределени системи

В бъдеще ще разгледаме компонентни технологии във връзка с разработването на разпределени софтуерни системи. Преди да се задълбочите в тяхното проучване, е полезно да разберете общите принципи на изграждането на такива системи, без да сте обвързани с компонентния подход. Тогава много от решенията, използвани в такива технологии, стават много по-разбираеми.

Изграждането на висококачествени разпределени системи е една от най-предизвикателните задачи в разработването на софтуер. Технологии като J2EE и. NET са създадени само за да направят разработването на широко разпространени видове разпределени системи - така наречените бизнес приложения, които поддържат решаването на бизнес проблеми на дадена организация - доста прости и достъпни за почти всеки програмист. Основната задача, която те се опитват да решат с помощта на разпределени системи, е да осигури възможно най-простия достъп до възможно най-голям брой ресурси за възможно най-голям брой потребители. Най-важните свойства на такава система са прозрачност, откритост, мащабируемост и сигурност. .

  • Прозрачност .

Прозрачността е способността на системата да скрива от потребителя физическото разпределение на ресурсите, както и аспекти на тяхното преразпределение и движение между различни машини в хода на работата, репликация (т.е. дублиране) на ресурси, трудности, възникващи при работа на няколко потребители с един ресурс едновременно, грешки при достъпа до ресурси и в работата на самите ресурси.

Разпределената технология за разработване на софтуер също може да бъде прозрачна, доколкото позволява на разработчика да забрави, че създадената система се разпространява и колко лесно по време на разработката е възможно да се отделят аспектите на изграждането на система, свързана с нейното разпространение, от решаването на проблеми на домейна или бизнес, в рамките на която системата трябва да работи.

Степента на прозрачност може да бъде различна, тъй като е неразумно да се скриват всички ефекти, възникващи по време на работата на разпределена система. В допълнение, прозрачността на системата и нейната производителност обикновено са обратно свързани - например, когато се опитват да преодолеят отказите за свързване със сървъра, повечето уеб браузъри се опитват да установят тази връзка няколко пъти, а за потребителя изглежда много бавен отговор на системата на неговите действия.

Отвореността на системата се определя като пълнота и яснота на описанието на интерфейсите за работа с нея и услугите, които тя предоставя чрез тези интерфейси. Това описание трябва да включва всичко, което трябва да знаете, за да използвате тези услуги, независимо от изпълнението на системата и платформата, на която е разположена. Един от основните елементи на описанието на услугата е нейният договор.

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

Ето защо използването на компонентни технологии при разработването на практически полезен разпределен софтуер е неизбежно.

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