私が作成した新しい Web アプリケーションには、2.5 層の設計が最適であることがわかりました。通常、2 つのクラス ライブラリと 1 つの Web アプリケーションから始めます。
Company.Data
(クラス ライブラリ)
Company.Web
(クラス ライブラリ) ( PageBase
、カスタム コントロール、ヘルパー関数などを含む)
Company.Web.WebApplication
(ウェブアプリケーション)
私が作成したアプリケーションでは、ストアド プロシージャのみを使用してデータにアクセスします。実際、CodeSmith テンプレートを作成して、すべてのストアド プロシージャ、データ、およびビジネス クラスを生成しました。
Company.Data
このアセンブリは、主にエンティティ データ クラスとコレクションで構成されます。たとえば、通常Settings
、Web アプリケーションで呼び出されるテーブルがあります。Setting
と呼ばれるクラスSettingCollection
が生成されます。
したがって、特定の設定をロードする必要がある場合は、これを行うことができます..
Dim setting As New Setting(1) 'pass in the id of the specific setting
setting.Value = "False" 'change the value
setting.Save() ' Call the save method to persist changes back to the database
または、新しい設定を作成するために、コンストラクターに値を渡さないだけです
Dim setting as New Setting()
setting.Name = "SmtpServer"
setting.Value = "localhost"
setting.Save()
アセンブリ内の私の名前空間はCompany.Data
通常、次のようになります..
Company.Data.Entites
Company.Data.Collections
Company.Data.BusinessObjects
(この名前空間は、データにアクセスするためのカスタム メソッドを作成するために使用されます)
また、主キー、外部キー、および一意のインデックスに基づいてカスタム メソッドを生成します。
たとえば、設定テーブルの名前列には一意のインデックスがあります。呼び出される共有メソッド GetSettingByName
が自動的に生成され、これが設定オブジェクトを返します。このメソッドはCompany.Data.BusinessObjects
名前空間にあります
エンティティ クラスとビジネス オブジェクト クラスの場合、2 つのファイルが生成されます。1 つは毎回生成され、1 つは編集可能で初回のみ生成されます。部分クラスを使用して、上書きせずにカスタム コードを追加できるようにします。
私にとって、この方法論は非常にうまく機能しています。Codesmith の生成により、数え切れないほどのコーディング時間を節約できます。テーブルに 5 つの新しい列を追加し、すべての新しいコードを数秒で再生成できます。ストアド プロシージャは削除され、再作成されます。
私のアプリケーションは 1 つのデータベースのみを使用し、それが Sql Server であるため、2.5 層の設計はうまく機能します。将来、access、oracle、mysql を使用する必要はありません。