Web Api - 架构设计

3
在过去的几年中,我看到许多Web API应运而生 - 这些服务是通过普通HTTP公开的,而不是通过更正式的服务合同(如SOAP或WS *)进行公开。 Microsoft刚刚推出了一个名为“ASP.NET Web API”的新框架,它可以轻松构建可达到广泛客户端的HTTP服务。即使我是.NET迷,这也是另一个通信框架(在asmx、wcf、ria之后)。现在,作为一名快乐的架构师,我必须对技术做出决策。
ASP.NET Web API对于新的架构来说真的是一个好选择吗?记得Linq2Sql,我不想投资于“一次性”API。
WCF中还有WebBindings的用途吗?
2个回答

5
这个问题在堆栈溢出问题方面的问题在于它基本上是主观的。因此,我非常确定它会被关闭——但我仍然会发表我的意见(实际上更接近2英镑),如果它被关闭那也没关系。
首先,Linq2Sql并不是“一次性使用”的-它仍然存在,并且不会消失。它没有被开发——这完全是另一回事。
无论如何,Asp.Net Web API是许多来自与Asp.Net MVC共同工作的人规范化REST Web服务支持,并使用非常类似的方法来扩展性、管道化、横切关注点(例如验证、日志记录、验证)等方面。你是否使用它完全取决于你是否打算开发RESTful Web服务。如果您打算这样做,并且您使用的是.NET 4+,那么在我看来,你不用它就有点疯了。
Web API的总体架构非常好,您可以在不费吹灰之力的情况下扩展大部分内容。特别是,他们处理内容协商的方式非常棒,使得您可以轻松支持JSON请求,但只返回XML响应,因为客户端发送Content-Type:application/json和Accepts :application/xml。
作为一种服务器技术,它也非常快;部分原因是它完全是异步的(增加可扩展性),但也因为请求进来到您的代码被调用之间的堆栈非常浅。
不仅如此,您还可以在IIS和任何.Net应用程序中托管它,这增加了您的托管选项,但也使其成为常规网络(即非互联网)环境中的内部网络通信候选人。
如果您想编写SOAP或WS-HTTP服务,则Web API不适合您-您需要坚持使用WCF。
简而言之,您需要将Asp.Net Web API纯粹视为在.Net上运行的服务器和客户端技术,而不是协议或Web架构。它使您能够构建RESTful Web服务——您也可以在MVC、WebForms(如果您真的想这样做)、.ashx处理程序或编写自己的HttpListener中执行此操作。
其中选择完全取决于您决定。

Linq2Sql:这只是微软如何投入大量资源于一项技术,然后专注于其他事情的一个例子。你说得对,那是另外一回事。 - Cybermaxs
Web API 是一个 HTTP 栈。它为某人构建 REST 框架提供了基础,但它对于架构风格没有任何偏好。从技术上讲,客户端栈不是 Web API 的一部分,它是 .net 框架的一部分,由不同的团队构建。 - Darrel Miller
关于客户端内容不是堆栈的一部分,而实际上在其下方更深处的观点很好 - 已删除(在使用Web API之前,我从未使用过这些共享类型)。 - Andras Zoltan
@所有人:我已经阅读了教程和大部分文档。我理解它的工作原理,并且已经有了Rest Approach的经验。我认为这很容易,也是一个很棒的API。我的问题更多的是“你们感觉一样吗?” @Andras Zoltan:显然这是主观的。正如我所说,我想要一些反馈和其他人的观点,因为选择这个框架将会影响我的开发团队未来2到3年的时间。 - Cybermaxs
1
@Cybermaxs 我已经深入研究了新的REST层,使用Web API,它非常出色。由于它与MVC的相似性,我能够将两个环境(我们自己的自定义DI容器、配置等)无缝地合并在一起;而使用WCF则远没有这么容易。Web API也是开源的,因此在需要时更容易找到那些必要的可扩展性点。 - Andras Zoltan

-1
我们可以称ASP.NET Web API为WCF Web API的替代者。它将支持更多面向平台的服务。

1
它实际上是从WCF Web Api演变而来,并在大多数(可能全部)负责WCF Web Api的团队合并/转移到ASP.NET团队时移入了ASP.NET。 - Antony Scott
我不相信它的目的是作为替代品。 - N-ate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接