簡體   English   中英

我可以為 REST WCF 服務自動生成服務引用嗎?

[英]Can I generate a service reference automatically for a REST WCF service?

對於 SOAP WCF over REST (json) wcf,我可以看到的唯一參數是,一旦創建了我的服務,我就可以在 Visual Studio 中添加一個引用,並且我會為我准備好大量強類型類和一個我可以使用的客戶端類可以調用我所有的webmethod。 據我所知,它甚至設置了 web.config。

但是,當我公開 REST (json) 服務時,我仍然會得到 WSDL。 所以我想知道還有沒有辦法自動構建我的引用?

不使用 WCF 工具。 與 SOAP(具有用於描述服務的既定協議 - WSDL)不同,REST 沒有。 WADL 就是這樣一種協議,但它不是太普遍,WCF 也不支持它。 您仍然會獲得 WSDL,因為 WCF 將描述它可以從服務中獲取的所有內容。 但是,WSDL 不會有<wsdl:port>元素,該元素將描述 REST 端點,這就是您獲得 WSDL 但無法生成對它的引用的原因。

http://blogs.msdn.com/b/carlosfigueira/archive/2012/03/26/mixing-add-service-reference-and-wcf-web-http-aka-rest-endpoint-does-not 上的帖子-work.aspx有更多關於這個問題的信息。

很老的問題,新的答案。

今天使用 openapi (swagger) 我可以通過使用swagger 檢查器做樣本來實現這一點我可以記錄我的休息服務以及創建一個規范 yml/json 文件,允許驗證和驗收標准以及 java、python、c# 的自動化客戶端, ruby、javascript 和其他我確定

我要頂詳細說明:

雖然確實無法使用 JSON REST WCF 服務獲得 WSDL 添加服務引用,但我所做的是創建兩個met數據掛鈎:

  1. 是返回 JSON 的操作
  2. 是單個 XML 操作,返回一個類包裝器,其中包括我允許的所有服務類,我稱之為 Discover:

IE

public class Discover
{
  public Manager Manager {get;}
  public Employee Emp {get;}
  ....
}

[OperationContract]
public Discover DiscoverDTOs()

你可以,間接地。 雖然 Visual Studio 生成的客戶端無法運行,但該客戶端實現了一個同樣生成的接口,您可以像這樣使用它:

WebChannelFactory<IService> factory = new WebChannelFactory<IService>(new Uri(endpointAddress));

IService proxy = factory.CreateChannel();

int result = proxy.Operation(1, 2, 3);

WebChannelFactory有另一個接受WebHttpBinding ,您可以根據服務配置進行配置,也可以在 app.config 文件中手動進行此配置。

暫無
暫無

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

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