【问题标题】:Layered Architechture & Encapsulation分层架构和封装
【发布时间】:2012-12-04 08:53:43
【问题描述】:

我正在开发一个项目,最终它将成为一个网络应用程序。但我正在尝试对业务对象和数据访问采用一种分层方法,我在一个空白解决方案中创建了以下类库项目:

MyCompany.MyProject.Repository
MyCompany.MyProject.Model
MyCompany.MyProject.Service

MyCompany.MyProject.Repository 引用了 MyCompany.MyProject.Model MyCompany.MyProject.Service 具有对 MyCompany.MyProject.Model 和 MyCompany.MyProject.Repository 的引用。

我的这个小框架将来会被多个应用程序使用,所以我将它们分别创建到网络应用程序中。

我有两个问题:

  1. 关于应用分层,这种方法是否正确,Web 应用(或任何需要使用我的框架的应用)需要在其 Bin 目录中包含所有三个 DLL - 我理解正确吗? /p>

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

    公开课客户

    私有 _customerID 作为 Int32

    公共属性 CustomerID() As Int32 得到 返回_customerID 结束获取 好友集(ByVal 值 As Int32) _customerID = 价值 结束集 结束属性

    结束类

这是我认为应该暴露客户对象的 ID 的方式,因为设置客户 ID 上的 Friend 访问修饰符应该只能由框架在内部设置,并且只能在外部读取由网络应用程序或将来创建的任何其他应用程序。但是因为我的代码在单独的类库项目中,例如 MyCompany.MyProject.Repository 无法访问它,即使我的命名空间也效仿。

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

非常感谢您的帮助。

谢谢。

【问题讨论】:

    标签: architecture encapsulation layered


    【解决方案1】:

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

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2011-02-07
      • 2022-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多