2009-08-24 11 views
5

Czy powinienem uzyskać dostęp do klasy członkostwa asp.net z kontrolera i przekazać wyniki do warstwy usługi, lub uzyskać dostęp bezpośrednio z warstwy usługi?Zadzwoń do asp.net klasy członkowskiej z kontrolera lub warstwy usługi?

Jestem rozdarty, ponieważ z jednej strony wydaje się to logiką biznesową, którą należy obsłużyć w warstwie usługi, ale nie chcę powiązać warstwy usługi z przestrzenią nazw sieci, ponieważ może to stać się aplikacją Windows w dół Droga.

Odpowiedz

6

odpowiedź, użyj IoC, aby utworzyć interfejs członkostwa, którego używa warstwa usługi. implementacja witryny może korzystać z przestrzeni nazw WWW. A aplikacja Windows może mieć inną implementację. a ponieważ możesz wstrzyknąć tę zależność, twoja warstwa usługowa nie musi się zmieniać :-)

+0

To był mój następny plan ataku, dziękuję za walidację. –

0

Czy korzystanie z System.Web jest naprawdę problemem? Nie różni się to od wiązania z System.Configuration lub System.IO. Każda aplikacja może z niego korzystać, niezależnie od tego, czy jest "offline", czy nie.

Rutynowo wiążę moje aplikacje internetowe z zespołami, które są bardziej klasyczne niż z zespołami "wygrywającymi", aby uzyskać dostęp do przydatnych obiektów kolekcji i tym podobnych.

+0

Myślałem, że jeśli zmienię się na winForm, byłoby po prostu prawdą, że nie zależy to od niepowiązanych ze sobą zespołów. To prawda, że ​​to trochę trywialne. –

3

Członkostwo w ASP.NET jest specyficzne dla sieci, więc powinno być dostępne w kontrolerze. MHO jest to, że warstwa usługi nie powinna być podłączona do internetu. Aby dodać/usunąć użytkowników, należy to zrobić za pomocą kontrolera.

OTOH, w warstwie usługi można przeczytać Thread.CurrentPrincipal.Identity, która nie jest specyficzna dla sieci WWW, ale jest całkowicie zgodna z członkostwem ASP.NET. Więc jeśli potrzebujesz tylko bieżącego użytkownika, możesz to zrobić bez wyrażania wątpliwości.

Powiązane problemy