2011-12-08 32 views
1

我想知道WCF服務是否與平臺無關。也就是說,WCF服務可以接收來自其他平臺(如Java)的請求嗎?如果可以,WCF中的抽象類在其他平臺上工作。例如,下面的代碼可以用於其他平臺WCF服務可以被其他平臺調用,並且抽象類兼容性

- 這僅是示例

[ServiceContract(Name = "Service1")] 
public interface IService1 
{     
    [OperationContract] 
    [ServiceKnownType(typeof(Retangle))] 
    [ServiceKnownType(typeof(Square))] 
    string GetShape(Shape shape); 
} 

    [DataContract] 
    public abstract class Shape //is abstract interoperable by other language 
    {  
    } 

[DataContract] 
    public class Retangle:Shape 
    {  
    } 

[DataContract] 
public class Square : Shape 
{  
} 

http://localhost:10287/Service1.svc

由於

回答

2

了不完全肯定,WCF如果與標準傳輸和消息協議如SOAP使用,JSON,REST,HTTP/S與其他平臺和語言高度互操作。在實踐中,兼容性取決於語言和平臺,以及在使用SOAP時使用的WS- *協議級別。
在您的具體情況下,使用KnownType可與Java協同工作,並且我們可以在我們將其用於由Java客戶端使用的企業WCF應用程序中時對其進行擔保。我們使用的Java堆棧是Metro,IDE是Netbeans。

您可以隨時嘗試使用SoapUI這是一個用Java編寫的通用SOAP客戶端,以使用您的WCF服務並測試它是否工作。

+0

謝謝你的評論。 WCF中的抽象類是否可以與其他語言交互操作? – Pingpong

+1

類本身不可互操作,但在WCF中,您共享合同而不是代碼。這就是爲什麼你明確地用DataContract標記類。由此生成一個WSDL文件(代表合同),您將爲客戶端生成代理類。當使用其他語言生成代理時,它可能沒有抽象類,但是該語言特定的東西。應該測試其他語言的功能,但Java可以處理您的情況。 – softveda

+1

我建議構建服務,下載netbeans並在Java中使用它。不應該花很長時間。 – softveda