Separate projects for the web api and web interface will help separate things, but this causes duplication. We went so recently and it works well, but it caused a few problems.
Arguments for having one project:
Since we don’t have a domain name yet, we have our API on port 8080. We could use directory binding to make the API accessible from a subdirectory of the web interface, but we were only concerned about producing absolute path resolution errors.
Many settings are shared between two projects, so we must copy them in both web.config files.
Arguments for several projects:
They are easier to update, as they can have different dependencies, and they can be created completely independently. For example, in our API project, several later versions of some dependencies are used.
This forces you to extract all your business logic into a separate library and simplify the idea of all projects as separate subsystems.
It’s easier to configure the web interface on a separate computer if the load is too heavy. This bothers us, but it may not be your business.
If I had to make this decision again, I probably would not have to deal with individual projects if the system were not extremely complex and I need an additional structure. An argument can be made for both options, but I think the deployment headache that it brings is not worth it.
source share