2009-11-05 18 views
5

Jestem na etapie budowania usługi wcf dla mojej aplikacji, która dostarczy produkty .. Mam, model domeny i warstwę trwałości w aplikacji.Przenoszenie warstwy dostępu do danych do usługi WCF

Do usługi potrzebuję również podobnego modelu domeny i warstwy trwałości. Nie chcę duplikować rzeczy i nie chcę również udostępniać bibliotek i łączyć się z aplikacją i usługami.

To sprawia, że ​​myślę, że powinienem stworzyć osobną usługę (lub wdrożyć w tym nowym, którą tworzę) warstwę dostępu do danych i korzystać z tej usługi również dla dostępu do danych z aplikacji, więc będzie tylko jedna warstwa dostępu do danych, która jest udostępniana zarówno przez aplikację, jak i usługę. Czy jest to dobry wzorzec i czy istnieją poważne problemy, które czekają na mnie w dół, jeśli tak, to jaka byłaby Twoja sugestia? Dzięki!

Odpowiedz

1

Byłem raz w tej samej sytuacji, w której jesteś. na początku podczas rozwoju nie było dostępnych usług wcf dla dostępu do danych, więc użyłem nhibernate dla dostępu do danych. Aby ułatwić przełączanie z bezpośredniego dostępu nhibernate do usług wcf do pobierania danych, miałem coś takiego:

client app -> Repository Interfaces -> Repository Implementations (najpierw ten pobierał dane przez nhibernate, drugie wdrożenie przez wcf).

o interfejsie, który ukrywa szczegóły implementacji kodu aplikacji, może być odpowiednim rozwiązaniem problemu. (btw, kod dostępu do danych nhibernate był głównie ponownie wykorzystywany po stronie serwera, więc nie będziesz musiał wyrzucać rzeczy).

+0

To jest dokładnie moja sytuacja, ponieważ używam nhibernate i mam interfejsy repozytorium, a następnie implementacje repozytorium w oddzielnej bibliotece.Czy są jakieś konkretne przykłady, które robią to dzięki usłudze, na którą mogę patrzeć? – kaivalya

+0

Przykro mi, nie możemy dać ci dostępu do naszej bazy kodów. Jeśli jednak masz dostęp do interfejsu z poziomu aplikacji klienckiej, nie musisz się martwić o rzeczywistą implementację. jeśli chodzi o przekazywanie jednostek nhibernate za pomocą wcf, zadbaj o problemy z serializacją z leniwymi zbiorami. wcf nie lubi proxy nhibernate –

1

Jeśli usługi WCF były warstwą dostępu do zasobów, można po prostu przenieść istniejącą warstwę dostępu do danych z dala od aplikacji klienckiej, ponieważ usługa WWW WCF jest punktem końcowym wymiany danych.

Obecnie

Client App < -> Database Dostęp

To zła praktyka, naraża swoją bazę danych publicznych i port bazy danych mogły być domyślnie blokowane.

z usługi internetowej,

klienta App < -> Web Services (dostęp do bazy danych)

powinny mieć odpowiednie wdrożenie zabezpieczeń i uwierzytelniania (https). Usługa sieciowa jest zwykle hostowana na przyjaznym porcie 80 i nie trzeba w ogóle ujawniać publicznej bazy danych.

+0

To jest bzdura. Nie wiesz o czym mówisz. – DarthVader

-1

Myślę, że w aplikacji powinna znajdować się tylko jedna warstwa dostępu do danych. Tak więc, jeśli stworzysz usługę i pobierzesz z niej dane, usuń wszystkie bezpośrednie połączenia danych z twojego klienta.

Oznacza to również, że nie musisz udostępniać swojej bazy danych jako publicznej, a także prawdopodobieństwo, że ktoś będzie manipulował twoją bazą danych, będzie niska.

Powiązane problemy