2011-05-03 17 views
0

在Java(Eclipse)中定義簡單的Web服務並在Visual Studio中使用服務時,生成的代碼包含每種服務方法的請求和響應結構。生成的客戶端接口具有接受請求結構並從響應結構返回值的方法。VS.NET是否可以使用Java WS而不生成包裝結構?

舉例來說,如果我有一個方法,一個服務類SimpleTest的添加(INT A,INT B),我得到以下生成的接口(註釋去掉):

public interface ISimpleTest 
{ 
    MyNamespace.WebServiceProxy.addResponse add(
     MyNamespace.WebServiceProxy.addRequest request); 
} 

不過,如果我基本上是創建同一類作爲一個WCF Web服務,代碼生成以下接口:

public interface ISimpleTest 
{     
    int Add(int a, int b); 
} 

我想弄清楚是否有以避免消耗Java服務時使用的包裝類的方式。在XSD中定義數據類型是否允許這種情況,或者.NET會在使用非.NET服務時始終生成這些包裝?我們想繞過生成的客戶端並自己實現接口(沒有包裝器)。這可能嗎?

回答

0

你絕對可以使用WCF來做到這一點。你應該能夠定義你的界面上的客戶端,像這樣:

[ServiceContract] 
public interface ISimpleTest 
{ 
    [OperationContract] 
    int Add(int a, int b); 
} 

從那裏,你可以通過client config or through code配置客戶端的實現。

+0

謝謝!這似乎工作... – jluce50 2011-05-03 19:06:31

0

如果我不得不猜測這是因爲用於外部Web服務(Java,Perl,Ruby等)的Visual Studio需要從該服務下載WSDL,然後基於WSDL生成.NET存根所有Web服務的接口。

對於WCF Web服務,它已經可以訪問代理的類等,因此它不需要生成存根和骨架來調用Web服務。

這雖然只是一個猜測...

做沒有包裝的唯一方法是,如果你創造了自己的SOAP請求的響應,並給他們送去了原始HTTP的Web服務。這是凌亂的代碼和.NET包裝生成器存在的全部原因,以保護您免受混亂!

相關問題