Wkrótce opracujemy aplikację dla dużych przedsiębiorstw i spędziłem trochę czasu na badaniu WPF + PRISM + MVVM, mam dobre pojęcie o większość pojęć i kocham modułowość, którą zapewnia.WPF WCF Prism i MVVM - poprawny sposób na ujawnienie obiektów
Tam, gdzie mam problemy, jest to, jak zaprojektować warstwę usług, aby uzyskać dostęp do danych i wyjść, szczególnie gdy ta usługa jest wprowadzana przez moduł z myślą, że moduł zależny może z niego korzystać.
Chciałem wyodrębnić moje usługi danych WCF w ramach usług aplikacji i użyć ServiceLocator
do rozwiązania konkretnych wystąpień z moich modeli widoków, jednak mam ciężko pracować nad tym, jak to powinno się trzymać razem, głównie ze względu na moje intencje część usługi WCF.
Na przykład
Module1 Zawiera usługi WCF + Service Zastosowanie Beton (ISearchService) + WCF usługi generowane podmiotów (modelu)
Module1.Infastructure - Zawiera następujący interfejs dla usługi aplikacji
public interface ISearchService
{
ObservableCollection<Person> Search(string search);
}
byłby zarejestrowany w UnityContainer tak, że każdy inny moduł może uzyskać konkretną implementację wprowadzoną przez moduł.
Mój problem polega na tym, że Entity (Person
) są zdefiniowane w samym module (w usłudze WCF), więc wprowadzenie usługi i oczekiwanie, że inne moduły będą w stanie z niej skorzystać, oznacza, że muszą odwoływać się do samego modułu nie tylko infrastruktury modułowej, chyba że wyciągnę usługi do innego zespołu.
Czy powinienem ujawniać moje obiekty, które są automatycznie generowane z mojego modelu EF w ten sposób?
Czy ktoś ma lepsze rozwiązanie?
Być może zainteresuje mnie to moje pytanie (http://stackoverflow.com/q/4824058/302677) o tym, czy usługa WCF powinna zwrócić obiekty 'Model' lub obiekt przesyłania danych. Skończyło się na tym, że skorzystałem z DTO i okazało się, że znacznie łatwiej jest mu zwrócić obiekt do przesyłania danych i użyć czegoś takiego jak [AutoMapper] (http://automapper.codeplex.com/) w celu zamapowania "DTO" na "Modele" i vice versa – Rachel
Podoba mi się ten pomysł, czy użycie POCO w Entity Framework byłoby zasadniczo tym samym? –