Entity Framework в многослойни архитектури - всичко за ИТ и програмиране

Написано на 19 март 2009 г. Публикувано в ADO.NET и бази данни

СЪДЪРЖАНИЕ

В статията от този месец ще ви покажа как да добавите Entity Framework към n-tier архитектура, която използва технологиите Windows® Communication Foundation (WCF) и Windows Presentation Foundation (WPF) и модела Model View Presenter (MVP). Ще представя примерна архитектура със слоеве за логическа база данни за съхранение, достъп до данни, модел на реалм, диспечер, сервизен слой, презентационен слой и пасивен UI слой и ще демонстрирам интегрирането на тези слоеве с помощта на Entity Framework. Всички използвани примерни кодове са достъпни за изтегляне от уеб сайта на MSDN Magazine.

Дефиниране на слоеве

Това приложение ви позволява да търсите клиенти в примерната база данни на NorthwindEF и да ги преглеждате, добавяте, променяте и изтривате. Но преди да се потопим в кода и примерите, нека да разгледаме общата архитектура на примера. Тъй като фокусът не е върху архитектурата, а върху интегрирането на Entity Framework с архитектурния дизайн, избрах сравнително обща архитектура, която може лесно да бъде модифицирана и интегрирана с други стратегии.

На фиг. 1 показва общ изглед на типична слоеста архитектура. Горните два слоя са за представяне и навигация в потребителския интерфейс със слоя на потребителския интерфейс и слоя на презентацията. Слоят на потребителския интерфейс може да бъде реализиран с помощта на всяка от многото налични технологии; тази статия и примерите обаче използват WPF рамката. потребителски слойИнтерфейсът следва модела MVP за пасивна презентация, което означава, че изгледите (горният слой на потребителския интерфейс) се управляват и подготвят от презентационния слой. Презентаторите са отговорни за предоставянето на данни на изгледи, извличане на данни от изгледи за съхраняване в подлежащите слоеве и като цяло отговарят на събития, задействани от изгледи.

архитектури

Ориз. 1. Преглед на архитектурата

В моя пример презентаторите взаимодействат с основните слоеве чрез WCF рамката. Презентаторът извиква услугата чрез WCF рамката, като използва договора за услуга като ръководство. Слоят на услугата разкрива услуги чрез интерфейси на договор за услуга. Тези договори позволяват на презентаторите да получават информация за извикване на услуги.

Сервизният слой е отговорен за получаване на данни от презентаторите и извикване на подходящите методи на бизнес слоя, които изпълняват подходящата бизнес логика и събират и модифицират данните. Бизнес слоят съдържа бизнес логиката и LINQ кода за обекти. LINQ кодът за Entities се отнася до модел на обект, който се генерира автоматично от Entity Framework. Когато изпълнява LINQ заявки, Entity Framework преобразува LINQ заявката в концептуален модел на обект (Модел на данни на обекта - EDM), картографира аспекти на обекта към слоя за съхранение и генерира SQL заявка за изпълнение спрямо базата данни.