如何在 Visual Studio 中实现 vNext Web API 2 层架构

How to implement vNext Web API 2 layer architecture in Visual Studio

我正在尝试使用 Microsoft vNext 技术(Web API 2)设计一个好的 Web api 架构。

我使用的项目结构类似于:

Solution                                  
+                                         
+-+Web_API_Users (ASP.NET web api project)
|                                         
+-+BusinessContext1 (library project)     
| |                                       
| +--+BusinessService1 (public class)     
| |                                       
| +--+BusinessObject1 (inner class)       
| |                                       
| +--+BusinessObject2 (inner class)       
|                                         
+-+DataContext (library project)          
  |                                       
  +--+DataAccess1 (public class)          

我正在考虑通过创建不同的项目在 Web api 层分离关注点(主要是分配不同的团队并考虑简化代码长度和可读性),如下所示:

Solution                                     
+                                            
+-+Web_API_Users (ASP.NET web api project)   
|                                            
+-+Web_API_Accounts (ASP.NET web api project)
|                                            
+-+Web_API_Clients (ASP.NET web api project) 
|                                            
+-+BusinessContext1 (library project)        
| |                                          
| +--+BusinessService1 (public class)        
| |                                          
| +--+BusinessObject1 (inner class)          
| |                                          
| +--+BusinessObject2 (inner class)          
|                                            
+-+DataContext (library project)             
  |                                          
  +--+DataAccess1 (public class)             

但现在我又想这可能不是个好主意。主要是因为我认为有几个带有 web api 引用的项目可能会在路由中发生冲突,但我不清楚这是不是真的。

所有示例和文档均来自简单的视图,包含一些路由和简单的 POCO 交互。

我正在寻求有关就此做出良好架构决策的建议。你可以想象我正计划发展到这么大,所以我想从一开始就做出最好的决定。谢谢!

您当然可以将 Web API 控制器放在单独的子组件中,然后通过实现 IAssembliesResolver 来注册这些组件。另见 http://www.strathweb.com/2013/08/customizing-controller-discovery-in-asp-net-web-api/ http://www.strathweb.com/2012/06/using-controllers-from-an-external-assembly-in-asp-net-web-api/