Трислойна архитектура

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

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

Трислойна Архитектура редактиране

 
Визуален изглед на приложение използващо трислойна архитектура

Всички съвременни бизнес приложения имат достъп до различен вид данни като част от тяхната основна функционалност. След като релационните бази данни добиха широка популярност, IT индустрията се преориентира от еднослоен модел (mainframe) към модела клиент-сървър. При него са налице клиент, който включва презентационна логика и голямата част от бизнес логиката на приложението, както и сървър включващ в себе си хранилище за данни (data storage) и част от бизнес логиката под формата на готови и съхранени заявки към базата данни. От началото на 90-те години клиент-сървър моделът започна да излиза от употреба поради високите разходи за поддръжка и невъзможността за разпределение на отговорности при възникване на проблеми. Моделът, който постепенно го измества е трислойната архитектура показана на картинката от дясно.

Трислойната архитектура обикновено се състои от презентационен слой (потребителски интерфейс) на най-високо ниво в приложението. Той служи за прякото взаимодействие с потребителя и изпращането на заявки към бизнес слоя. Не трябва да има директна връзка между този слой и слоят за бази данни. Бизнес слоят служи за обработка на данните и работните процеси. Той комуникира както с презентационния слой, така и с базите данни. Слоят за данни комуникира само с бизнес логиката и служи за съхранение данни и тяхното използване. Често отделните модули се разработват и на различни платформи. Разработена е от Джон Дж. Донован, в неговата компания OEC (Open Environment Corporation), основана в Кеймбридж, Масачузетс.

Освен стандартните предимства на модулния софтуер, трислойната архитектура е проектирана да позволява да бъде променен или заменен независимо, който и да е от трите слоя, за да отговаря на промени в изискванията или технологиите. Например, промяна на операционната система на презентационния слой би засегнала само кода за потребителският интерфейс.

В повечето случаи, потребителският интерфейс работи на десктоп система и използва стандартен графичен интерфейс, функционалната логика за обработка на данните, която може да се състои от един или повече отделни модула, работещи на десктоп система или сървърно приложение, и РСУБД (релационните системи за управление на бази данни) работещи на сървър база данни или мейнфрейм, който съдържа логиката за съхранението и обработката на базите данни. Междинният слой може самият да бъде многослоен. В такъв случай цялостната архитектура се нарича N-слойна архитектура.

Трислойната архитектура се състои от следните три слоя:

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

Употреба в уеб разработката редактиране

В областта на уеб разработката трислойната архитектура често се използва в уеб сайтове, най-често т.нар. „електронни магазини“, които се състоят от 3 слоя:

  1. Front-end слой (Клиентски слой) – този слой, е съдържанието, което се възпроизвежда от уеб браузърът и достига до крайния потребител. То може да бъде генерирано статично или динамично.
  2. Среден слой – той реализира логиката на самото уеб приложение. Това се осъществява със сървър, който обработва и генерира динамично съдържание. Този сървър може да е с платформа един от следните езици – Ruby on Rails, Java EE, ASP.NET, PHP, ColdFusion, Perl, Node.js.
  3. Back-end слой – той представлява база-данни, която се състои, както от самата информация в таблици, така и от система за управлението и (RDBMS).

Други факти редактиране

Обмяната на информация между слоевете е част от архитектурата. За целта може да се използват един или повече от следните протоколи – SNMP, CORBA, Java RMI, .NET Remoting, Windows Communication Foundation, sockets, UDP, уеб приложения или други стандартни или подходящи протоколи. Често за свързване на отделните слоеве се използва помощен софтуер, наричан middleware. Различните слоеве често (но не винаги) работят на различни сървъри, и всеки слой може да работи на система от свързани компютри, функциониращи като едно цяло, наричани cluster.

Проследяване на информацията редактиране

Възможността за проследяване на потока от информацията в n-слойни системи е задача, която увеличава значимостта и трудността си пропорционално на сложността на системата. За измерване и оценяване на представянето на една система се използва т.нар. система ARM (Application Response Measurement).

Съпоставка с MVC архитектурата редактиране

На пръв поглед, трислойната архитектура може да изглежда много подобна на идеята на MVC модела, но топологично разглеждани, те са доста различни. Основно правило в трислойната архитектура, е че клиентския слой никога на взаимодейства директно със слоя на данните, всяка комуникация трябва да премине през средния слой. По идея трислойния модел е линеен, докато MVC архитектурата е „триъгълна“ – изгледа изпраща обновяване към контролера, контролера обновява модела, и гледка бива обновявана директно от модела.

От историческа гледна точка идеята за трислойната архитектура се появява през 90-те след наблюдения на т.нар. разпределени системи (напр. уеб приложения), където трите слоя работели върху различни платформи. MVC модела, от своя страна, възниква десетилетие по-рано (края на 70-те и началото на 80-те) и е разработен въз основа на наблюдения на приложения, работещи на една и съща работна станция. MVC моделът е бил приложен в системи с отделни слоеве по-късно (Model 2).

Обръщане на контрола редактиране

Относно частта свързана с бизнес слоя в трислойната архитектура, може да се спомене и Обръщане на контрола. В софтуерното програмиране обръщане на контрола (IoC) е програмистка техника, изразена в терминологията на обектно-програмното програмиране, в която свързването на обектите е обвързано с времето за изпълнение на програмата. В традиционното програмиране потока на бизнес логиката (бизнес слоя) се определя от обекти които са статично съединени един към друг. С обръщане на контрола, потока зависи от обектната диаграма, която се инстанцира от асемблер (програма, която прави базови компютърни инструкции) и е възможен благодарение на взаимовръзката на обектите, дефинирани чрез абстракции. Свързващия процес е постигнат чрез dependency injection (модел за софтуерен дизайн), въпреки че има аргументи че употребата на локатор за услуги (модел за дизайн в софтуерното разработване) също осигурява обръщане на контрола. Базовия принцип на IoC e “Не ни звънете, ние ще ви потърсим“.

Източници редактиране

    Тази страница частично или изцяло представлява превод на страницата Multitier Architecture в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите. ​

ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни.​