2012-02-22 11 views
0

私はオブジェクトとして "Order"を受け入れ、オブジェクト "ResultSet"を返すwcfメソッドを持っています。私は、テストプロジェクトを作成し、私のobjectModelプロジェクトへの参照を追加し、問題なくサービスを利用することができます。入力オブジェクトとしてカスタムオブジェクトを使用したWCFサービスを使用する

私はOrderオブジェクトのプロパティにDataContract属性とDataMember属性を追加しました(私のOrderクラスは、これが再生されるかどうかわからないwcfサービスとは別のプロジェクトにあります)。私が曇っているのは、このサービスを利用しているクライアントがJavaアプリなどでそれをやっているのですか?彼はどのように私のサービスにOrderのオブジェクトを渡すつもりですか?さらに、彼はどのようにしてResultSet型のオブジェクトを受け取ってオブジェクトにするのでしょうか?

このシナリオはそのまま動作しますか?オブジェクトに関するこの情報は、サービス参照に自動的に設定されていますか?たとえそれがJavaアプリケーションがOrder型のオブジェクトを渡すことさえ可能なのでしょうか?

+0

実際は「うまくいく」。 –

+0

@ジョンあなたは、Javaアプリケーションで私のサービスを消費し、それを "Order"型のオブジェクトに渡す方法を教えてください。 –

答えて

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コードが正しいメッセージを構築できる限り、正常に動作します。

関連する問題