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

Learn WCF (3)--開發WCF客戶程序

編輯:關於.NET

前篇Learn WCF (2)--開發WCF服務介紹了開發服務程序,這篇開發一個客戶程序,主要有三種方案:

添加一個Web引用

使用svcutil.exe工具

編程方案

1.添加一個Web引用

這個和添加引用Web服務的方法基本一致,在添加引用的對話框中輸入URL:http://localhost:39113/WCFServiceText/WCFStudentText.svc

為WCF起個名字,點擊添加引用按鈕將會完成如下的任務:

(1)從指定的URL為學生管理服務下載WSDL文件

(2)生成代理類WCFStudentText,它是服務器WCFStudentText的代理,實現了服務器契約IStuServiceContract。

(3)生成響應的配置設置

現在我們就可以用代理類WCFStudentText與學生信息管理服務進行通信了。在站點中添加一個頁面,放入一個GridView和ObjectDataSource

<div>
        <asp:GridView ID="GridView1" runat="server" BackColor="White" 
            BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" 
            DataSourceID="ObjectDataSource1" ForeColor="Black" GridLines="Vertical">
            <RowStyle BackColor="#F7F7DE" />
            <FooterStyle BackColor="#CCCC99" />
            <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
            <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>

    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="StuWcfService.WCFStudentText" SelectMethod="GetStudent">
    </asp:ObjectDataSource>
    </div>

ObjectDataSourse的優點是不需要編寫一行代碼就可以調用代理類中的方法。這裡應當注意的是TypeName,SelectMethod兩個重要屬性的寫法,必須與代理類一致。

2.使用svcutil.exe工具

WCF帶有一個工具svcutil.exe,它自動從指定的URL下載WSDL文檔,為代理類生成並保存一個指定的文件中,用相應的配置設置生成相應的配置文件,執行下面命令:

svcutil.exe工具將自動完成下列工作:

(1)通過URL下載元數據文檔(WSDL文檔)。

(2)為代理類生成代碼,並將代碼保持到WCFStudentServiceClient.cs文件中。

(3)生成配置設置並將其保存到Web.config中。

檢查svcutil.exe多運行的目錄,就會看到文件WCFStudentServiceClient.cs和Web.config。文件中的代碼這裡就不考出來了,大家可以自己試一下。將這兩個文件導入到一個站點中。

只需將ObjectDataSource的代碼改為:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="代理類名" SelectMethod="調用的方法名">
    </asp:ObjectDataSource>

這樣就可以了。

3.編程方案

這裡我們主要根據svcutil.exe給我們生成的文件,手動的編寫自己的代碼,實現同樣的效果。svcutil.exe生成的代理類文件中包含了5個構造函數,目的是為了滿足不同情況下的需要:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
public partial class StuServiceContractClient : System.ServiceModel.ClientBase<IStuServiceContract>, IStuServiceContract
{

    public StuServiceContractClient()//默認構造函數
    {
    }

    public StuServiceContractClient(string endpointConfigurationName) :
            base(endpointConfigurationName)//參數是一個字符串,包括端點的配置名
    {
    }

    public StuServiceContractClient(string endpointConfigurationName, string remoteAddress) :
            base(endpointConfigurationName, remoteAddress)//端點的配置名,端點的網絡地址
    {
    }

    public StuServiceContractClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
            base(endpointConfigurationName, remoteAddress)//端點的配置名,端點地址的EndPointAddress對象
    {
    }

    public StuServiceContractClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
            base(binding, remoteAddress)//端點綁定的Binding對象,端點地址的EndPointAddress對象

    {
    }

    public void AddStudent(WCFStudent.Student stu)
    {
        base.Channel.AddStudent(stu);
    }

    public WCFStudent.Student[] GetStudent()
    {
        return base.Channel.GetStudent();
    }
}

其中端點的配置名是<client>下<endpoint>子元素下的name屬性。

我們也可以編寫同樣的代碼。來實現WCF服務的應用。就寫到這啦。

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