2012-05-09 14 views
0

Linq to Sqlの上にリポジトリパターンの実装を作成するのは、中規模の一般公開されたWebアプリケーションのための良い設計ですか?アプリは、SQLで扱うLinq to sql with medium size web application

は、バックエンドを切断し、それがきちんとDALだから、それは

私は本当にLINQ2SQLのような急速な発展が必要です。私はEFを考えましたが、このプロジェクトにはあまりにも多くのことがあります。

多くの提案に感謝します。

+0

問題は何ですか?可能な答えはありません。 – usr

+0

Linq to Sqlの上にリポジトリパターンの実装を作成するのは、中規模の一般公開されたWebアプリケーションのための良い設計ですか? – Sev

答えて

2

リポジトリパターンが由来するDDDの大きな教義は、その寿命にわたって「容易に」進化することができるアプリケーションを作成することです。将来的にLinq2Sqlがニーズに合っていないか、Linq2SqlがEFに賛成するなど、技術が廃止された可能性が高いことがわかります。リポジトリパターンを使用すると、強固で、よく知られた概念を抽象的に表現する。実際の実装は、さまざまなアプリケーション機能から隠されているため、必要に応じて将来的にそれらを交換することができます。

リポジトリを使用するコンポーネントを環境とは独立して使用できるようにするなど、他の利点もあります。リポジトリを使用するコンポーネントがあるとしたら、サービスでこのコンポーネントを使用して夜間のジョブを実行できる必要があることがわかります。同じコードを使用するサービスを作成できますが、データベースではなくWebサービスと対話するリポジトリの実装を使用します。コードを一度書いただけで、いくつかのスイッチを反転させただけです。

もう一つの大きな理由は単体テストです。 ORMまたは永続性APIが機能することを単体テストする必要はありません。そうでない場合は、永続性と相互作用するアプリケーションが期待通りに機能することをユニットテストする必要があります。

だから、いいデザインだと思います。

+0

ありがとうございます。 – Sev

+0

ORマッパーを何回交換するのですか?それは決して起こらない。そしてもしそうなら(それは非常にありそうもない)、とにかくアプリ全体を見直して再テストする必要があります。 ORMを抽象化することは、非常に高い価格を支払うことによって、非常に低いコストに対して警戒することです。 – usr

+0

あなたはormsをswopし、あなたはそれを抽象化してormの多くの機能を失うことはほとんどありません。orm以外のデータ・アクセスを抽象化したいとします。 – Chev

2

コメントにあなたの質問に答えてください:このようなリポジトリはあなたに何を与えるでしょうか? L2Sはすでに「リポジトリ」です。答えはノーと思われます。

ORマッパーを何回交換するのですか?それは決して起こらない。そしてもしそうなら(それは非常にありそうもない)、とにかくアプリ全体を見直して再テストする必要があります。 ORMを抽象化することは、常に非常に高い価格を支払うことによって、非常に低いコストに対して警戒することです。良い取引ではありません。

+0

Linq2Sqlはデータアクセス層と呼ばれます。だから、リポジトリを持っているということはありませんか?生成されたLINQスクリプトの外でカスタムメソッドを使用したいのですが? – Sev

+1

あなたは絶対にそれらの方法を持つこともできます。 「リポジトリ」という用語は明確に定義されていません。異なる人は、異なることを意味します。私は編集、btwを作った。 – usr

1

EFではなくv4.1以降を使用し、リポジトリパターンをスキップする - 常にdbにアクセスし、ms SQLに常にアクセスしています。

+0

はるかに大きなアプリケーションではEFではなく、複数のバックエンド(SQL Serverだけでなく)を扱うときに使用されますか? – Sev

+0

いいえ、まったくありません。 EFは本当に、ちょうど置換えであり、linq2sqlをもう使用する必要はありません。 – Chev