簡體   English   中英

創建沒有自動生成代理的WCF客戶端

[英]Create WCF Client without auto generated proxy

看着

WCF ChannelFactory與生成代理

似乎創建WCF客戶端的最佳做法是創建代理(非自動生成)。

我一直在網上看了一段時間,我沒有找到任何完整的例子(代理類,web.config)

你能提供資源的例子或鏈接嗎?

我相信這篇文章正是你要問的問題:

WCF手動方式......正確的方法

但是,分享完成后,手動創建代理可能並不總是最好的利用時間。 這篇文章介紹了這樣做的一些很好的理由 - 你肯定會有更多的控制權,你的客戶可能會有更輕松的時間等等。但總體而言,像這樣手動操作需要更多的時間,並向用戶解釋服務到底如何使用您提供的代理可能會很痛苦。

WCF允許元數據交換和發現是有原因的,VS會自動為您創建代理。

無論哪種方式,它都是一篇很酷的文章和值得學習的技巧。

我就是這樣做的。

獲得服務合同和數據合同

如果我有權訪問服務代碼,我就擁有所有合同。 如果沒有,我可以使用svcutilAdd Service Reference來生成它們。

制作配置

我使用Add Service Reference來獲取app.config文件。 然后我刪除它生成的所有其他內容。 根據需要編輯app.config。

定義工廠

說我有服務合同IFooService

interface IFooServiceChannel : IFooService, IClientChannel { }

這就是字面意思。 沒有會員。

創建工廠

fooServiceFactory = new ChannelFactory<IFooServiceChannel>(
                        "NetTcpBinding_IFooService");

字符串“NetTcpBinding_IFooService”是app.config中binding元素的name屬性。

創建頻道

fooService = fooServiceFactory.CreateChannel();

用它

fooService.DoSomething();

最棘手的部分是讓app.config正確。 您需要了解綁定端點 這有點學習曲線,但沒什么大不了的。

以下是基本步驟。

  1. 像平常一樣創建您的服務。
  2. 將服務實現的接口移動到可與客戶端共享的程序集中。
  3. 創建一個ChannelFactory,其中T是您的界面。 您必須將uri服務提供給構造函數。
  4. 調用factory.CreateChannel()。 這將是T型。
  5. 使用該頻道撥打電話。

真的很簡單。 沒有自動生成的代碼,沒有服務引用。 使用異步調用和Silverlight會有點復雜,但不會太多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM