6

大規模な従来の ASP データベース アプリケーションを ASP.Net に変換する計画の初期段階にあり、使用するデータ アクセス方法を選択するのに苦労しています。Linq To SQL、動的データ、厳密に型指定されたデータセット、エンタープライズ ライブラリ (データ アクセス アプリケーション ブロック)、および Entity Framework を少し試してみましたが、どれも「1 つ」として思い浮かびませんでした。選択肢が多すぎます - 私の頭は泳いでいます、選択を手伝ってください!

おそらく、私が変換しているアプリケーションの背景と優先順位を説明すると役立つでしょう...

  • バックエンドは Microsoft SQL Server (2005 以降) であり、私たちはそれにコミットしているため、別のデータベース プラットフォームのサポートについて心配する必要はありません。

  • データベースは非常に完成度が高く、大量のビジネス ロジックが含まれています。これは高度に正規化されており、ストアド プロシージャ、トリガー、およびビューを広範囲に使用します。同時に 2 つの車輪を再発明したくないので、データベースへの変更はできるだけ少なくしたいと考えています。そのため、データベースの癖に対処できるほど柔軟なデータ アクセス方法を選択する必要があります。

  • このアプリケーションには、多くのデータ入力フォームと広範な検索およびレポート機能があります (レポートは別の獣ですが、後で取り組みます)。

  • アプリケーションは、データベース構造の小さな変更に対応できる柔軟性を備えている必要があります。アプリケーション (およびデータベース) は、データベースに小さなカスタム変更が加えられた別のサイトにインストールされる場合があります。理想的には、アプリケーションがデータベースの拡張機能を識別し、適切に反応することができます。つまり、O/R マッピングをアプリケーションに格納する必要がある場合、アプリケーションとデータベースを新しいサイトにインストールするときに、それを交換 (または簡単に更新) できる必要があります。

  • 迅速なアプリケーション開発が重要です。データベースはすでに完成しており、ユーザー インターフェイスは既存のアプリケーションとほぼ同じになる予定なので、これをすぐに開始できるものを見つけたいと思っています。開発の時間を節約できるのであれば、絶対に最新かつ最高のテクノロジーを使用しないことを犠牲にしても構わないと思っています。言い換えれば、Entity Framework のようなものを使用するのに急な学習曲線がある場合、プロセスが高速化されるのであれば、厳密に型指定されたデータセットやカスタム DAL などを使用しても問題ありません。

  • 私は ASP.Net の初心者ですが、Classic ASP、T-SQL、および古い ADO (切断されたレコードセットなど) には精通しています。データ アクセス方法のいずれかが私のバックグラウンドを持つ人により適している場合は、その方向に傾く可能性があります。

あなたが提供できるアドバイスをありがとう!

4

3 に答える 3

5

このシリーズの3つの記事すべてを見てください。

高性能データアクセス層アーキテクチャパート1

素晴らしいアドバイス。

于 2009-04-23T16:27:38.153 に答える
2

データベースレイヤーをaspレイヤーから分離して、意思決定の柔軟性を高めるだけでなく、顧客のデータベースに変更を加える必要がある場合は、何も変更せずに新しいdllにスワップすることを検討することをお勧めします。そうしないと。

依存性注入を使用することで、xmlを使用して、インターフェイスに使用する具象クラスをフレームワークに指示できます。

これを行うことの利点は、1つのデータベースアプローチを使用できることです。後で別のデータベースに変更する場合は、dllを変更するだけで、他のレイヤーに変更を加えることなく続行できます。

あなたはそれに精通しているので、あなた自身の接続を作って、現時点でデータベースに直接アクセスしてみませんか?次に、残りのコードを移動し、その過程で無数のテクノロジーのどれを使用するかを決定できます。

私が取り組んでいる新しいアプリケーションでは、主に開発が迅速になるため、LINQ to SQLから始めていますが、後で、それが私のニーズを満たさないと判断した場合は、それを交換します。

于 2009-04-23T16:37:44.977 に答える
1

nHibernate が適しているかもしれません。ニーズを解決する外部構成ファイルにマッピングを保存できます。別のオプションとして、nHibernate に基づくActiveRecordを使用することもできます。

nHibernate には便利な機能があります。これは動的プロパティと呼ばれ、基本的には、マッピング ファイルから列名を取得することによって入力される名前と値のペアのコレクションです。したがって、クライアント サイトに列を追加するときに、マッピング ファイルを更新すると、オブジェクトのコレクションを介してデータにアクセスできるようになります。

于 2009-04-23T16:09:04.187 に答える