WCF(一)---簡化功能(WCF Simplification Features)

簡化了配置文件

當在Visual Studio 添加服務引用或者用SvcUtil.exe(配置文件客戶端)工具生成的時候,在以前的WCF版本中,這些配置文件包含了所有的綁定屬性即使它是默認值。在WCF的4.5版本以后,這些配置文件只包含設置過的非默認值的屬性。

WCF 3.0 以前配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" 
                    hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" 
                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" 
                        maxArrayLength="16384" maxBytesPerRead="4096"
                        maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:36906/Service1.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1" contract="IService1"
                name="BasicHttpBinding_IService1" />
        </client>
    </system.serviceModel>
</configuration>

WCF 4.5以后配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:36906/Service1.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1" contract="IService1"
                name="BasicHttpBinding_IService1" />
        </client>
    </system.serviceModel>
</configuration>

契約優(yōu)先開發(fā)模式

現(xiàn)在WCF支持契約優(yōu)先開發(fā)模式。svcutl.exe工具包含一個服務契約轉(zhuǎn)換按鈕,允許你來選擇從WSDL生成服務或者數(shù)據(jù)契約。

從一個可移植的子集項目中添加服務引用

可移植的子集項目可以讓開發(fā)者在支持多個平臺(desktop, Silverlight, Windows Phone, and XBOX)的同時維護一個資源樹和生成系統(tǒng)??梢浦驳淖蛹椖績H引用了.NET可移植庫,它是一個可以在任何.NET平臺使用的框架。開發(fā)者可以按照添加WCF客戶端應用程序的方法來添加一個服務引用。更多信息請參考:從一個可移植的子集項目中添加服務引用

ASP.NET兼容模式默認的改變

ASP.NET兼容模式可以讓開發(fā)者獲得管道的全部功能。使用兼容模式時 ,必須在web.config文件中將<serviceHostingEnvironment>節(jié)點下的aspNetCompatibilityEnabled屬性設置為true,另外,在應用程序域中所有的服務必須有RequirementsMode屬性,并且將AspNetCompatiliblityRequirementsAttribute設置為Allowed或者Required,默認AspNetCompatiliblityRequirementsAttribute值為Allowed,并且WCF服務應用模板將aspNetCompatibilityEnabled設置為true.更多信息請參考:WCF中的新功能WCF服務和ASP.NET

流的改進

  • WCF新增加了支持異步流。為了實現(xiàn)異步流,需要在服務宿主中添加終結點DispatcherSynchronizationBehavior,并且將AsynchronousSendEnabled屬性設置為true。當多個客戶端在這個服務讀取流時會有所幫助。這樣WCF不會阻塞一個客戶端線程。
  • 當用IIS托管服務的時候,刪除了緩存消息的限制。在以前的WCF版本中,當IIS服務器接收到消息時(用流消息傳輸),ASP.NET會將整個消息在發(fā)給WCF之前緩存下來,這樣講消耗掉大量內(nèi)存。這個緩存機制在.NET4.5被取消,現(xiàn)在IIS托管的WCF服務可以在信息未完全接受完之前進行處理,從而實現(xiàn)真正的流,這使WCF響應更快,并且提高了性能。另外,不需要設置maxRequestLength,如果設置了,也會被忽略掉。更多有關maxRequestLength的信息請參考:http運行時元素配置(<httpRuntime> configuration element),還需要配置maxAllowedContentLength,更多信息參考:IIS請求限制(IIS Request Limits)
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • Awesome DotNet,這又是一個 Awesome XXX 系列的資源整理,由 quozd 發(fā)起和維護。內(nèi)容...
    小明yz閱讀 4,032評論 0 47
  • 本系列主要翻譯自《ASP.NET MVC Interview Questions and Answers 》- B...
    圣杰閱讀 4,082評論 0 56
  • 翻開《夜的第七章》 記憶里她總是 穿著《黑色毛衣》 《她的睫毛》長長的 她總是《安靜》地 把玩《浪漫手機》 一個《...
    歐嘉言閱讀 3,980評論 12 25
  • 用戶在操作的時候,不可避免地就會觸發(fā)觸摸事件。Android把觸摸過程分成很多個動作(Action),而開發(fā)中最常...
    EmanLu閱讀 1,019評論 1 1

友情鏈接更多精彩內(nèi)容