C#如何創建一個簡單的WCF程序並調用?


1.什么是WCF

Windows Communication Foundation(WCF)是由微軟開發的一系列支持數據通信的應用程序框架,可以翻譯為Windows 通訊開發平台。整合了原有的windows通訊的 .net Remoting,WebService,Socket的機制,並融合有HTTP和FTP的相關技術。是Windows平台上開發分布式應用最佳的實踐方式。

 

2.WCF基本概念

地址:定義服務的地址
綁定:定義服務的通訊方式(傳輸協議、編碼方案)
契約:定義服務的具體實現
終結點:由地址、綁定和契約共同構成一個終結點,服務器通過終結點向客戶端公開服務,客戶端通過終結點調用服務。

 

【服務提供端】

下面通過簡單的服務實例來了解WCF?

1.首先新建一個項目,然后新建一個類庫【IBLL】,在類庫中新建一個接口【IUserInfoService】。並添加【System.ServiceMode】引用。

 

 [ServiceContract]//服務契約(僅僅對類、接口)
    public interface IUserinfoService
    {
        //這個契約相當於webService中的WebMethod
        [OperationContract]//操作契約
        int Add(int a, int b);
    }

 

2.然后在新建一個類庫,並新建一個類【UserInfoService】,這個類添加子【IBLL】的引用。這個類實現【IUserInfoService】接口。

 public class UserInfoService: IUserinfoService
    {


        public int Add(int a,int b)
        {
            return a + b;
        }

    }

 

3.新建一個【控制台應用程序】,命名為【Host】。

 

 

 4.然后在【App.config】中進行配置。

server節點中的name是具體服務的實現,我們具體服務的實現時BLL層中的UserInfoService。還需要在baseAddress中配置服務的地址。最后配置服務的契約,在contract屬性中配置服務契約,契約是IBLL層中的IuserInfoService接口契約。如果過需要配置多個服務,在services節點中繼續配置service節點即可。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      
      
      <!--name:具體服務的實現
      behaviorConfiguration:服務行為的配置
      -->
      <service name="BLL.UserInfoService" behaviorConfiguration="behaviorConfiguration">
        <host>
          <baseAddresses>
          <!--服務的地址-->
            <add baseAddress="http://localhost:8000/"/>
         </baseAddresses>
        </host>
         <!--服務契約-->
        <endpoint address="" binding="basicHttpBinding" contract="IBLL.IUserinfoService"></endpoint>
      </service>

    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="behaviorConfiguration">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

 

5.在【Program.cs】的Main函數中編寫代碼,在這里也需要添加對ServiceModel的引用。

using (ServiceHost host=new ServiceHost(typeof(BLL.UserInfoService)))
            {
                //打開服務
                host.Open();
                Console.WriteLine("服務打開成功!");
                Console.ReadKey();
//關閉服務
          host.close(); }

6.最后運行程序即可,只有程序運行客戶端才能調用。

 

 7.測試:如果控制器已經成功運行,我們可以打打開瀏覽器輸入服務地址:【http://localhost:8000/】,瀏覽器中會打開我們的服務頁面,如果能正常顯示,說明我們的服務已經啟動成功,客戶端可通過該地址訪問我們的服務了。我們將創建一個客戶端來訪問我們的服務。

 

【調用服務-客戶端】:第一種方法

1.在同一個解決方案下,新建一個【控制台應用程序】,然后我們使用微軟提供的Svcutil工具生成FirstService服務的客戶端代理類。可以在菜單中找到【VS2015的MSBuild命令提示符】/【VS2015開發人員命令提示】等工具,以管理員身份運行。

 

 2.跳轉到我們需要在哪個文件加生成FirstService服務的客戶端代理類。

切換到E盤:【e:】

切換目錄:【cd: E:\面向服務通信技術\WCF_Server_1\WCF_Client】

然后輸入以下命令:svcutil http://localhost:8000/?wsdl /o:userinfoServiceClientt.cs

 (執行成功后,會在解決方案目錄下生成兩個文件:userinfoServiceClientt.csoutout.config

 

3.我們可以將上面的3個文件夾展開,系統就會將隱藏的文件給顯示出來。

 

這時我們右擊隱藏的文件,點擊【包含在項目中】即可。

 

 

 

 4.然后將這個當前自帶的【App.config】的文件刪除,將【output.config】文件重命名為【App.config】接口。我們需要在【WCF_Client】添加對ServiceModel的引用。最后在【Program.cs】中的Main函數寫以下代碼。

UserinfoServiceClient client = new UserinfoServiceClient();
            Console.WriteLine(client.Add(10,20));
            Console.ReadKey();

 

【調用服務-客戶端】:第二種方法

這種方法跟WebService調用的方法一樣~

1.在同一個解決方案下,新建一個【控制台應用程序】。然后添加【服務引用】

 

 2.然后輸入服務地址,點擊轉到,可以看到有以下服務【UserinfoService】。然后點擊確定即可。

 

 3.最后在【Program.cs】中的Main函數寫以下代碼。

 ServiceReference.UserinfoServiceClient client = new ServiceReference.UserinfoServiceClient();
            int sum=client.Add(10, 20);

            Console.WriteLine(sum.ToString());

            Console.ReadKey();

 

4.最后運行測試即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM