文章出處

上接    WCF學習之旅—WCF服務部署到IIS7.5(九)

          WCF學習之旅—WCF服務部署到應用程序(十)

      WCF學習之旅—WCF服務的Windows 服務程序寄宿(十一)

 

八、WAS宿主

  IIS7允許通過HTTP外的協議進行激活和網絡通信。此環境適合開發可通過 WCF支持的任何網絡協議(包括http、net.tcp、net.pipe、net.msmq)進行通信的WCF服務。部署簡單、管理方便,這些網絡協議在部署時可像Http一樣,直接丟到IIS7上即可,我們在下面的例子中以net.tcp為協議為例。IIS7以下的版本只能支持Http的通信。

  1、確保已安裝IIS7的激活組件

  在應用WAS宿主時,必須確保IIS7的激活組件安裝好。打開“控制面板”-->“打開或關閉Windows功能”-->對話框“Windows功能”中查看“Microsoft .NET Framework 3.5.1”中的“WCF的HTTP激活”與“WCF的非HTTP激活”。如果沒安裝,請安裝。如下圖所示。

 

如果沒有安裝,“勾選相應的功能”,然后點擊“確定”,進行安裝。如下圖所示:

 

安裝成功后我們打開IIS,點擊“網站”-->“新建網站”,如下圖。

 

在“添加網站”對話框中,根據如下圖填寫相應的信息,在綁定信息中填寫“808:*”,給網站添加net.tcp協議。如下圖所示

 

如果只添加了net.tcp協議,則網站無法啟動,如下圖。

 

使用鼠標點擊WCFWAS網站,需要再次添加HTTP協議。如下圖。

 

設置成功之后,如下圖。

 

 

  2、開通net.tcp的協議 

  在安裝成功并且在指定的網站上綁定了net.tcp以后,我們還要開通.net.tcp協議,點擊我們要部署WCF的網站,在IIS管理器的操作功能區有一項“高級設置”點擊后出現如下圖所示高級配置的窗體

 

  在啟用的協議中添加net.tcp協議(原來只對http協議支持,現在把tcp協議追加上去),中間用逗號隔離開,如上圖所示。

  注意:這幾個步驟一個也不能少,否則會出現:“找不到具有綁定 NetTcpBinding 的終結點的與方案 net.tcp 匹配的基址。注冊的基址方案是 [http]”的錯誤信息。

   3、建立服務程序

  (1)在解決方案下新建WCF服務應用程序項目 WCFHost_WAS。

  (2)建立IUser與User,代碼同例二一樣。

  (3)修改配置文件Web.config代碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <directoryBrowse enabled="false" />
    </system.webServer>
       <system.serviceModel>
     <bindings>
       <netTcpBinding>
         <binding name="netTcpBindConfig">
           <security mode="None">
            <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
              <message clientCredentialType="Windows" />

           </security>
        </binding>
      </netTcpBinding>
     </bindings>

     <services>

       <service behaviorConfiguration="BookBehavior" name="WcfServiceLib.BookService">

         <endpoint address="" binding="netTcpBinding" contract="WcfServiceLib.IBookService" bindingConfiguration="netTcpBindConfig"></endpoint>

        <!--元數據交換的終結點-->
         <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" ></endpoint>
       </service>

     </services>
     <behaviors>
       <serviceBehaviors>
         <behavior name="BookBehavior" >

          <serviceMetadata/>
          <serviceDebug includeExceptionDetailInFaults="true" />

          <dataContractSerializer maxItemsInObjectGraph="6553600"/>

         </behavior>
      </serviceBehaviors>
     </behaviors>
   </system.serviceModel> 

    <system.web>
        <compilation defaultLanguage="c#" />
    </system.web>
</configuration>

 

  4、部署服務

  像其他的Web應用程序一樣,把相關的文件丟到服務器端指定目錄即可。

  鼠標右鍵瀏覽User.svc,如現如下所示:

 

  說明部署成功,如上所示的服務地址為:net.tcp://服務器名/User.svc/mex

  5 、建立客戶端

       (1)在WinClient項目中,添加對服務的引用(在引用上右鍵-->輸入我們定義的服務宿主的基地址(此處為:net.tcp://developer/BookService.svc/mex-->轉到-->確定)。如下圖。

 

 

     (2) 在From1中添加一個“WAS獲取BOOK”按鈕。如下圖。

 

    (3) 在btnWAS_Click事件中添加如下代碼

 

  private void btnWAS_Click(object sender, EventArgs e)
        {

            WASBookWCF.BookServiceClient client = new WASBookWCF.BookServiceClient();
            string book = client.GetBook("10");
            textBox1.Text = book;

        }

 

 

  (4) 我們此時看客戶端的配置文件:

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>

        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>

    <system.serviceModel>
        <bindings>
            <netTcpBinding>
                <bindingname="NetTcpBinding_IBookService">

                    <securitymode="None" />
                </binding>
            </netTcpBinding>
            <wsHttpBinding>
                <binding name="WSHttpBinding_IBookService" />

            </wsHttpBinding>

        </bindings>
        <client>
            <endpoint address="http://localhost:8080/BookService" binding="wsHttpBinding"

                bindingConfiguration="WSHttpBinding_IBookService" contract="BookServiceReference.IBookService"

                name="WSHttpBinding_IBookService">
                <identity>
                    <userPrincipalName value="DEVELOPER\Administrator" />

                </identity>
            </endpoint>
            <endpointaddress="net.tcp://developer/BookService.svc"binding="netTcpBinding"

                bindingConfiguration="NetTcpBinding_IBookService"contract="WASBookWCF.IBookService"

                name="NetTcpBinding_IBookService" />
        </client>
    </system.serviceModel>
</configuration>

 

 

 

        (5) 點擊“WAS獲取BOOK”按鈕,最終結果如下。

 

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()