初步分析WCF WEB使用規(guī)則
原來上網(wǎng)我下了很多WCF WEB的Demo。而我用的是VS2005,我在使用這些小樣時,基本上絕大部分基于VS2003的Asp.net工程都因為少數(shù)文件無法轉(zhuǎn)換而無法加載工程,為此我也苦惱很久,后來終于讓我找到了解決辦法。
如果address值為空,WCF WEB那么endpoint的地址就是默認(rèn)的基地址(Base Address)。例如ICalculator服務(wù)的地址就是http://localhost/servicemodelsamples/service.svc,而IMetadataExchange服務(wù)的地址則為http://localhost/servicemodelsamples/service.svc/mex。這里所謂的基地址可以在<service>中通過配置<host>來定義:
- <service
- name="Microsoft.ServiceModel.Samples.CalculatorService"
- behaviorConfiguration="CalculatorServiceBehavior">
- <host>
- <baseAddresses>
- <add baseAddress=
- "http://localhost/ServiceModelSamples/service.svc"/>
- </baseAddresses>
- </host>
- <endpoint … />
- </service>
當(dāng)我們在定義一個實現(xiàn)了Service Contract的類時, binding和address信息是客戶端必須知道的,否則無法調(diào)用該服務(wù)。然而,如果需要指定服務(wù)在執(zhí)行方面的相關(guān)特性時,就必須定義服務(wù)的behavior。在WCF中,定義behavior就可以設(shè)置服務(wù)的運行時屬性,甚至于通過自定義behavior插入一些自定義類型。例如通過指定ServiceMetadataBehavior,可以使WCF WEB服務(wù)對外公布Metadata。配置如下:
- <behaviors>
- <serviceBehaviors>
- <behavior name="metadataSupport">
- <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
- </behavior>
- <serviceBehaviors>
- <behaviors>
在WCF WEB中,behavior被定義為Attribute,其中,System.ServiceModel.ServiceBehaviorAttribute和System.ServiceModel.OperationBehaviorAttribute是最常用的behavior。雖然,behavior作為Attribute可以通過編程的方式直接施加到服務(wù)上,但出于靈活性的考慮,將behavior定義到配置文件中才是最好的設(shè)計方式。