2012-05-18 10 views
5

Przeprowadziłem kilka wyszukiwań, ale nie znalazłem odpowiedzi na ten problem.Jaka jest prawidłowa architektura interfejsu MVC4 WebAPI

Ok, mój MVC 3 architektura jest tak:

- Project.EDM (contains only the entity framework edmx file and its .tt and .cs entity classes) 
- Project.DAL (contains IXxxRepositiory and XxxRepository where CRUD is performed on the entity classes) 
- Project.Web (the MVC3 project. Controllers transfer data from ViewModels into entity models and call the CRUD functions in the DAL repositories.) 

WebApi w MVC4 pojawia się tak atrakcyjny, ponieważ będziemy mogli zadzwonić operacje CRUD z innymi aplikacjami. Wszyscy kochamy ten pomysł.

Ale istniejące przykłady znalazłem mają operacje CRUD wewnątrz projektu MVC4 pod ApiController. Jestem przyzwyczajony do umieszczania tych operacji w osobnym projekcie DAL. Jaki jest zalecany wybór? Czy nadal możemy mieć oddzielną klasę DAL? W jaki sposób eksperci projektują architekturę?

Dziękuję za wszystkie pomocne porady.

+2

To pytanie jest trochę subiektywne. – MilkyWayJoe

+0

Może to być przydatne, jeśli podasz link do przykładu, którego szukasz. – Bull

Odpowiedz

7

Co mogę zrobić, to w ten sposób:

  • Repository do przeszukiwania bazy danych warstwa
    • usługi do sprawdzania poprawności rzeczy i aby uniknąć powielania kodu
      • Web UI
      • Web API

Tak więc zarówno interfejs użytkownika, jak i interfejs API będą miały jedną lub wiele usług, które z kolei mają jeden lub wiele obiektów repozytorium.

Jedynym powodem, dla którego większość przykładów bezpośrednio wysyła zapytanie do bazy danych z ApiController jest prawdopodobnie ze względu na prostotę.

+0

Czy Twój Web API to kolejny projekt MVC4? – Blaise

+2

Tak, zazwyczaj tworzę osobne projekty na wszystko. Więc moje rozwiązanie może wyglądać następująco: - Kontekst (trzyma EDMX) - Repozytoria - Usługi (warstwa usługa) - Podmioty - ViewModels - WebUI - WebAPI - wstrzykiwanie zależności (bo jądro DI musi być wywołanym zarówno z projektów API, jak i interfejsu użytkownika) –

+0

Wow! Naprawdę wszystko rozdzieliłeś! Gdzie idą operacje CRUD? Czy nadal są w repozytoriach? – Blaise

Powiązane problemy