6

大きな古典的なASPデータベースアプリケーションのASP.Netへの変換を計画する初期段階にあり、使用するデータアクセス方法を選択する際に問題があります。私はLinq To SQL、Dynamic Data、強く型付けされたデータセット、エンタープライズライブラリ(データアクセスアプリケーションブロック)、そしてEntity Frameworkの小さなビットを使って遊んだことがありますが、それらのどれも私に "一つ"として飛び出しました。ちょっとあまりにも多くの選択肢があります - 私の頭は水泳です、私が選ぶのを助けてください!データアクセス方法の選択に関する助言が必要

おそらくそれは

  • は、バックエンドは、Microsoft SQL Serverの(2005以降)であり、我々は、にコミットしている...私は優先順位に合わせて変換していたアプリケーションのいくつかの背景を与えるために役立つだろうそれで、別のデータベースプラットフォームをサポートすることを心配する必要はありません。

  • データベースは非常に成熟しており、多くのビジネスロジックが含まれています。これは高度に正規化されており、ストアド・プロシージャ、トリガー、およびビューを幅広く使用します。私はむしろ2つの車輪を同時に改革したくないので、できるだけデータベースを少し変更したいと思っています。ですから、私はデータベース内のどのような癖にも対応できる柔軟性のあるデータアクセス方法を選択する必要があります。

  • アプリケーションには、多くのデータ入力フォームと広範な検索とレポート機能があります(レポートは後で取り上げるもう1つの獣です)。

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

  • 迅速なアプリケーション開発が重要です。データベースはすでに完了しており、ユーザーインターフェイスは既存のアプリケーションと密接にマッチしているので、私はこれをかなり迅速に実行できる場所を見つけることを望んでいます。私はそれが開発に時間を節約するならば、絶対最新かつ最高の技術を使わずに犠牲にして喜んでいます。言い換えれば、Entity Frameworkのようなものを使用するのに熟練した学習曲線があれば、強く型付けされたDatasetsやカスタムDALなどの処理を高速化すればいいと思います。

  • 私はASP.Netの初心者ですが、Classic ASP、T-SQL、古いADO(例:切断されたレコードセット)に精通しています。データアクセス方法のいずれかが私のバックグラウンドから来る人に適している場合、私はその方向に傾くかもしれません。

ご提供いただけるアドバイスありがとうございます!

答えて

1

nHibernateは適切かもしれません。あなたのニーズを解決する外部構成ファイルにマッピングを格納することができます。別のオプションは、ActiveRecordを使用している可能性があります。これはnHibernateに基づいています。

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

+0

同じことをする方法がたくさんあるので、1つのツールが他のツール(つまりどちらのツールをいつ使用するのか)に適しているかどうか確認したいと思いますか?いくつかのパラメータ(例えば、学習曲線、メンテナンス、シンプル、コミュニティサポートなど)に関するツールの評価と一緒に – shahkalpesh

+0

私はnHibernateが非常に強力だと聞いたことがありますが、学習曲線がかなり険しいので、正しい方法。残念ながら、私たちはそのような時間がありません。 – CowherPower

+0

あなたはどれくらい時間がありますか?私の最初のオブジェクトグラフ3をどのようにしてマッピングするかを理解するのに数日かかりました。私はあなたがチームを持っているように、1の開発者です。 – JoshBerke

5

ルック:

High Performance Data Access Layer Architecture Part 1

素晴らしいアドバイス。

+0

ありがとう、それは非常に興味深い記事シリーズでした。自分でDALを作成することに決めたら、この方法を使うことができます。しかし、私はVBで変換する必要があります。なぜなら、私はC#をよく理解していないからです。 – CowherPower

+0

そのほとんどは簡単に変換します。特に、Reflectorのようなツールを使用してバイナリをVB.Netに逆アセンブルする場合は特にそうです。 また、あなたのプレゼンテーションレイヤーがvb.netのDALであっても、あなたのソリューションでは、DTOとビジネスレイヤーをC#にすることができます。 –

+0

私はまた、あなたのためにVB.netにC#を変換するこのクールなサイトを発見しました。それはかなりうまくいくようです:http://www.developerfusion.com/tools/convert/csharp-to-vb/ – CowherPower

2

データベースレイヤをaspレイヤから切り離して、意思決定に柔軟性を与えるだけでなく、顧客のデータベースに変更を加える必要がある場合は、新しいdllは何も変更せずに。

依存性注入を使用することによって、xmlを使用して、フレームワークにインターフェイスに使用する具体的なクラスを伝えることができます。

これを行うメリットは、1つのデータベースアプローチを使用できることです。後で別のデータベースに変更する場合は、dllを変更して他のレイヤーに変更を加えることなくそのまま使用できます。

あなたはそれに精通しているので、自分の接続を作成することで、今すぐデータベースに直接移動するのはなぜですか?その後、コードの残りの部分を移動して、使用するテクノロジの数を決めることができます。

私はLINQ to SQLを使い始めていますが、主に開発が速くなるためですが、後で自分のニーズを満たしていないと判断した場合、私はそれを取り替えます。

+0

「なぜデータベースに直接行かないの?」と言えば、SQLDataSourceやデータセットは直接ですか?私はそれに反対しているわけではありませんが、新しいテクノロジーが「直接」方法を時代遅れにしていない場合(または愚かな選択)、そのルートに行きたくはありません。 – CowherPower

+1

このURLはパフォーマンス面で興味深いかもしれません: http://toomanylayers.blogspot.com/2009/01/entity-framework-and-linq-to-sql.html DataReaderはおそらく役に立つ選択です。 私は直接ルートは時代遅れだとは思わないし、開発をスピードアップするなら、後でメンテナンスするために変更したいかもしれない。 –

+1

興味深い記事。私はすでにEntity Frameworkを使用していることに賛成していました。 – CowherPower

関連する問題