【发布时间】:2011-04-11 18:25:15
【问题描述】:
我对 Web Service 世界中的一些事情感到非常困惑,我希望有人能向我解释一下。
这就是我想要的:我想将一个 XML 文档 HTTPPost 到 https://www.whatever.com/myservice(.???)。在那个服务中,我想获取那个 XML 文档,做一些事情,然后用一个非常简单的 XML 文档做出响应——比如“<xml....><success>TRUE</success>”
我不能做 SOAP 或 JSON 或其他任何事情。我必须符合已经存在的东西。有数百家不同的公司以我所描述的格式向我们发送数据,并且根本不可能添加将其全部包含在 SOAP 中的要求。
使用 WCF Web 服务时,似乎必须像这样发送给我的请求:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetData xmlns="http://tempuri.org/"><value>3</value></GetData></s:Body></s:Envelope>
当使用 .asmx 页面时,响应总是作为带有命名空间的 XML 文档发送(http://tempuri,或者如果我更改了它,那么我将其更改为任何内容)。这是不必要的,并且可能会破坏所有现有代码。
使用通用处理程序 (.ashx) 时,我绝对可以准确控制返回的内容,但有人告诉我要远离 .ashx 页面,因为它们带有完整的 ASP.Net 会话类型代码,而且它是慢得多。
我会用什么来解决这个问题并让我的代码尽可能快?
编辑:以防万一,每小时 10,000 个请求的问题是我们一年中的高峰流量。我们平均每天处理 50-60,000 个传入请求,但在 12 月,它可以达到每小时 10,000 个请求。我们希望增长,但要做到这一点,我会在 Rackspace 中添加一个负载均衡器和更多机器。
我们目前的这项服务提供商在这些时候不堪重负,因此我们错过了很多钱。因此,我的代理将在前端进行我们最基本的检查之一(对每小时更新的数据库进行重复检查),这将清除我们必须发送给当前提供商的 75% 的流量。当前的供应商为我们承保这些潜在客户,我不会替换它,只是添加一个看门人以减轻他们服务器的压力。
感谢大家的帮助。我最近在 StackOverflow 上提出了一系列 Web 服务问题,试图弄清楚我将面临的许多问题。
【问题讨论】:
-
我相信处理程序 (.ashx) 只有在实现
IRequiresSessionState时才使用会话状态。 -
它是.ashx。也许我误解了我被告知的内容,但我不这么认为。感谢您的评论。
标签: asp.net xml wcf web-services