Architecture 分层架构与封装

Architecture 分层架构与封装,architecture,encapsulation,layered,Architecture,Encapsulation,Layered,我正在开发一个项目,最终它将是一个web应用程序。但我尝试采用一种分层的方法来访问业务对象和数据,我在一个空白的解决方案中创建了以下类库项目: MyCompany.MyProject.Repository MyCompany.MyProject.Model MyCompany.MyProject.Service MyCompany.MyProject.Repository具有对MyCompany.MyProject.Model的引用 MyCompany.MyProject.Service引用了

我正在开发一个项目,最终它将是一个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应用程序中创建它们

我有两个问题:

关于应用程序分层,这种方法是否正确,web应用程序或任何需要使用我的框架的应用程序都需要在其Bin目录中包含所有三个DLL-我是否正确理解这一点

MyCompany.MyProject.Model项目包含我的所有业务对象。关于封装-例如,我有一个客户对象:

公共类客户

私有\u客户ID为Int32

公共属性CustomerID为Int32 收到 返回\u客户ID 结束 Friend SetByVal值为Int32 _customerID=值 端集 端属性

末级

这是我认为应该公开客户对象ID的方式,因为集合上的Friend access修饰符,客户ID应该只能由框架在内部设置,并且只能由web应用程序或将来创建的任何其他应用程序在外部读取。但是,因为我的代码位于不同的类库项目中,例如MyCompany.MyProject.Repository就无法访问它,即使我的名称空间也一样

这似乎不符合我对封装的理解,我在这里做错了什么

非常感谢你的帮助


谢谢。

您描述的场景比较常见。在这种情况下,我更喜欢使用朋友程序集。它们允许访问内部.net或朋友VB成员。您可以找到有关好友示例的更多信息

希望有帮助