Usually when i layout an n-tier architecture for a project I have the following layers:
There could be 2 approaches:
You decide to consume your Web API from the MVC application through HTTP calls. In this case the calling code (HttpClient
) sits in your Data layer. Whether you are fetching your data from a database or a remote web service call it shouldn't really matter. In this case since the Web API probably already encapsulate much of the business logic your service layer will be very thin, just a wrapper around the data access layer, or even non-existent if it doesn't bring any additional value.
Since the Web API is written in .NET you could decide to directly reference the assembly containing the service layer of this API in your MVC application. In this case the service layer of your Web API application becomes the service layer of your MVC application.
There are two possibilities