【WCF系列二:如何調用WCF服務】WCF入門教程(圖文)VS2012


     上一遍到現在已經有一段時間了,先向關注本文的各位“挨踢”同仁們道歉了。小生自認為一個ITer如果想要做的更好,就需要將自己的所學、所用積極分享出來,接收大家的指導和吐槽。網上也有很多WCF相關的教程,但也有很多看完后讓人一種“不知所雲”的感覺。小生計划3月到4月吧WCF系列更新完,希望大家小小支持一下!

     言歸正傳,小生在Console Application, Windows Forms Application, Web Application以及ASP.NET MVC中都進行了調用測試,調用方法基本相似,沒有特殊的地方。下面就用WCF作為服務和其他Project進行結合使用(以VS2012為例)

1、創建WCF Service Application項目:

命名為:WcfServiceDemo. 創建后會出現WCF項目

其中:IService1是MS的自帶示例,下面再來添加一個Service class : ServiceDemo.

在ServiceDemo中加一些測試的方法,例如:string TestMethodStr(int i); int TestMethodInt(int i); double TestMethodDou(int i,int j);所示:

IServiceDemo代碼如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Runtime.Serialization;
 5 using System.ServiceModel;
 6 using System.Text;
 7 
 8 namespace WcfServiceDemo
 9 {
10     // 注意: 使用“重構”菜單上的“重命名”命令,可以同時更改代碼和配置文件中的接口名“IServiceDemo”。
11     [ServiceContract]
12     public interface IServiceDemo
13     {
14         [OperationContract]
15         String TestMethodStr(int i);
16 
17         [OperationContract]
18         Int32 TestMethodInt(int i);
19 
20         [OperationContract]
21         Double TestMethodDou(int i, int j);
22     }
23 }

ServiceDemo實現接口,代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WcfServiceDemo
{
    // 注意: 使用“重構”菜單上的“重命名”命令,可以同時更改代碼和配置文件中的類名“ServiceDemo”。
    public class ServiceDemo : IServiceDemo
    {
        public String TestMethodStr(int i)
        {
            return "param is:" + i;
        }

        public Int32 TestMethodInt(int i)
        {
            return i;
        }

        public Double TestMethodDou(int i, int j)
        {
            return i / j;
        }
    }
}

由於代碼都非常簡單,所以就沒有增加注釋了。

再發布之前,可以先利用WCF測試客戶端進行測試:

前面TestMethodStr()和TestMethodInt()得出的值都沒有問題,但是TestMethodDou()得出了0,這是因為類型轉換的問題。也是正確的。

2、發布Wcf項目

Rebuild項目,然后public。得到發布的源碼:

將上面的文件代碼部署到本機IIS中,IIS部署具體方法就不介紹了,如果有什么問題可留言,打開部署所在地,這邊以我本地的IIS為例。

部署時,請將應用池改為如果,瀏覽時,出現權限問題,則需要增加“IIS_IUSERS”和“NETWORK SERVICE”的完全控制權限(可能不都需要,但是我一般都會選擇)

再次運行,則出現證明部署成功!

點擊“WcfServiceDemo.ServiceDemo.svc”,可以看到ServiceDemo服務的信息,如下圖所示:

紅框中的地址就是我們需要調用的地址。

3、創建Condole Application項目:WCFConsole Project(即宿主)

     右擊引用,點擊服務引用:

在地址欄處,輸入ServiceDemo服務的svcutil.exe地址,點擊轉到,則會顯示出其對應的WCF接口。這里命名空間改為“ServiceReferenceDemo”點擊確定。則可以在引用目錄下看到已經添加的Service References.

      在Main函數中,寫入測試代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WCFConsole.ServiceReferenceDemo;

namespace WCFConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            ServiceDemoClient client = new ServiceDemoClient();
              
            Console.WriteLine(client.TestMethodInt(1));
            Console.WriteLine(client.TestMethodStr(1));
            Console.WriteLine(client.TestMethodDou(1, 2));

            Console.ReadLine();
            client.Close();
        }
    }
}

其中client.Close()寫不寫都可以,服務請求都會有一個周期,過了這個周期就會自動關閉,但最好還是手動進行close()。

執行結果如下:

測試通過。。。

其他里面調用其實和控制台應用程序調用完全一致,沒有什么特別的地方。這節主要是說明如何去調用,在這個例子中其實就是添加了“服務引用”。希望能幫助剛剛接觸的ITer。

4、后話

       這節比較簡單,如果有什么出錯或者不完善的地方,希望大家能夠多多指導小生,小生也會繼續努力!如果各位有疑問或者指教,請留言或者加群225109172,對MVC、WCF等方面的問題都可以進行學習、交流。

 

 

 

 

 


免責聲明!

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



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