2

これは本当に超基本的な質問です。

今日、n 層アーキテクチャを持つエンタープライズ CRUD アプリケーションを .NET で構築したいとします。どのデータ アクセス アプローチを使用すればよいですか? 相互運用性が必要なので、DataSet はリリースされています (そして、2003 年以降ではないと思います)。同様に、追加のサービスを介して非 Silverlight クライアントにその機能を公開する .NET RIA サービスの宣伝されている方法は、更新操作にはあまり説得力がないようです。私は、n 層の OOB をサポートしていない Entity Framework と何かを組み合わせることができたので、オプティミスティック コンカレンシーの類似性をシミュレートするために多くの奇妙なリフレクション タイプのものを必要としました (MSDN マガジンのそうではありません)。オプティミスティック コンカレンシーをサポートしているように見えますこれは EF4 で改善されていますが、私は少し懐疑的で、CTP 以外ではまだ実際には利用できません)。

では、更新チェック済みのオプティミスティック コンカレンシーを使用したエンタープライズ CRUD のプロジェクトで、実際に何ができるでしょうか? データセット? DTO を使用して DIY を行い、主はどれだけの作業が必要かを知っていますか? そして、それはバインドされたデータでどのように機能しますか? コレクションが DataGrid にバインドされているとします。変更のために CollectionChanged をリッスンする必要がありますか? 元に戻す場合に PK を比較できるように、変更のスタックを保持する必要がありますか? 悪夢のようです。

次に、オプティミスティック コンカレンシーの更新チェックが難しい要件ではない場合はどうでしょうか。じゃあ何?

4

1 に答える 1

3

まず、将来 VS2010 および .NET 4.0 に移行する予定がある場合は、EF v4.0 を検討することを強くお勧めします。EF v1.0 がリリースされて以来、劇的に改善されており、私の意見では、nHibernate やその仲間との強力な競争相手です。EF は、Microsoft の多くの将来のデータ イニシアチブでも中心的な役割を果たしているため、以前ほど簡単に無視することはできません。それ、またはそれに依存する .NET 4.0 の上位レベルのフレームワークのいずれかは、CRUD のニーズを十分に満たすはずです。

それはさておき、単純な CRUD アプローチがビジネスの観点から最適であることを確認します。CRUD は技術的な観点から非常に理にかなっており、小規模なアプリケーションでは、通常は正しい選択です。しかし、あなたは「エンタープライズ」という用語を使用していたので、CRUD がうまく機能する単純さよりも広い範囲をアプリケーションが持っているかどうかに興味があります。

従業員の合計が 20 人から 50 人程度の小規模な会社を超えるものであれば、ドメイン駆動設計 (DDD) と SOA を検討します。同時実行管理などが必要な場合は、DDD を駆動するプリンシパルが役に立ちます。SOA は一般に、相互に対話する必要がある複数のプロジェクトに同時に取り組んでいる多くの開発チームがいる非常に大規模なプロジェクトに役立ちます。あなたのニーズにはやり過ぎかもしれませんが、それでも役立つかもしれないいくつかの優れた原則があります。

于 2009-08-25T23:59:34.113 に答える