Prima di tutto, inserire la logica dell'API Web ASP.NET in un progetto separato. Ciò ti darà flessibilità sul livello di hosting (poiché l'API Web di ASP.NET è in hosting agnostico) e rende solo l'intero progetto pulito. Diciamo che il nome del tuo progetto è MyProject. È possibile denominare il progetto API come MyProject.API
ed è possibile installare il pacchetto NuGet Microsoft.AspNet.WebApi.Core
in questo progetto.
Suggerisco anche di separare il livello del dominio (entità POCO, repository, parti del livello di servizio, ecc.). Chiamiamo questo MyProject.Domain
. Quindi, si farebbe riferimento a questo progetto MyProject.Domain
dal progetto MyProject.API
.
Non ti consiglio di scaricare tutte le tue entità POCO nella tua API. Quindi, lavorerei sicuramente con Data Transfer Objects (Dto). Puoi utilizzare uno strumento di terze parti come autoMapper per mappare le tue classi di entità sul tuo Dtos. Tuttavia, metti i tuoi Dtos, i comandi di richiesta, i modelli di richiesta in un progetto separato. Si farebbe riferimento al progetto MyProject.API.Model
dal progetto MyProject.API
. Perché creiamo un progetto separato per questo? Perché, in seguito, se decidi di creare un wrapper client .NET per la tua API HTTP, puoi facilmente fare riferimento a questo progetto per utilizzarlo anche con il tuo client .NET. Chiamiamo questo progetto MyProject.API.Model
.
Infine, abbiamo bisogno di un livello di hosting per la nostra API. Supponendo che desideri ospitare questo progetto in ASP.NET, puoi creare un nuovo progetto tramite il modello di applicazione Web vuota e chiamiamo questo progetto MyProject.API.WebHost
. Quindi, è possibile installare il pacchetto Microsoft.AspNet.WebApi
in questo progetto. Da questo progetto, si farebbe riferimento ai progetti MyProject.API
, MyProject.API.Model
e MyProject.Domain
. Questo progetto è quello che dovresti implementare sul tuo server.
Se si desidera creare un wrapper .NET per l'API HTTP, è possibile creare un altro progetto denominato MyProject.API.Client
e installare il pacchetto Microsoft.AspNet.WebApi.Client
in questo. Dovresti anche fare riferimento al progetto MyProject.API.Model
da questo in modo da poter deserializzare e serializzare da oggetti fortemente tipizzati.
Ecco lo screenshot della soluzione explorer per il progetto ho lavorato con:
Spero che questo ti dà un po 'di un'idea.
Benvenuti in StackOverflow! Penso che questa domanda sia un po 'vaga. Potresti spiegare che cosa stai cercando di fare esattamente? Qualcosa come: "Quale dovrebbe essere il design del mio servizio Web? Ecco cosa sto pensando"? Forse ... Questa domanda sembra troppo aperta. – Parris
Grazie per la vostra risposta e il benvenuto. Temo che la vaghezza della mia domanda corrisponda alle mie conoscenze sul prodotto MVC 4. Stavo pensando due opzioni. La prima opzione sarebbe quella di separare la mia logica e l'accesso ai dati in progetti separati di librerie di classi con la possibilità di riutilizzare il codice e una migliore organizzazione. In alternativa, un'altra opzione sarebbe quella di utilizzare semplicemente la shell MVC e utilizzare il modello per la mia logica aziendale e l'accesso ai dati che ritenevo potesse diventare molto affollato rapidamente poiché questo progetto si ingrandiva lungo la strada. – vikingben
API Web ASP.NET! = ASP.NET MVC http://www.tugberkugurlu.com/archive/newsflash-asp-net-web-api-does-not-sit-on-top-of-asp-net- mvc-in-fact-it-does-not-sit-on-top-of-anything Just FYI :) – tugberk