私はプロジェクトを開発していますが、最終的には Web アプリになります。しかし、私はビジネス オブジェクトとデータ アクセスのための一種の階層化されたアプローチに従おうとしています。単一の空のソリューションで次のクラス ライブラリ プロジェクトを作成しました。
MyCompany.MyProject.Repository
MyCompany.MyProject.Model
MyCompany.MyProject.Service
MyCompany.MyProject.Repository には MyCompany.MyProject.Model への参照があります。 MyCompany.MyProject.Service には MyCompany.MyProject.Model および MyCompany.MyProject.Repository への参照があります。
私のこの小さなフレームワークは、将来複数のアプリケーションで使用される予定なので、Web アプリケーションに対して個別に作成しています。
2 つの質問があります。
アプリのレイヤー化に関しては、このアプローチは正しいです.Webアプリ(または私のフレームワークを使用する必要があるアプリ)は、3つのDLLすべてをBinディレクトリに持つ必要があります-これを正しく理解していますか?
MyCompany.MyProject.Model プロジェクトは、すべてのビジネス オブジェクトを保持しています。カプセル化に関して - たとえば、 Customer オブジェクトがあります。
一般クラスのお客様
Int32 としてのプライベート _customerID
Public Property CustomerID() As Int32 Get Return _customerID End Get Friend Set(ByVal value As Int32) _customerID = value End Set End プロパティ
クラス終了
これは、顧客オブジェクトの ID を公開する必要があると私が考える方法です。Set の Friend アクセス修飾子により、顧客の ID はフレームワークによって内部的にのみ設定され、Web によって外部からのみ読み取られる必要があります。アプリまたは将来作成されるその他のアプリ。しかし、私のコードは別のクラス ライブラリ プロジェクトにあるため、たとえば MyCompany.MyProject.Repository は、私の名前空間が追随していてもアクセスできません。
これは、カプセル化に関する私の理解に合わないようです。ここで何が間違っていますか?
あなたの助けに感謝します。
ありがとうございました。