Category: wcf

學藝不精,陸續踩了幾次雷,整理DataContract與DataMember對序列化的影響備忘。 WCF預設使用DataContractSerializer執行序列化,而DataContractSerializer可依物件類別標註的[DataContract]及[DataMember]、[Ig...

同事回報一起案例,某WCF服務的[OperationContract]方法宣告為void Blah(ref int i, ref string s),以傳址方式(By Reference)傳遞參數(延伸閱讀:Self Test - Value Type vs Reference Type),程式...

探討WCF雙工服務時發現WsDualHttpBinding不實用(Server會回頭連Client的80 Port)、NetTcpBinding難穿防火牆,二者均難應用於Internet,有實作Polling的Silverlight版Binding又無法用於其他程式,查了資料,才發現.NET 4...

在前篇文章試寫了WCF雙工服務,由於WsHttpBinding不支援雙工,故我們改用WsDaulHttpBinding及NetTcpBinding,分別用HTTP及TCP協定傳送資料。問題來了,大家都知道HTTP是單向的,Client端連上Server,每次送Request收Response後就...

除了從Client呼叫WCF服務取得結果,WCF也支援Server端反過來呼叫寫在Client端的方法(類似事件觸發概念),這種雙工(Duplex)模式算是WCF的一大賣點。Web API要實現類似概念得靠SignalR架構支援,直接內建雙工模式的WCF略勝一籌。 這篇文章,我們就來建立一個簡...

跟ASP.NET WebForm或MVC Controller一樣,WCF在接收Client的呼叫時,Server端必須建立一個Service型別的Instacne(執行個體)執行作業。在WebForm或MVC Controller裡,多採行「為每次Request建立Instance,處理完畢就...

前篇文章介紹完如何用protobuf-net取代WCF原本的XML及NMF序列化,來看看它在資料減量上的表現。 NetTcpBinding 首先登場的是NetTcpBinding改用protobuf-net後的封包分析,黃底部分為WCF Server回傳結果的封包: 資紏統計如下(第二...

Protocol Buffers是Google內部使用的跨語言資料格式標準,在資料體積及序列化/反序列化速度上表現亮眼,相信以下的Benchmark圖表已具備足夠的說服力,說明本文的研究動機:(Protocol Buffers拿下速度及資料量雙料冠軍) 圖表來源:http://theb...

早先我們觀察過WCF HTTP vs TCP的傳輸量差異,該測試呼叫GetData()作業傳入數字接回字串,並不算真的用到WCF的DataContract/DataMember序列化功能,故這次改聚焦在物件資料的序列化上,再做一次比較。 我小幅改寫Visual Studio WCF專案範本的Co...

在範例程式看到OperationContract(IsOneWay=true),不求甚解以為是指單向呼叫(傳回值是void)跟著亂抄亂用(錯誤示範,大家不要學),搞出一些奇怪現象才回頭查,發現觀念錯得離譜。 IsOneWay是用來定義單向合約沒錯,但重點在「呼叫端呼叫WCF作業,但不期待收到任...

前面的文章出現過BasicHttpBinding、NetTcpBinding,又提到「BasicHttpBinding接受匿名存取,NetTcpBinding需要認證」的預設行為,後續還會看到一堆BlahBlahBinding,這裡花點時間做個簡單介紹。 BasicHttpBinding、Ne...

稍早我們見識到net.tcp不容易偵錯的黑暗面,但net.tcp的好處在於通訊協定簡單,較HTTP簡潔輕巧,資料採二進位格式,體積比SOAP XML小。由於資料傳輸較少,預期會有較好的執行效能。但以上所說都是按理推想,我對二者資料傳輸量的真實差異感到好奇,便用Microsoft Network ...

WCF設定的繁瑣難搞向來惡名昭彰,這回重新評估WCF,意外發現浪子回頭的一絲曙光 XD Visual Studio 2012起默默在設定檔的右鍵選單增加了「Edit WCF Configuration」選項: 嘩!有GUI的WCF設定編輯器耶~(正式名稱為Microsoft Servic...

本機測試完畢,準備將WCF部署到VM進行更多觀察,才誇WCF 4設定精簡,馬上踩到小圖釘。 沿續前文範例,將WcfWas部署到一台Windows 2012R2上,比照本機操作安裝「TCP啟用」設定IIS使用「http,net.tcp」協定,執行WCFClient程式,HTTP傳輸OK,執行ne...

前陣子對.NET Remoting、WCF、Web API做了評估,重新肯定WCF在Client/Server皆為.NET情境下的優越性,決定展開一系列對WCF較深入的研究,重新評估這個被我嫌棄多年的技術。 我深信「開發者擁有選擇或棄用某項技術的決定權,但必須基於理性分析評估優劣,而非單憑模糊...