/ / Prism + Модулите използват WCF като слой за данни - c #, wpf, wcf, призма

Prism + модулите използват WCF като слой за данни - c #, wpf, wcf, призма

Пиша приложение (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 услуги или не. Можете да научите повече тук и тук

Надявам се, че това помогна.