10

Microsoft からは、データ アクセス用に非常に多くのさまざまなオプションが提供されています。スケーラブルなアプリに最適なのはどれですか?

リンク

Linq を使用する必要がありますか? 確かに簡単に思えますが、SQL が機能することを知っていれば、非常に役立ちます。また、Linq を使用して ASP.NET で非同期クエリを実行できないと聞いています。したがって、本当にスケーラブルなのだろうか?Linq を使用している非常に大きなサイトはありますか (stackoverflow は例外となる可能性があります)。

エンティティ フレームワーク

Entity Framework についての熱狂的な声はあまり聞かないでください。私が慣れ親しんでいるオブジェクトモデルに近いようです。

アストリア/動的データ

データをサービスとして公開する必要がありますか?

NHibernate のような他の ORM 製品に入る前に、私はかなり混乱しています。どちらが優れているかについてのアイデアや知恵はありますか?

4

9 に答える 9

17

NHibernateまたはEntityFrameworkのいずれかをお勧めします。大規模なサイトでは、ADO.NETDataServicesを使用します。LINQtoSQLでは大きなことは何もしません。Stack Overflowは、3層ではなく2層の興味深いスケールの問題を引き起こす可能性があると思います。また、データベースの物理的な側面が変化し、それらの変化がコード全体に波及するため、リファクタリングにも問題が発生します。ちょっとした考え。

于 2008-09-16T04:06:34.280 に答える
15

ADO.Net Data Services (以前は Astoria と呼ばれていました) には大きな役割があると思います。Web の REST スタイル アーキテクチャにうまく適合します。

Web はスケーラブルなので、そのアーキテクチャに従うものはすべてスケーラブルだと思います..また、SQL Server Data Services に目を光らせておくことをお勧めします..

于 2008-09-15T23:10:56.440 に答える
4

ストアドプロシージャに固定することは、最近の考え方の衰退のように思われます。少なくとも、それが私の現在の観察です。そのような考え方は、通常、テーブルに対して直接対抗する方がより感情的であるため、ORMの世界に役立ちますが、その価値のあるORMであれば、procを使用することもできます。選択の余地がない場合もあります。

EFについては多くの意見があり、良いか悪いかにかかわらず、これはV1製品であり、経験則では、MSが正しく動作するまでに約3回転かかるため、次の回転を待つのが賢明かもしれません。少しでも。

この分野で最大のプレーヤーはNHibernateであり、コミュニティではこれに対する多くのサポートがあります。言語機能であるLinqは、NHibernateスタックに到達するまでにそれほど遠くないはずです。

于 2008-09-17T04:34:47.637 に答える
4

リレーショナル データベースについて話しているのであれば、他のレイヤーからアクセスする方法に関係なく、すべてのデータ操作をストアド プロシージャにカプセル化することに賛成です。

ストアド プロシージャ以外のデータベースへの読み取り/書き込みアクセスをすべて無効にすると、明確に定義されたコントラクトの背後にデータ モデルを隠すことができます。データ モデルは自由に変更できるため、ストアド プロシージャは引き続き入力と出力を尊重します。

これにより、DBA は完全に自由にアプリケーションを調整し、スケーリングすることができます。SQL がデータベース外部のツールによって生成されている場合、これは非常に困難な作業です。

于 2008-09-15T23:14:01.537 に答える
1

私はlinqをお勧めします。それは私たちのサイトで適切にスケーリングされ、使用するのに十分簡単です.

于 2008-09-16T00:17:00.043 に答える
1

LINQ でストアド プロシージャを使用しますが、sproc をデータ アクセス レイヤーに変えないでください。

于 2008-09-16T00:25:21.397 に答える
1

あなたに合ったものを使用してください。これらはすべて、十分に正規化されたデータベース (主キーと外部キーの適切な定義) が既にある場合に設定するのが最も簡単です。ただし、簡単に正規化できないデータがある場合、Entity Framework は LINQ to SQL よりも柔軟ですが、構成にはより多くの作業が必要です。

于 2008-09-15T23:11:30.637 に答える
1

クラスター化された環境で LINQ を実験してきましたが、個々のマシンとクラスター全体で適切にスケーリングされているようです。あなたが提供した 3 つのオプションのうち、LINQ がより良い選択であると言えますが、各オプションにはわずかに異なるターゲット ユーザーがいるため、アクセス パラダイムを決定する前に、データで何をするかを定義する必要があります。

于 2008-09-15T23:13:27.620 に答える