4

たとえば、WCF サービスは他の WCF サービスのファクトリとして機能できますか? 例えば:

[ServiceContract(Namespace = "Foo")]
interface IThing
{
    [OperationContract]
    void DoSomething();
}

[ServiceContract(Namespace = "Foo")]
interface IMakeThings
{
    [OperationContract]
    IThing Create(string initializationData);
}

同様に、インターフェースは別のインターフェースをパラメーターとして受け取ることができますか?

[ServiceContract(Namespace = "Foo")]
interface IUseThings
{
    [OperationContract]
    void UseThing(IThing target);
}

これには、既知のタイプを調整する必要がありますか?

すべてのインターフェースは事前に定義され、クライアントとサービスの両方に認識されます。

4

2 に答える 2

8
  1. いいえ。Web を使用しているときは、C# の場合のように参照を扱っていないため、シリアル化できないオブジェクトを返すことはできません。それでも、DataMemberとしてマークされたデータのみが表示されます。

  2. はい。既知の型を調整する必要がありますが、これはOperationContractではなくDataContractへのインターフェイスになります。

于 2012-06-01T12:59:22.827 に答える
0

これは不可能だと思います。オブジェクトを取得または返す WCF サービスでメソッドを呼び出すと、実際には、オブジェクトがシリアル化され、シリアル化されたフォームがやり取りされます。

そのため、クライアント側では、DataContract-attributed クラスの「完全な」実装ではなく、シリアル化用にマークされたプロパティのみを含むスタブが取得されます。メソッドすら取得できません。WCF サービスはServiceContractではなく として属性付けされるDataContractため、これはまったく機能しません。

インターフェイスをサービス メソッドに渡す機能を使用するには、デシリアライズする実装をサービスが認識している必要があります。私は実際に試していませんが、これはうまくいかないと思っていましたが、ここで私を驚かせることができるかもしれません:-)

于 2012-06-01T13:00:07.140 に答える