Visual Studio项目REST api

问题描述 投票:2回答:4

使用微软的asp.net web api的东西。

构建用于REST API的Visual Studio项目的最佳方法是什么?

我应该为每种类型的对象创建一个新项目并将它们放在一个解决方案中吗? 顾客 地址 银行

或者将它们全部放在同一个项目中,只有不同的类?

这两种方法都有什么好处吗?

这个API在某种程度上包含了我拥有的每个数据源。

visual-studio rest asp.net-web-api projects-and-solutions
4个回答
2
投票

我认为您应该有一个Web项目,否则您将拥有多个HTTP端点。所以我假设您的问题是放置所有Web API控制器(从ApiController派生的类,请参阅MSDN)。

通常,我们在Web项目中拥有所有Web API控制器,以便它们与其他应用程序层分离。控制器非常简单,只需将调用转发到存储库或其他服务即可。

在一个项目中,我们还将控制器主要分开,因为它们可以插入而无需重新编译项目(类似于插件)。

如果您使用某种IoC +依赖注入库(我强烈建议),那么控制器由容器创建,因此它们可以位于任何引用的程序集中,您应该只注册容器内的所有控制器。

这里有一个关于如何将Castle Windsor与ASP.NET API一起使用的教程:Dependency Injection in ASP.NET Web API with Castle Windsor by Mark Seemann

这是Ninject的另一个教程:Adding Ninject to Web API

另一个建议是使用属性路由,因为我认为它更强大,更易于使用。有关更多信息,请参阅this article。基本上每个控制器/动作都定义自己的路径,例如:

public class OrdersController : ApiController
{
    [Route("customers/{customerId}/orders")]
    [HttpGet]
    public IEnumerable<Order> FindOrdersByCustomer(int customerId) { ... }
}

最后请注意,因为控制器名称(类名称)在所有解决方案中应该是唯一的。


2
投票

我会将所有这些都保留在一个项目中。

默认情况下,控制器是用于分隔资源的控制器。

如果您的应用程序增长并且您想要分离关注点,您可以使用不同的程序集,但老实说,您必须增长得非常大,此时您通常已经拥有单独的服务。

简而言之,构建应用程序使用控制器和文件夹来分离关注点。


1
投票

我建议您使用以下技术来使用MVC / MVVM架构

    AngularJS/KnocoutJS
    ASP.Net MVC 4
    WebAPI-2
    Entity Framework 6 

Click here for sample project architechture实际上现在天单页应用程序是更新兴​​的事情。


1
投票

保持webapi模块(dll)尽可能薄(只是路由和格式化结果),这样单元测试就可以达到80%。

接下来,根据您的业务用例,在需要时将其他依赖项保留为单独的模块(dll)。

如果你把所有东西都塞进你的网络API中,那么可重复使用将会很麻烦。 webapi应该做它应该做的事情(外观界面)。

© www.soinside.com 2019 - 2024. All rights reserved.