日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
.NET4.0中WCF服務(wù)配置的簡化與改進(jìn)

【精選譯文】目前WCF用戶最頭痛的一件事就是需要為WCF服務(wù)處理眾多的配置文件,WCF配置模式本身非常復(fù)雜,為用戶操作增加了不少難度。在.Net 4中我們將為WCF用戶干一件實事,簡化WCF服務(wù)配置,為此我們將會在.Net 4中發(fā)布一系列新的WCF特性。

***個特性是不再需要為每個服務(wù)進(jìn)行單獨的配置,如果你沒有為你的服務(wù)定義過任何< service>服務(wù)元素,你的服務(wù)也沒有通過編程定義任何端點,那么將會自動向你的服務(wù)中添加一套端點,每個服務(wù)一個,每個服務(wù)執(zhí)行的契約一個,這些端點的地址與基地址對應(yīng),綁定將由基地址模式和服務(wù)執(zhí)行的契約決定。

下面的配置就是傳統(tǒng)的WCF開發(fā)人員要編輯的WCF服務(wù)配置文件片段,在這個例子中,我們看到有一個基地址,執(zhí)行了一個契約:

 
 
 
 
  1. < ?xml version="1.0" encoding="utf-8" ?>
  2. < configuration>
  3.   < system.serviceModel>
  4.     < services>
  5.       < service name="Service1">
  6.         < host>
  7.           < baseAddresses>
  8.             < add baseAddress="http://localhost:8731/Service1/" />
  9.           < /baseAddresses>
  10.         < /host>
  11.         < endpoint address=""
  12.                   binding="basicHttpBinding"
  13.                   contract="Library1.IService1" />
  14.       < /service>
  15.     < /services>
  16.   < /system.serviceModel>
  17. < /configuration>

但在.Net 4中,這個配置就被簡化成:

 
 
 
 
  1. < ?xml version="1.0" encoding="utf-8" ?>
  2. < configuration>
  3. < /configuration>

在這種情況下,即使沒有配置文件,你也可以部署你的服務(wù)。在基地址模式和綁定類型之間也可以自定義映射,如果你想增強服務(wù)的安全性,可以為HTTP地址使用wsHttpBinding作為默認(rèn)綁定類型,如:

 
 
 
 
  1. < protocolMapping>
  2.   < add scheme="http" binding="wsHttpBinding" />
  3. < /protocolMapping>

第二個特性是允許用戶為WCF綁定和行為定義默認(rèn)值,那些沒有名字的綁定、服務(wù)行為和端點行為可以應(yīng)用到你沒有進(jìn)行明確配置的服務(wù)中,如果在VS2008/.NET 3.5中查看某個WCF服務(wù)庫項目的配置,我們會看到:

 
 
 
 
  1. < ?xml version="1.0" encoding="utf-8" ?>
  2. < configuration>
  3.   < system.serviceModel>
  4.     < services>
  5.       < service name="Service1"
  6.                behaviorConfiguration="Service1Behavior">
  7.         < host>
  8.           < baseAddresses>
  9.             < add baseAddress="http://localhost:8731/Service1/" />
  10.           < /baseAddresses>
  11.         < /host>
  12.         < endpoint address=""
  13.                   binding="wsHttpBinding"
  14.                   contract="Library1.IService1" />
  15.       < /service>
  16.     < /services>
  17.     < behaviors>
  18.       < serviceBehaviors>
  19.         < behavior name="Service1Behavior">
  20.           < serviceMetadata httpGetEnabled="True" />
  21.           < serviceDebug includeExceptionDetailInFaults="False" />
  22.         < /behavior>
  23.       < /serviceBehaviors>
  24.     < /behaviors>
  25.   < /system.serviceModel>
  26. < /configuration>

在.Net 4中新的WCF服務(wù)配置允許我們大大簡化服務(wù)配置,如:

 
 
 
 
  1. < ?xml version="1.0" encoding="utf-8" ?>
  2. < configuration>
  3.   < system.serviceModel>
  4.     < behaviors>
  5.       < serviceBehaviors>
  6.         < behavior>
  7.           < serviceMetadata httpGetEnabled="True" />
  8.           < serviceDebug includeExceptionDetailInFaults="False" />
  9.         < /behavior>
  10.       < /serviceBehaviors>
  11.     < /behaviors>
  12.   < /system.serviceModel>
  13. < /configuration>

實際上,這恰好顯示了VS2010/.NET 4中新的服務(wù)配置模板的模樣。

