- WCF技術剖析(卷1)
- 蔣金楠
- 772字
- 2018-12-27 11:32:36
1.3.6 步驟六 通過IIS寄宿服務
上面演示了通過自我寄宿的方式寄宿服務,現在我們來演示如何將WCF服務寄宿到IIS中。寄宿IIS的服務寄宿比較簡單,基本上包含兩個步驟:為WCF服務創建.svc文件和創建IIS虛擬目錄。
為WCF服務創建.svc文件
我們知道,每一個ASP.NET Web服務都具有一個.asmx文本文件,客戶端通過訪問.asmx文件實現對相應Web服務的調用。與之類似,每個WCF服務也具有一個對應的文本文件,其文件擴展名為.svc?;贗IS的服務寄宿要求相應的WCF服務具有相應的.svc文件,.svc文件部署于IIS站點中,對WCF服務的調用體現在對.svc文件的訪問上。
.svc文件的內容很簡單,僅僅包含一個ServiceHost指令(Directive),該指令具有一個必須的Service屬性和一些可選的屬性。所以最簡單的.svc僅僅具有一個包含Service屬性(該屬性指明了相應的WCF服務的有效類型)的ServiceHost指令。CalculatorService對應的.svc如下所示,我們把該.svc放在Services項目的根目錄下,并將文件命名為CalculatorService.svc。
<%@ServiceHost Service="Artech.WcfServices.Services.CalculatorService"%>
為WCF服務創建虛擬目錄
和一般寄宿于IIS下的Web應用一樣,WCF服務須要在IIS下創建相應的虛擬目錄。在本應用中,為了方便,我們直接把Services項目的根目錄映射為IIS虛擬目錄,并將該虛擬目錄命名為WcfServices。
接下來須要為通過IIS寄宿的CalculatorService創建配置文件,我們只須在Services的根目錄下創建一個Web.config,將WCF相應的配置添加到該配置文件中即可。Web.config所有配置內容如下所示,可以看出,這基本上和上面通過自我寄宿方式定義的配置一致。唯一不同的是在添加的終結點中無須指定地址,因為.svc所在的地址就是服務的地址。也就是說,CalculatorService的地址為http://127.0.0.1/wcfservices/calculatorservice.svc。你可以通過http://127.0.0.1/wcfservices/calculatorservice.svc?wsdl得到相應的元數據。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="metadataBehavior"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="metadataBehavior" name= "Artech.WcfServices.Services.CalculatorService"> <endpoint address="http://127.0.0.1:9999/calculatorservice" binding="wsHttpBinding" contract="Artech.WcfServices. Contracts.ICalculator" /> </service> </services> </system.serviceModel> </configuration>
由于在創建Services項目的時候,我們并不曾引用System.ServiceMode程序集,所以須要加上這樣一個引用。此外,一個Web應用在運行的時候會默認從位于根目錄下的Bin目錄加載程序集,而默認的情況下,編譯后的程序集會自動保存到Bin\Debug|Release目錄下,所以須要通過VS修改Services項目屬性,將編譯輸出目錄設置成Bin。
客戶端僅僅須要修改終結點的地址,從而轉向對寄宿于IIS下的CalculatorService的訪問,該地址即為.svc文件的網絡地址:http://127.0.0.1/wcfservices/calculatorservice.svc。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <client> <endpoint address="http://127.0.0.1/wcfservices/ calculatorservice.svc" binding="wsHttpBinding" contract= "Artech.WcfServices.Contracts.ICalculator" name= "calculatorservice" /> </client> </system.serviceModel> </configuration>
- Visual C++程序設計學習筆記
- Mobile Application Development:JavaScript Frameworks
- 密碼學原理與Java實現
- Mastering Adobe Captivate 2017(Fourth Edition)
- Arduino by Example
- 劍指JVM:虛擬機實踐與性能調優
- Java技術手冊(原書第7版)
- GeoServer Beginner's Guide(Second Edition)
- Python漫游數學王國:高等數學、線性代數、數理統計及運籌學
- Modular Programming in Java 9
- Extending Puppet(Second Edition)
- Visual C#.NET Web應用程序設計
- Python青少年趣味編程
- Java7程序設計入門經典
- 微信公眾平臺開發最佳實踐