程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 面向接口的編程(WCF)

面向接口的編程(WCF)

編輯:關於.NET

我經常比較Web Service,.NET Remoting,以及WCF這些技術的異同。我覺得WCF更好地體現了面向接口編程的思路。下面我用一個例子來講解,大家一看應該就理解了

1.創建解決方案

2.創建服務接口

添加一個接口類型

添加引用

編寫該接口。很簡單。就定義了一個OperationContract

3.創建服務類型

添加對接口類型的引用和System.ServiceModel的引用

編寫服務類型

4.創建宿主程序

添加對System.ServiceModel的引用,添加對服務以及接口的引用

編寫程序

【備注】這是完全用代碼的方式進行托管的,當然還可以用配置的方式來完成

5.創建客戶程序

添加對接口類型的引用和System.ServiceModel的引用

編寫客戶端代理類型

6.調試

7.進一步擴展

我另外比較欣賞WCF 的是,它所用到的復雜類型也可以更好地在服務端和客戶端之間共享。一般可以直接用一個Model項目來保存

【備注】關於這一點,我印象最深刻的是在Web Service的架構中,復雜類型在傳遞的時候並不那麼理想。在生成客戶端代理的時候,其實生成那個類型和服務端的那個不是一個東西。

添加引用

8.修改接口,添加一個操作

9。修改服務,實現該操作

10.修改宿主,只需要添加對Model的引用即可

11.修改客戶端

修改代理類

/// <summary>
/// 這個類型往常都是通過工具生成的,但也可以自己編寫
/// </summary>
class HelloServiceClient : ClientBase<Contracts.IHelloContract>,Contracts.IHelloContract{
    public HelloServiceClient(Binding binding, EndpointAddress address) : base(binding, address) { }
    #region IHelloContract 成員
    public string HelloWorld()
    {
        return Channel.HelloWorld();
    }
    #endregion
    #region IHelloContract 成員
    public Model.Employee GetEmployee()
    {
        return Channel.GetEmployee();
    }
    #endregion
}

修改調用代碼

static void Main(string[] args)
{
    Binding tcpBinding = new NetTcpBinding();
    EndpointAddress tcpAddress = new EndpointAddress("net.tcp://localhost:81/HelloService");
    HelloServiceClient proxy = new HelloServiceClient(tcpBinding, tcpAddress);
    Console.WriteLine(proxy.HelloWorld());
    Model.Employee employee = proxy.GetEmployee();
    Console.WriteLine(employee);
    Console.Read();
}

調試

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved