zapobiec przemieszaniu MVC i Web API w tym samym projekcie. Microsoft wydaje się to sugerować, ponieważ szablon Visual Studio dla Web API automatycznie miesza projekt z MVC, ale jest to zły pomysł.
Z architektonicznego punktu widzenia MVC i Web API są zupełnie inne. MVC to technologia interfejsu użytkownika mająca na celu optymalizację komfortu użytkownika końcowego. Web API to technologia serwisów internetowych, która ma na celu optymalizację działania dewelopera (klienta).
MVC i Web API nie udostępniają żadnego konkretnego kodu prezentacji. Połączenie ich w tym samym projekcie powoduje, że projekt jest większy i bardziej skomplikowany.
Ale może nawet ważniejsze, oba typy aplikacji mają własne potrzeby konfiguracji DI. Mają własne Composition Root i mieszanie go w jedną konfigurację DI (pojedynczy pojemnik DI) może sprawić, że twoja konfiguracja będzie wyjątkowo trudna.
Wreszcie, połączenie Web API z MVC w tym samym projekcie prowadzi do bolesnych niejednoznacznych konfliktów nazw, ponieważ zespoły Web API zawierają wiele klas o tej samej nazwie co odpowiedniki MVC (ale z nieco innymi implementacjami).
OK, ale załóżmy, że muszę zapisać kilka dodatkowych danych przed uruchomieniem WebApi, w tym przypadku chcę użyć mojej warstwy DAL z pliku global.asax i chcę, aby została ona wstrzyknięta. Naprawdę nie widzę problemów z miksowaniem/ponownym użyciem tej samej konfiguracji DI w tym przypadku? Projekt Web API jest całkowicie oddzielony. –
Jest bardzo często dla wielu aplikacji końcowych ponowne użycie tej samej warstwy biznesowej lub innych udostępnionych złożeń. Jeśli znajdziesz duplikat kodu zarówno w projekcie MVC, jak i Web API, brakuje zestawu współdzielonego. W przypadku niektórych części konfiguracje DI wyglądają podobnie i zasada DRY nadal obowiązuje: zapobiegaj duplikacji poprzez wyodrębnienie tej części do wspólnego zestawu i pozwól każdej aplikacji końcowej zakończyć konfigurację w sposób odpowiadający jej potrzebom. – Steven
@Steven - odpowiedzi takie nie są w ogóle pomocne i dlatego głosowałem na to z tego powodu. Wyjaśnienie Marka było wszystkim, co było naprawdę wymagane (wyjaśnienie różnicy między tymi dwoma rewolwetami), i ja też głosowałem na to z tego powodu. O ile nie zostało to wydane przez Jevgenija, MVC w ogóle o nim nie wspomniano, AutoFac był. –