我正在开发一个项目,最终它将成为一个网络应用程序。但我正在尝试对业务对象和数据访问采用一种分层方法,我在一个空白解决方案中创建了以下类库项目:
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 项目包含我的所有业务对象。关于封装 - 例如我有一个 Customer 对象:
公共类客户
私有 _customerID 作为 Int32
公共属性 CustomerID() As Int32 Get Return _customerID End Get Friend Set(ByVal value As Int32) _customerID = value End Set End Property
结束类
这是我认为应该公开客户对象 ID 的方式,因为设置客户 ID 上的 Friend 访问修饰符应该只能由框架在内部设置,并且只能由 Web 外部读取应用程序或将来创建的任何其他应用程序。但是因为我的代码在单独的类库项目中,例如 MyCompany.MyProject.Repository 无法访问它,即使我的命名空间也效仿。
这似乎不符合我对封装的理解,我在这里做错了什么?
非常感谢您的帮助。
谢谢你。