官术网_书友最值得收藏!

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>
主站蜘蛛池模板: 凤冈县| 浪卡子县| 沛县| 许昌县| 通榆县| 涿鹿县| 富顺县| 莱州市| 镇安县| 枣庄市| 特克斯县| 公安县| 西乌| 洞头县| 六枝特区| 桦南县| 祁阳县| 离岛区| 洪泽县| 淮安市| 济南市| 平邑县| 临高县| 建瓯市| 沈丘县| 安溪县| 商河县| 涞源县| 邮箱| 珲春市| 云梦县| 九江县| 肥乡县| 五家渠市| 万荣县| 丰县| 澎湖县| 新津县| 名山县| 成都市| 巴南区|