Пиша приложение (WPF), където използвампризмата. Имам клиент с shellview. Имам няколко модула, така че това са различни проекти. Всеки модул е самостоятелен проект. Модулите се зареждат от Unity.
Имам следното
Solution
Client
Modules
Client ( app )
Common
Entities
Server
Data
Web
Така че можете да видите, че имам проект за данни под папката на сървъра. Там можете да намерите edmx. Проектът "Уеб" е празен, проектът "Енциклопедия" също е празен.
Клиентът (приложението) има shellview с bootstrapper. Клиентът работи. Трябва да се интегрира само слоят за достъп до данни.
Какво е най-доброто решение за достъп до данни? WCF, нещо друго? Какъв шаблон трябва да използваме за обектите. Как можем да използваме услугата в модулите, където е кодът (View / ViewModel)?
Pff, гледам и чета толкова много. Намерих някои теми за stackoverflow. Но никое от темите не започва от самото начало. Надявам се, че някой може да ми помогне.
Отговори:
0 за отговор № 1Предлагам ви да генерирате POCO или STE на .edmx и да използвате шаблона за хранилище за достъп до базата данни. Създайте отделен проект за WCF услуга и се обадете в тези хранилища.
Вашето решение за Prism ще има прокси проект със статичен клас за връщане на обект на услуга и приложението ви Клиент (Prism) ще се обади на услугите на WCF.
0 за отговор № 2
Може би можете да разгледате Calcium SDK (http://calcium.codeplex.com/), който използва модулното приложение за Prism, заедно с поддръжка на услугите на WCF.
0 за отговор № 3
Ако сте семейна с WCF и EntityFramework от страна на сървъра, това е начинът да отидете.
С цел повторно използване на генерираните прокси класовеот услуги можете да запазите референциите за услуги в общ монтаж, който посочвате от всички модули. Нещо като "Инфраструктура" е добра конвенция за именуване.
В случай, че някой от модулите Ви има нужда от уникална функционалност, тогава поставете референцията за услугата по този проект.
В случай на WPF клиент: Първо използвайте рамковия код на отдела и отделете класовете си Модел в отделен монтаж, така че да можете да го използвате отново в основния си клиент и модули.
В случай на сребърен клиент: Ако дублиращите класове модели и пространства на имена, когатогенерирането на услугата proxy е проблем за вас, можете да проверите WCF RIA Services. Винаги имайте предвид, че можете да свържете две монтажни среди със сребърен и с .net, като използвате RIA Link в свойствата на файловете на проекта на Visual Studio. След това всеки избран от вас код на сървъра може да бъде използван отново от клиента. Възможно е да използвате "споделеното" наставка във вашето име (ex: enums.shared.cs), независимо дали използвате WCF услуги или не. Можете да научите повече тук и тук
Надявам се, че това помогна.