使用ASP.NET MVC作为Web服务

Hen*_*ung 15 c# rest asp.net-mvc web-services

有没有人有使用ASP.NET MVC项目作为Web服务的经验?

即使用没有视图的ASP.NET MVC,因此其他应用程序可以使用URL来GET或POST到Controller中的操作.

有人用过吗?如果是这样,不使用Web服务项目有任何缺点吗?

谢谢大家!

Luk*_*Led 8

如果你想使用简单的GET和POST调用,MVC将是不错的选择.ASP.NET MVC 4将支持创建基于HTTP的API.你可以在这里阅读:http://www.asp.net/web-api

在Web Service项目中创建的Web Service可以更容易使用,因为它可以生成WSDL文件,可以在许多不同的语言中轻松读取和使用(通过使用SOAP协议).另一方面,如果您使用自己的格式,WS可以创建巨大的XML响应,可能会小很多倍.

如果您想在全世界范围内传播您的Web服务,那么允许SOAP将使许多开发人员的工作变得更轻松.人们可以使用SOAP,他们几乎不了解编程.如果你在内部使用它,更喜欢速度和简单的请求和响应,你可以使用MVC.


Bra*_*ton 8

这实际上取决于你正在编写的应用程序的类型.我实际上会反驳LukLed的立场 - 当你想要支持Windows身份验证或TCP或MSMQ等不同协议之类的东西时,基于SOAP的服务更适合内部客户端.

在特定的"资源"周围使用更多Web风格的GET和POST,开始让您进入REST架构风格.这项技术对我来说有一些明显的优势:

  • 响应通常较小,尤其是在使用JSON等轻量级格式时
  • 由于请求和响应的简单性,这使得在移动/本机应用程序中使用变得更加容易(例如,参见Twitter的API)
  • 您创建的服务可以是自我描述和可发现的,因为您可以像普通网页一样链接到API的其他部分.

一篇特别帮助我理解这里权衡的文章是Martin Fowler的"迈向REST荣耀的步骤". 话虽如此,它可能适合您的应用,也可能不适合您的应用.

如果您确实选择构建更多基于REST的服务,请务必考虑使用其他人提到的MVC4内置的ASP.NET Web API.它目前处于测试阶段,但微软觉得它足以让它获得上线许可.

更新:

自ASP.NET核心以来,ASP.NET Web API已经集成到MVC 6项目中. https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6