我正在使用mvc.net 4创建一个网站,它将通过实体框架6连接到数据库。
我一直在关注
他们建议将应用程序拆分为数据层,业务实体,业务逻辑和Web应用程序。
现在,由于我正在制作一个更简单的应用程序,我希望简化制作4个项目,而是创建一个名为“Business”的数据和业务逻辑层,在这种情况下连接到数据库并通过API公开数据。将位于“业务”层,该层将包含其他3个(业务逻辑,业务实体和数据层)。
令我烦恼的是,实体框架会将实体生成为公共实体,因此这是一个明显的问题,因为我希望它能够隐藏在网络应用程序之外。
我应该将所有实体设为私有还是在EF6生成的实体和“业务”层之间创建项目?
答案 0 :(得分:3)
我相信你对关注点的设计和分离与类上的访问修饰符有点混淆。
要退一步并获得高级概述,请先查看典型的应用程序结构。
考虑到这一点,您提到您正在使用Entity Framework。实体框架是一个ORM,它将您的对象映射到不兼容的关系类型,在对象中创建一种"数据库" (或者"虚拟对象数据库"正如维基百科所说的那样)。这里要记住的一件事是,EF就是您在系统中管理数据对象的方式。它在许多方面使生活更轻松,但它不是实际的数据。课程是" public"是实体框架的要求,是的,但这并不意味着您需要允许在项目的其他部分访问或使用这些数据对象(尽管有一点需要注意,我将在稍后介绍)。
因此,此时,您可以创建一个可能如下所示的应用程序:
我之前的警告 - 请注意下一层确实需要知道关于它下面的图层。如果您从逻辑上考虑这个问题,如果没有数据可以构建,您将如何创建业务层?但是,视图层不应直接直接触及您的数据对象,您的业务逻辑应该(通常)不使用数据对象来做出业务决策。在层之间移动有一种转换步骤。
如果这一切都清楚了,那么,回到你的要求。你分出多少或者不分层,这对设计师来说真的很重要。我已经看到数据层直接与业务逻辑位于同一个项目中 - 特别是如果没有真正的业务逻辑。哎呀,我看到一个非常简单的应用程序将所有内容都放在一个WebApp项目中。你必须仔细思考你的项目目前需要什么,以及如果你以某种方式设计事物会带来什么好处和不利。
要考虑的一些事情:
这类设计还有很多其他文章。我建议点击谷歌阅读更多内容。希望这能澄清一些事情!