定義默認(rèn)的綁定和行為在.Net 4 WCF服務(wù)配置繼承中非常有用,那些在配置層次***定義的綁定和行為將會自動添加到你的服務(wù)中,這就是傳說中的配置繼承。下圖顯示了如何依賴于機器和應(yīng)用程序級定義的配置元素來簡化你的服務(wù)配置。

 
圖 1 配置繼承

在這個例子中,默認(rèn)的basicHttpBinding和serviceMetadataBehavior都定義在物理層,在下一級定義了默認(rèn)的serviceDebugBehavior,它將會添加服務(wù)上,只需默認(rèn)端點使用了機器層定義的綁定即可。***要說明的是,.Net 4 Beta 2中這些默認(rèn)服務(wù)行為將會被合并,并添加到那些沒有明確配置的服務(wù)上,敬請期待!

***,.Net 4中第三個WCF配置增強是標(biāo)準(zhǔn)端點,它允許你定義可重復(fù)使用的預(yù)配置端點,這些端點的主要特性是有一到多個地址、綁定和有固定值的契約屬性,這對于定義系統(tǒng)端點特別有用,系統(tǒng)端點提供它們自己的契約實施,例如不在你的服務(wù)中定義,作為MEX端點的實例,WCF開箱即可提供這個實現(xiàn)。標(biāo)準(zhǔn)端點的另一個有趣的特性是可以使用新的屬性擴展服務(wù)端點,也可以使用類似的方式自定義綁定。標(biāo)準(zhǔn)端點也允許你為你的服務(wù)端點定義自定義屬性。

為了定義標(biāo)準(zhǔn)端點,需要在你的端點中使用下面的屬性。***個屬性是kind,它標(biāo)識了標(biāo)準(zhǔn)端點的類型,必須注冊到< endpointExtensions>小節(jié)中,第二個屬性是endpointConfiguration,它將去匹配< standardEndpoints>小節(jié)中標(biāo)準(zhǔn)端點的配置元素名,用于為端點定義新的屬性,***一個屬性是isSystemEndpoint,它標(biāo)記端點確定它是否有一個固定的契約。

下面的配置代碼片段定義了一個udpDiscoveryEndpoint,它是一個不明確的契約,為端點定義了額外的屬性:

 
 
 
 
  1. < ?xml version="1.0" encoding="utf-8" ?>
  2. < configuration>
  3.   < system.serviceModel>
  4.     < services>
  5.       < service name="Service1">
  6.         < endpoint address=""
  7.                   binding="basicHttpBinding"
  8.                   contract="Library1.IService1" />
  9.         < endpoint kind="udpDiscoveryEndpoint"
  10.                   endpointConfiguration="udpConfig" />
  11.       < /service>
  12.     < /services>
  13.     < standardEndpoints>
  14.       < udpDiscoveryEndpoint>
  15.         < standardEndpoint
  16.                   name="udpConfig"
  17.                   multicastAddress="soap.udp://239.255.255.250:3703"
  18.                   ... />
  19.       < /udpDiscoveryEndpoint>
  20.     < /standardEndpoints>
  21.   < /system.serviceModel>
  22. < /configuration> 
  23. < endpointExtensions>

小節(jié)將會在machine.config中具體指定:

  
  
  
  
  1. < ?xml version="1.0" encoding="utf-8" ?> 
  2. < configuration> 
  3.   < system.serviceModel> 
  4.     < extensions> 
  5.       < endpointExtensions> 
  6.         < add name="udpDiscoveryEndpoint" type="..." /> 
  7.       < /endpointExtensions> 
  8.     < /extensions> 
  9.   < /system.serviceModel> 
  10. < /configuration> 

接下來會怎樣?

這些特性將幫助你維護(hù)一個清爽的WCF服務(wù)配置。不過還沒結(jié)束!有時你可能想要為你的服務(wù)定義不同的配置,例如一個用于調(diào)試,一個用于部署,在這種情況下,你仍然要維護(hù)web.config文件。我們目前已經(jīng)可以在定義的配置文件上工作,它將擔(dān)任不同配置元素的元包,通過服務(wù)使用這個配置文件將它們導(dǎo)入進(jìn)來。

原文:Service Configuration Improvements in .NET 4

作者:Amadeo Casas Cuadrado


網(wǎng)頁名稱:.NET4.0中WCF服務(wù)配置的簡化與改進(jìn)
文章起源:http://www.5511xx.com/article/dhdjdpc.html