2012-02-22 30 views
0

我有一个接受对象“Order”作为输入并返回对象“ResultSet”的wcf方法。我创建了一个测试项目,添加了对我的objectModel项目的引用,并且可以使用我的服务没有问题。使用自定义对象作为输入参数来使用WCF服务

我将DataContract和DataMember属性添加到了我的Order objects属性中(我的Order类在一个单独的项目中,而不是wcf服务不知道这是否起作用?)。我迷迷糊糊的是,如果客户端使用这个服务是在java应用程序中执行它或什么?他将如何向我的服务传递Order类型的对象?此外他将如何接收ResultSet类型的对象?

这种情况下,即使按原样工作?关于该对象的这些信息是否自动填充到服务引用中?即使它是如何可能说一个Java应用程序甚至传递我的Order类型的对象?

+0

其实它“只是工作”。 – 2012-02-22 19:22:19

+0

@John你会如何去消费我的服务在一个Java应用程序中说,并将它传递给一个类型为“Order”的对象? – 2012-02-22 19:33:49

回答

0

Java应用程序不必传递相同类型的对象,它必须传递满足服务接口布置的合同的消息。

考虑一个仅限于.NET的服务。比方说,你有这样的服务/数据合同:

namespace MyServer 
{ 
    [ServiceContract(Namespace="http://example.com/foo")] 
    public interface IMyService 
    { 
     void Foo(Bar bar); 
    } 

    [DataContract(Namespace="http://example.com/foo")] 
    public class Bar 
    { 
     [DataMember] 
     public string Result { get; set; } 
    } 
} 

现在,让我们说你要手代码客户端,你可以让自己的数据执行合同(注意,这是一个区别命名空间和可能在不同的组件比上述代码):

namespace MyClient 
{ 
    [DataContract(Namespace="http://example.com/foo")] 
    public class Bar 
    { 
     [DataMember] 
     public string Result { get; set; } 
    } 
} 

这是一个不同类型,但它仍然会序列化/通过WCF,因为该消息被正确地构造正确地反序列化。同样的原则适用于Java客户端。只要你的java代码能够构造正确的消息,它就可以正常工作。

相关问题