2008-08-30 11 views
6

Szukam popychania mojego modelu domeny do interfejsu API usługi WCF i chciałem uzyskać pewne przemyślenia na temat leniwych technik ładowania z tego typu instalacją.Leniwe ładowanie z modelem domeny usługi WCF?

Jakieś sugestie dotyczące tego podejścia?


kiedy realizowane tę technikę i krok w mojej aplikacji, tuż przed serwer zwraca moją listę natrafi wysiąść każdej nieruchomości, która ma być leniwy załadowany ... Dlatego chętnie ładowania. Czy możesz wyjaśnić ten problem lub zaproponować rozwiązanie?

Edit: To appears można użyć atrybutu XmlIgnore więc nie dostać spojrzał podczas serializacji .. nadal czytania na ten choć

Odpowiedz

3

chodzi o dowolnej architekturze usług zdalnych, będziemy chcieli, aby uniknąć ładowanie pełny wykres obiektu "w dół drutu" w niekontrolowany sposób (chyba że masz trywialnie małą liczbę obiektów).

Standardowe techniki są w dużym stopniu podsumowane (a także w języku C#.). Używałem zarówno duchów, jak i posiadaczy wartości i pracują całkiem nieźle.

Aby zastosować tę technikę, upewnij się, że ściśle dzielisz uwagi. Na serwerze klasy implementacji kontraktu serwisowego powinny być jedynymi bitami kodu, które działają z umowami danych. Na kliencie warstwa dostępu do usługi powinna być jedynym kodem, który działa z serwerami proxy.

Takie nakładanie umożliwia dostosowanie sposobu wdrażania usługi w sposób względny niezależnie od warstw interfejsu użytkownika wywołujących usługę i warstwę biznesową, która jest wywoływana. Daje również połowę szansy na testowanie jednostkowe!

4

Nie rób leniwego ładowania przez interfejs usługi. Zdefiniuj wyraźne DTO i wykorzystaj je jako swoje umowy danych w WCF.

Możesz użyć NHibernate (lub innych ORM), aby poprawnie pobrać obiekty potrzebne do budowy DTO.

+0

Utknąłem w świecie ado.net ... Czy jest jakaś szansa, aby podać próbkę tego podejścia, o którym wspomniałeś? –

+1

Zasadniczo musisz utworzyć ProxyCollection, która dziedziczy z IList lub ICollection, i to musi być w stanie śledzić komendę ładowania elementów. po uzyskaniu dostępu do dowolnego elementu, najpierw wykonaj polecenie, aby wypełnić listę. –

Powiązane problemy