簡體   English   中英

WCF與Web服務與套接字:選擇哪個?

[英]WCF vs. Web service vs. Sockets: which to choose?

關於Web服務,我有兩個相關的問題:

(1)我目前正在編寫一組應用程序,但是我發現也許我沒有使用正確的工具來完成這項工作。 規格如下:

  • 在不同的VPN和防火牆后面有許多Windows服務器。
  • 每個服務器都有一個運行的Windows服務,該服務通過Web服務將其有關的各種信息通過Web服務報告給集中式服務器,我已編寫並可以訪問這兩個信息。

因此,我既是生產者又是消費者,並且我停留在同一平台(.NET)上。 也許Web服務不是要走的路? 我之所以純粹使用它,是因為它易於編寫和部署,並且我對它們最滿意。 我真的應該為此使用WCF嗎?

(2)在Web服務中,我正在創建一個State對象來表示服務器的狀態,並將其作為參數發送。 但是,添加服務引用會創建State類的代理。 將State對象的屬性復制到代理,然后發送代理似乎很費勁。 我是否應該在自動生成的代碼中將代理類替換為真實類(即,包括對State類的引用)?

通過“ Web服務”,我假設您是指ASMX? 我認為WCF是可行的,僅僅是因為您沒有損失,卻獲得了很大的靈活性。 例如,您可以通過簡單的配置更改從XML-over-HTTP切換為Binary-over-TCP。

我建議使用WCF並使用Net.Tcp綁定。 對於300個客戶來說,它應該足夠有效。 對於代理類問題,在生成代理時,請對svcutil工具使用/ reference選項。 這將允許您在服務器和客戶端之間共享類。 如果您擔心互操作性,我將不使用此選項,但是由於您聲明同時開發了clietn和服務,因此在.Net中這都是一種有效的用法。

您對“ Web服務”和WCF的區分是錯誤的。

ASMX Web服務是.NET 1.0中引入的原始.NET SOAP Web服務技術。 它已被WCF取代,WCF可以完成ASMX的所有工作,以及更多功能(包括對WS- *標准的支持)。

微軟現在認為ASMX Web服務以及它們所基於的XML序列化器是“傳統技術”。 請參閱“ Microsoft說:ASMX Web服務是“傳統技術” ”。

使用WCF,由於您可以控制操作的兩面,並且可以共享在其中定義服務協定的.dll,因此您可以並且應該使用ChannelFactory<IYourServiceContractHere>而不是通過服務自動生成那些丑陋的代理類。引用。

這是我在此主題上發現的第一篇文章: http : //blogs.msdn.com/juveriak/archive/2008/02/03/using-channels-vs-proxies-in-wcf.aspx

如果它是平台無關的,我當然會推薦WCF。

我已經完全按照您的描述做了,對300多個地點產生了巨大影響。 我認為您打錯了電話。

您可能會考慮的另一件事是使用MSMQ。 但是,在這種情況下,您將需要編寫事件觸發器(COM)或事件隊列處理服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM