使用自定义对象作为输入参数的WCF服务

使用自定义对象作为输入参数的WCF服务,wcf,web-services,Wcf,Web Services,我有一个wcf方法,它接受一个对象顺序作为输入,并返回一个对象结果集。我创建了一个测试项目,添加了对objectModel项目的引用,可以毫无问题地使用我的服务 我在我的订单对象属性中添加了DataContract和DataMember属性我的订单类位于wcf服务之外的单独项目中不确定这是否起作用?。我不清楚的是,如果使用此服务的客户机是在java应用程序或其他什么程序中使用它,该怎么办?他怎么能把一个订单类型的物品交给我?此外,他将如何接收ResultSet类型的对象 这种情况还会像现在这样吗

我有一个wcf方法,它接受一个对象顺序作为输入,并返回一个对象结果集。我创建了一个测试项目,添加了对objectModel项目的引用,可以毫无问题地使用我的服务

我在我的订单对象属性中添加了DataContract和DataMember属性我的订单类位于wcf服务之外的单独项目中不确定这是否起作用?。我不清楚的是,如果使用此服务的客户机是在java应用程序或其他什么程序中使用它,该怎么办?他怎么能把一个订单类型的物品交给我?此外,他将如何接收ResultSet类型的对象


这种情况还会像现在这样吗?有关对象的信息是否自动填充到服务引用中?即使是java应用程序,怎么可能传递一个订单类型的对象呢?

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代码能够构造正确的消息,它就可以正常工作。

@John您如何在java应用程序中使用我的服务,比如说,并向它传递一个Order类型的对象?