2009-03-14 21 views
4

WCFとEntity Frameworkに関するいくつかの実験を行っています。 2つの質問。階層構造のエンティティフレームワーク?

オプション1:

私は、エンティティフレームワーククラスは、以降SP1で、直接、WCFの上にシリアライズすることができることを理解します。どのように扱われれば、遅延ロード、熱心なローディング、コンテキスト管理などのシナリオがどのように処理されるかを知りたいと思いますか?

オプション2:

別の代替ではなく、直接エンティティフレームワーククラスを露出させる、エンティティ・フレームワークの上に無地POCOラッパーを有するように、EFPocoAdapterを使用するかもしれません。 http://code.msdn.microsoft.com/EFPocoAdapter。誰もこれを使っていますか?この方向の思考は何ですか?

その他の思考:ADO.NETデータサービスについて

- 私はADO.NETデータサービスはリモーティング(NETTCP結合)を介して設定することはできません理解したよう?これは、httpベースのアクセスのみをサポートしています。バイナリのシリアライゼーションは遅いことがわかります。

ポインタやその他のオプションはありますか?

答えて

4

私はこれについていくつかの掘り下げを行いました。これは私の知見です。

ADO.NETデータサービス:

あなたはほぼゼロコードで、電線の上にエンティティフレームワークを公開するADO.NETデータサービス(あなたはSP1が必要)を使用することができます。しかし、私が理解するように、唯一の制限は、トランザクションがHTTP経由であることです。つまり、シリアライゼーションの面では少しオーバーヘッドがあります(バイナリのシリアライゼーションがより速いことはわかっていますが)利点は、サービスの実装のスピードです。

私はジョン[この上http://twitter.com/John_Papa]から非公式の言葉を得た - 「。WCFと間違いなくより多くのオプションMore仕事をほとんどの場合、あまりにもアストリアは、簡単にエンティティを公開パーフ差分は、ほとんどの場合、無視することができる。」

利点 - まったくサービスを書く必要はありません。データサービスとエンティティフレームワークの両方で検証とセキュリティロジックをフックするだけで済みます。 Silverlightクライアント、httpを介したwinform/wpfフロントエンドなど、http - inのシナリオでデータ中心のサービスを利用している場合に理想的です。 WCFオーバーEntity Frameworkの公開

:SP1で

を、階層化アーキテクチャでエンティティフレームワークを使用するためのサポートがたくさんあります。これには、熱心な読み込みとコンテキスト管理のサポートが含まれます。もちろん、この場合、サービス(およびメソッドの背後にある論理)を記述する必要があります。あるいは、dbと完全にアライメントされたエンティティフレームワークモデルがあれば、必要なメソッドを含むほとんどのサービスを生成できます。

このhttp://msdn.microsoft.com/en-us/magazine/cc700340.aspx

を読むことを推奨する別の方法ではなく、直接、エンティティフレームワーククラスをさらすこと、DTOSのためのエンティティフレームワークの上平野POCOラッパーを持つように、EFPocoAdapterを使用するかもしれません。現在、エンティティフレームワークhttp://code.msdn.microsoft.com/EFPocoAdapterの次のバージョンのコンパスプロジェクトです。

2

EFクラスをWCFで公開することは非常に悪い考えです。マイクロソフトは、これが有用なシナリオではないような重大な間違いをしました。エンティティのデータを扱うだけでなく、エンティティの基本クラスも公開しており、逆方向リンクの場合はリンクの2つのコピーを公開しています。

一方、ADO.NET Data Servicesには、これに近いものが動作するための魔法がい​​くつかあります。今月のMSDN MagazineのSilverLight記事で、クライアント側からADO.NET Data Servicesを使用した例をご覧ください。

+0

ADO.NETのデータサービスはリモート処理では機能しません。これは、httpベースのアクセスのみをサポートしています。 – amazedsaint

+0

また、EFPocoAdapterはEFの上にあるアダプタで、WCFを介してPOCOオブジェクトを送信および返すことができます。思考? – amazedsaint

+0

EFPocoAdapterにリンクがありますか?そのようなことを聞​​いたのは初めてだ。私はhttp://www.codeplex.com/AutoMapperについて読んでいますが、それは早い時期です。 –

0

古い投稿を持ち上げるのではなくて...まったく同じ問題を扱うときにこのリストを見つけました。私たちはWCFサービスとEntity Framworkドメインモデルを持っています。最後に、Danny Simmonsの仕事に基づいてT4を作成しました。これはEDMXを取り、POCOメッセージクラスと、entity.ToMessage()とmessage.ToEntity(objectcontext)をマッピングする拡張メソッドを作成します。

これは、(PostSharpに基づいて)私が見つけた他の方法のようにジャンプするための追加の外部プロジェクトの依存関係やフープを必要としないので、.NET 4.0までは最善の中間的アプローチのようでした。

他の誰かがこのアプローチが役に立つと思っている人は、私に知らせてください。私はGoogleのgooglecodeサイトにTTファイルへのリンクを投稿します。

関連する問題