2012-05-18 9 views
5

Ich habe einige Suchen durchgeführt, aber keine Antwort auf dieses Problem gefunden.Was ist die richtige Architektur für MVC4 WebAPI

Okay, meine MVC-3-Architektur ist wie folgt:

- 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.) 

Die WebApi in MVC4 scheint so attraktiv, da wir die CRUD-Operationen aus anderen Anwendungen nennen können. Wir alle lieben diese Idee.

Die vorhandenen Beispiele, die ich gefunden habe, haben die CRUD-Operationen innerhalb des MVC4-Projekts unter ApiController. Ich bin es gewohnt, diese Operationen in ein separates DAL-Projekt zu integrieren. Was ist die empfohlene Wahl? Können wir noch eine separate DAL-Klasse haben? Wie gestalten Experten die Architektur?

Vielen Dank für alle hilfreichen Ratschläge.

+2

Diese Frage ist ein wenig subjektiv – MilkyWayJoe

+0

Es kann nützlich sein, wenn Sie einen Link zu dem zu betrachtenden Beispiel bereitstellen. – Bull

Antwort

7

Was ich tue, ist dies:

  • Repository die Datenbank
    • Dienstschicht zur Abfrage Sachen zu validieren und Code-Duplizierung
      • Web UI
      • Web API
    • zu vermeiden

So haben sowohl die Benutzeroberfläche als auch die API einen oder mehrere Dienste, die wiederum ein oder mehrere Repository-Objekte haben.

Der einzige Grund, warum die meisten Beispiele die Datenbank direkt vom ApiController abfragen, liegt wahrscheinlich an der Einfachheit.

+0

Ist Ihre Web-API ein anderes MVC4-Projekt? – Blaise

+2

Ja, normalerweise erstelle ich separate Projekte für alles. So könnte meine Lösung so aussehen: - Context (hält die EDMX) - Repositorys - Service (Service-Layer) - Entities - Viewmodel - WebUI - WebAPI - Dependency Injection (weil der DI-Kernel muss von den API- und UI-Projekten aufgerufen werden) –

+0

Wow! Du hast wirklich alles getrennt! Wohin gehen die CRUD-Operationen? Sind sie noch in Repositories? – Blaise

Verwandte Themen