0

WCF Data Services を使用してメンテナンスのオーバーヘッドを回避するために、サービス参照の生成を避けています。

現在、System.Data.Services.Client.DataServiceContext クラスを DataServiceQuery と組み合わせて使用​​しています。これは機能しますが、コードまたは構成にハードコードされた文字列 (エンティティ セット名と URI) が必要であることを意味します。

これに代わるものは何ですか?注意が必要な落とし穴はありますか?

ChannelFactoryの作成について言及したものを見ました

しかし、これは非常に面倒に見えました。少なくとも表面的には、私が現在行っていることよりも優れているようには見えませんでした。

EDIT もう少し詳細 - EF DBContext を公開するサービスは次のとおりです。

public class DocumentService : DataService<DocumentContext>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("Documents", EntitySetRights.All);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        config.UseVerboseErrors = true;
    }

    protected override DocumentContext CreateDataSource()
    {
        return new DocumentContext("DocumentsContext");
    }
}

そして、明示的な参照なしで呼び出す方法:

new DataServiceContext(uri, maxVersion).CreateQuery<DocumentEntity>(entitySetName)....etc

これに代わるものは何ですか?= DataServiceContext クラスの代替

4

2 に答える 2

1

エンドポイント、コントラクト (インターフェイス + 戻り値の型)、およびバインディングは、WCF で常に必要とされます。実際、サービス参照によってそれらが生成されます。

ChannelFactories を使用して WCF サービス インボーカーを作成できますが、前述の情報をサーバーとクライアントの間で共有する必要があります。

ChannelFactory を使用して WCF インボーカーを作成する方法について、stackoverflow に非常に優れた投稿があります。

ダリン・ディミトロフの答えをお勧めします。

于 2013-09-10T16:33:36.850 に答える