240 likes | 355 Vues
Въведение. Програмиране с шаблони и рамки. доц. Станимир Стоянов Емил Дойчев. Какво е шаблон?. Развитие на идеята. Кристофър Александър, 1970 г. – няколко книги свързани с шаблоните в строителството и архитектурата. “A Pattern Language”, Oxford University Press, 1977
E N D
Въведение Програмиране с шаблони и рамки доц. Станимир Стоянов Емил Дойчев
Развитие на идеята • Кристофър Александър, 1970 г. – няколко книги свързани с шаблоните в строителството и архитектурата. “A Pattern Language”, Oxford University Press, 1977 • Тази идея постепенно е възприета и в софтуерните технологии.
Развитие на идеята • Популяризирането на шаблоните в софтуера става с книгата “Design Patterns: Elements of Reusable Object-Oriented Software” • Автори: Ерик Грама, Ричард Хелм, Ралф Джонсън, Джон Влисидес – известни като “Gang of Four”. • Описаните шаблони, не са разработка на авторите, а са резултат от изследване на много проекти и документиране на общите елементи в дизайна.
Дефиниция за шаблон • Шаблоните правят връзката между проблеми и решения. • Шаблоните дават възможност да се документира известен повтарящ се (често срещан) проблем и неговото решение в определен контекст.
Използвани термини • Контекст – среда, обкръжение, ситуация или взаимносвързани условия, при които нещо съществува. • Проблем – отворен въпрос; нещо, което трябва да бъде изследвано и решено; обикновено проблемът е ограничен в рамките на контекста. • Решение – отговор на проблемът, в рамките на контекста, който помага за разрешаването му.
Дефиниция за шаблон Всеки шаблон представлява правило, състоящо се от три части, които дават връзката между някакъв контекст, проблем и решение. --- Кристофър Александър, “A Pattern Language” Всеки шаблон представлява правило, състоящо се от три части, които дават връзката между някакъв контекст, някаква система от условия, които се появяват често в този контекст, и някаква софтуерна конфигурация, която позволява тези условия да бъдат изпълнени. --- Ричард Гейбриъл Шаблонът е идея, която е била полезна в един конкретен контекст и вероятно може да бъде използвана и в други. --- Мартин Флауър, “Analisys Patterns”
Характеристики на шаблоните • Общи характеристики на шаблоните: • възникват с натрупването на опит • обикновено са описани в структуриран формат • предотвратяват “откриването на колелото” • съществуват в различни нива на абстракция • подложени са на непрекъснати подобрения • предназначени са за повторна употреба • могат да бъдат използвани в комбинация за разрешаване на по-голям проблем
Категоризация на шаблоните • Най-често използваните категории шаблони са: • Шаблони за проектиране (Design patterns) • Шаблони за архитектура (Architectural patterns) • Шаблони за анализ (Analysis patterns) • Създаващи шаблони (Creational patterns) • Структурни шаблони (Structural patterns) • Поведенчески шаблони (Behavioural pattenrs)
Какво е J2EE • J2EE е платформа за разработване на разпределени корпоративни софтуерни приложения. Има следните х-ки: • Установява стандарти за основните нужди на приложенията: връзка с база данни, бизнес компоненти, MOM (message-oriented middleware), компоненти за web, комуникациони протоколи и т.н. • “Най-доброто по рода си” – имплементации, базирани на отворени стандарти, което защитатва инвестициите в технологиите. • Предоставя стандартна платформа за разработване на преносими компоненти, независими от имплементацията на различните производители – избягва се “обвързването” с конкретен производител. • Намалява времето за достигане до крайният клиент, защото голяма част от инфраструктурата и комуникациите се предоставят наготово от производителите на приложните сървъри • Повишава продуктивността на програмистите защото J2EE се базира на Java и целия корпоративен софтуер може да бъде разработен под J2EE като се използва един език за програмиране – Java • Дава възможност за връзка със съществуващи системи в хетерогенни среди (interoperability).
Слоест подход • Разглеждат се шаблоните, приложими в J2EE • Платформата J2EE е многослойна система • Слой – логическа част от системата, който има точно определени отговорности.
Пет-слоен модел Клиентски слой Клиенти на системата, аплети, приложения и други GUI Представителен слой JSP, Servlets, и други UI елементи Приложен слой EJB и други бизнес обекти J2EE каталог със шаблони Интеграционен слой JMS, JDBC, Connectors, и т.н. Ресурсен слой Бази данни, външни системи, наследени ресурси
Пет-слоен модел Клиентски слой Представя всички устройства или системи, който осъществяват връзка с приложението. Могат да бъдат: • Web browser • Java или друго приложени • Java аплет • WAP телефон • Мрежово приложение • и др.
Пет-слоен модел Представителен слой Капсулира логиката, свързана с обслужването на клиента. Този слой: • приема заявките на клиента • управялва сесиите • контролира достъпа до бизнес услугите • преобразува данните в удобен за клиента вид
Пет-слоен модел Приложен слой Предоставя бизнес услугите, необходими на клиентите. Съдържа бизнес данните и бизнес логиката. EJB са предпочитаните компоненти в този слой.
Пет-слоен модел Интеграционен слой Този слой е отговорен за осъществяване на комуникацията с външни ресурси и системи, като хранилища на данни и външни приложения.
Пет-слоен модел Ресурсен слой Този слой съдържа данните и външните ресурси.
Шаблони за представителния слой • Intercepting Filter – улеснява пре- и пост-обработката на заявките. • Front Controller – предоставя централизиран контрол за управление на заявките. • Context Object – капсулиране на състоянието независимо от използвания протокол. • Application Controller – централизира и модулизира управлението на действията и представянето. • View Helper – капсулира логиката, която не е свързана с форматирането на изхода в т.нар. Helper компоненти. • Composite View – създава резултат (представяне) от отделни субкомпоненти. • Service to Worker, Dispatcher View – комбинира Front Controllerи View Helper с диспечърски компонент.
Шаблони за приложния слой • Business Delegate – капсулира достъпът до бизнес услуга. • Service Locator – капсулира откриването на услуги и компоненти. • Session Façade – капсулира компонентите от бизнес слоя и предоставя ограничен достъп за отдалечените клиенти. • Application Service – централизира и обобщава поведение за да предостави унифициран слой за услуги. • Business Object – разделя бизнес данни и логика, чрез обектен модел. • Composite Entity – имплементира персистентни Business Objects. • Transfer Object – пренасяне на данни между словете. • Transfer Object Assembler – съставя сложен Transfer Object от множество източници на данни. • Value List Handler – управлява търсенето, кеширането на резултатите и предоставя възможност за избор на елементи от резултатите.
Шаблони за интеграционния слой • Data Access Object – капсулира достъпа до хранилищата за данни. • Service Activator – получава съобщения и асинхронно извиква методи за обработка. • Domain Store – предоставя прозрачен механизъм за съхраняване на бизнес обекти. • Web Service Broker – предоставя достъп до една или повече услуги, чрез XML и web протокол.