分层建筑及其封装

时间:2012-12-04 08:53:44

标签: architecture encapsulation layered

我正在开发一个项目,最终它将成为一个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应用程序。

我有两个问题:

  1. 关于分层应用是这种方法是正确的,网络应用程序(或任何需要使用我的框架的应用程序)将需要在其Bin目录中拥有所有三个DLL - 我是否正确理解这一点?< / p>

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

    公共类客户

    Private _customerID As Int32

    公共属性CustomerID()As Int32     得到         返回_customerID     结束了     朋友集(ByVal值为Int32)         _customerID = value     结束集 结束财产

    结束班

  3. 这就是我认为应该公开客户对象的ID的方式,因为客户的ID设置客户ID应该只能由框架内部设置,并且只能从外部读取通过网络应用程序或将来创建的任何其他应用程序。但是因为我的代码在单独的类库项目中,所以MyCompany.MyProject.Repository无法访问它,即使我的命名空间也是如此。

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

    非常感谢您的帮助。

    谢谢。

1 个答案:

答案 0 :(得分:0)

您描述的情景相对常见。在这种情况下,我更喜欢使用朋友组件。它们允许访问内部(.net)或朋友(VB)成员。您可以找到有关朋友安排here的更多信息。

希望它有所帮助!