Mam aplikację podzieloną na kilka projektów. W projekcie Contracts znajdują się interfejsy typu IXXXViewModelProvider, IXXXStore, IXXXService, których implementacje są w w projekcie Application. Teoretycznie Web powinien mieć referencję tylko do Contracts. Ale w praktyce oddzielenie tego projektu od pozostałych części aplikacji za pomocą warstwy abstrakcji się nie udało, bo po wszystkich projektach są porozrzucane referencje do Microsoft.AspNet.Identity (w Web, bo AccountController, w Model, bo encja ApplicationUser, w Application, bo serwisy przyjmują za parametr obiekt IPrincipal, na którym często trzeba wykonać GetUserId()).
Pytania:
- Czy istnienie tych interfejsów ma sens? Nie spodziewam się, aby którykolwiek z tych interfejsów miał więcej niż jedną implementację.
- Jeśli w ogóle oddzielać Web od reszty warstwą abstrakcji, to co zrobić z systemem autentykacji? Zostawić jak jest, czy przepisać? Jeśli tak, to w jaki sposób?