我對Web服務世界中的一些東西非常困惑,我希望有人能向我解釋它。WCF,SOAP,Plain Old XML
這是我想要的:我想HTTPPost一個XML文檔到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個傳入請求,但在12月期間,它每小時可以處理10,000個請求。我們希望增長,但要做到這一點,我會在Rackspace中添加一個負載均衡器和一些更多的機器。
我們目前的服務提供商在這段時間內不堪重負,因此我們錯過了很多錢。因此,我的代理將在前端執行我們最基本的檢查之一(每小時更新一次數據庫的重複檢查),並將清除我們必須發送給我們當前提供商的75%的流量。目前的供應商爲我們提供這些線索的承保,我不會取而代之,只是增加一個看門人來減輕他們服務器上的壓力。
感謝您的幫助。我最近在StackOverflow上詢問了一系列Web服務問題,試圖解決我將面臨的許多問題。
我相信處理程序(.ashx)只使用會話狀態,如果他們實現'IRequiresSessionState'。 – 2011-04-11 19:00:45
它是.ashx。也許我誤解了我被告知的事情,但我不這麼認爲。感謝您的評論。 – 2011-04-11 19:35:21