什么';使用MVC在ASP.NET中实现API的最佳方法是什么?

什么';使用MVC在ASP.NET中实现API的最佳方法是什么?,asp.net,asp.net-mvc,web-services,Asp.net,Asp.net Mvc,Web Services,我一直是web窗体模型的ASP.NET长期开发人员,我正在使用一个新项目作为一个机会,让我了解ASP.NET MVC 该应用程序将需要一个API,以便一组其他应用程序可以与其通信。在此之前,我一直使用标准web服务构建API 顺便说一句,我有点犹豫是否要将headfirst投入到创建API的REST风格中,至少在这个特定的实例中是这样。这个应用程序可能需要API版本控制的概念,我认为REST方法(API基本上分散在站点的所有控制器上)在这方面有点麻烦。(但如果对潜在的版本控制需求有一个很好的答案

我一直是web窗体模型的ASP.NET长期开发人员,我正在使用一个新项目作为一个机会,让我了解ASP.NET MVC

该应用程序将需要一个API,以便一组其他应用程序可以与其通信。在此之前,我一直使用标准web服务构建API

顺便说一句,我有点犹豫是否要将headfirst投入到创建API的REST风格中,至少在这个特定的实例中是这样。这个应用程序可能需要API版本控制的概念,我认为REST方法(API基本上分散在站点的所有控制器上)在这方面有点麻烦。(但如果对潜在的版本控制需求有一个很好的答案,我并不完全反对。)


那么,ye,Stack Overflow denizens呢?

我仍然推荐一个服务层,它可以服务于客户端消费者或服务器端消费者。甚至可能会返回各种格式的数据,具体取决于使用的调用者。

我同意基尔霍夫的观点。尝试使用从“IFacade”继承的“Facade”包装类。在Facade类中放置代码以使用web服务。通过这种方式,您的控制器只需调用Facade即可。这样做的好处是,您可以交换一个“DummyFacade”,它在中实现了相同的IFacade接口,而该接口实际上不与web服务通信,只返回静态内容。允许您在不影响服务的情况下实际执行一些单元测试。与存储库模式基本相同。

我同意。我建议您在所有使用服务的应用程序中使用此选项。