c# - Web 服务 VS。 Aspx 页面 : Pros and Cons

标签 c# asp.net wcf web-services

我们开发了一个托管在内部网络上的 ASP.Net Web 应用程序。目前,我们有一些 ASPX 页面可以处理来自客户端的 Web 请求并与我们的服务器交互。我们正在开始开发下一个主要应用程序版本,我们正在决定架构。

与使用完整的 Web 服务(很可能是 WCF 服务)相比,使用 ASPX 页面处理 http 请求有什么区别?

在研究这个问题时,我遇到了一些相关的帖子,这些帖子对我有一定帮助,参见 herehere .我对一些关键差异的理解如下:

  1. ASPX 页面在它们可以接收的请求类型方面受到限制。它们是严格的 HTTP,而 WCF 服务可以有多个端点来为各种协议(protocol)(HTTP、TCP 等)提供服务。
  2. 由于 ServiceContracts,WCF 服务的定义更加具体。这意味着,如果一个项目引用了该服务,他们就会确切地知道在方法、用法和文档方面会发生什么。就包含的方法和接受的请求而言,ASPX 页面对所有人来说更像是免费的。

但是,基于这些概念,我的问题如下:

  1. 支持不同协议(protocol)的能力在未来验证和兼容性方面是一项重要功能,但如果我们目前使用它通过 HTTP 进行交互,我们能看到什么真正的好处?
  2. 与我之前的论点一致,如果我们只是通过网络与服务交互,那么这些要点中的任何一点真的有什么不同吗? http 请求不关心任何这些细节或契约(Contract)保证,只要它调用的方法“正常工作”即可。

有什么我想念的吗?使用服务有什么主要好处?我个人是支持Web Service架构的。我喜欢拥有一个可以支持 future 发展的灵活且定义明确的系统的想法。我基本上希望摆脱这种情况的是一种去同事那里说“这应该是出于 x y z 原因的服务,我们可以看到这样做的 b c 改进”。

最佳答案

WCF(以及较早的基于 asmx 的 Web 服务)为您完成大量序列化任务。您可以从方法返回对象,框架会将这些对象序列化为正确格式的 XML 并为客户提供 wsdl,以便他们可以调用您的网络服务方法并了解他们返回的内容。

可以使用网页页面来做到这一点(我敢打赌那里有大量的PHP“网络服务”),但您必须做所有这些给自己安装管道。

请求的类型是 WCF-magic。 WCF 具有“端点”的概念,它允许您将调用服务的方法与服务的作用分开。它只是一个更好的(尽管很多事情非常复杂)架构,可以更好地分离这两个问题。

我怀疑任何 web 服务的性能瓶颈是选择使用 asmx 而不是 WCF。 Web 服务架构中的性能损失几乎总是由于繁琐的界面和/或非常大的对象/对象图。在大多数情况下,您正在远程调用 Web 服务这一事实使得 WCF 与 asmx 的速度差异微不足道。 WCF在设计上更加灵活,这是选择它的一个正当理由。 WCF 确实使用较新的 DataContractSerializer 而不是 axms 中采用的旧方法,并且据说它更快一些。我认为您必须扩展到相当多的用户才能看到有意义的差异 - 您最好先寻找繁琐的界面和性能不佳的数据库查询。

当然,如果有疑问 - 首先进行衡量,然后针对表现不佳的特定领域。

关于c# - Web 服务 VS。 Aspx 页面 : Pros and Cons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693301/

相关文章:

c# - 4.6 Null 框架运算符

c# - Spring MVC 中的 Response.Clear 和 Response.ClearContent

c# - 将 operationtimeout 添加到代码中实现的 channel

WCF、Clientcredentials、多跃点、kerberos 和 Windows 身份验证 - 如何开始工作

c# - 从文本框传递到 VM > 服务

c# - 如何存储和搜索 IP 地址

c# - async 和 await 是否会提高 ASP.Net 应用程序的性能

asp.net - 未在发布时更新 Web API 的 XML 帮助文档

c# - WCF 当前上下文为 Null

c# - 在运行时创建 C# 类