我对三层架构有一些疑问。

  1. 如何正确地在三层体系结构中实现应用程序?
  2. 如何在这些层之间进行交流?
  3. 数据层完全等于DBM吗? (在情况下,如果我们使用存储过程以及在情况下使用对象关系映射框架,该怎么样?)

期待听到您的答案。谢谢。


PS:请不要理解我在问一个一般问题。好 ?我正在问如何正确设计大型应用程序。什么是最好的方法?。没想到有loooong的答案。

有帮助吗?

解决方案

这些是广泛的答案,我会尽力为您提供一些指示。

  1. “正确”是一个主观的术语。一般而言,我认为最重要的是将层保持在自己的模块中(例如,其自身的DLL),并具有进出模块的接口。通过在每一层中使用接口,您可以将定义与实现分开,从而进一步将层彼此解耦。如果该层中有一个入口点,并且基于接口,则可以根据需要进行几个基础实现。在另一个方向上,如果您将接口作为回调,则图层客户端(即其他层)只需要实现接口即可在层之间获得良好的流量。

  2. 这取决于您如何实现层本身。如果您像我上面建议的那样设计图层,则只需使用接口即可进入层。另一个解决方案可能是使用事件调度程序使其异步变为异步 - 一层只需触发事件,另一层会聆听此事件并在其上采取行动。这完全取决于项目的特定要求。

  3. 不,数据层是与DBMS交互的应用程序中的层。使用ORM只是一种实现数据层的方法,而使用存储过程是一种方法,是一种出于多种原因将某些逻辑从应用程序从应用程序移动到DBMS本身的方法。

我想您会收到几个答案;您应该考虑所有这些内容,在网上进行一些阅读,并进行一些试验,直到找到自己喜欢的东西为止。

其他提示

  1. 这三个层是演示,业务逻辑和数据。确保您不要混合担忧。 UI不应包含任何业务逻辑等等。

  2. 任何层都应仅了解下面的层。对于前。 UI仅应与业务逻辑进行通信,并且对数据层不了解。永远实现这一目标 代码到接口而不是具体实现. 。利用 依赖注射 保持模块松散耦合。

  3. 这取决于您选择如何实施它。从...开始 Yagni 主要的。只有在您真正需要的情况下,请尽可能简单地开始并使用诸如ORM之类的东西。

这个主题太广泛,无法在所需的深度中正确回答这个问题。也就是说:

  1. 一个关键项目是正确限制层之间的依赖项,以便每层仅知道“下面”的图层。例如,业务层不知道演示层。

  2. 3层体系结构对这些层之间如何相互通信没有规定。业务(层)功能经常被视为由演示层消耗的Web服务。

  3. 数据层并不完全等于数据库。您将始终需要一些代码与数据存储(例如ORM)进行交互。该代码应具有自己的模块,以最大程度地减少耦合。

这取决于许多因素。我会考虑使用repositiry模式为您的数据访问层(DAL)。理想情况下,这将与对象关系映射器(ORM)(如实体框架4或NHIBERNATE)结合使用。然后,我将拥有一个包含业务规则和服务的单独域层。您的域层将在UI和DAL之间提供服务请求。对于您的UI,您可以选择Web表单或MVC方法。两者仍将在三层层中工作,但是您会从MVC中获得更好的关注点。当您想进行一些单元测试时,这很好。以上是一些良好的链接。

http://daveswersky.com/2010/05/26/entity-framework-4-then-and-now/

http://channel9.msdn.com/blogs/matthijs/aspnet-mvc-2-basics-indroduction-by-scott-hanselman

http://www.asp.net/mvc/tutorials/mvc-music-store-part-1

三层体系结构是一个概念,而不是逐步的教学。保持简单和孤立。如果您正在使用数据存储和检索,请将其放在数据层中。有逻辑时,将其放在逻辑/中层中。主题/皮肤,视图,小部件占位符进入演示层。

研究其他代码。一个好的起点是 单轨.

阅读大量文档,您知道别人做的事情越多。

最重要的是,玩得开心。如果您感到不知所措或事情变得越来越复杂,请退后一步,找出错误的地方。

在3层体系结构中实现应用程序的最佳方法是使用使用MVC的语言框架。对于PHP,我推荐Codeigniter http://codeigniter.com/

通常,如果您跟随OOP,则会在三个级别之间传递对象的传递。好吧,主要是两个。控件获取请求,询问模型(DB)并获取返回对象,使用其属性和方法显示视图。

在CI中遵循一些教程。您将了解MVC中发生的事情。

三层体系结构中有三层,包括演示层,业务逻辑层和数据访问层。除这三个外,我们还可以使用业务对象层实现可以使用数据库映射我们的对象的属性类,也可以使用实体框架。

演示层: 这是用户执行活动的应用程序的最高层。让我们以用户需要填写表格的任何应用程序的示例。这种形式不过是演示层。在Windows应用程序中,Windows表单是演示层,在Web应用程序中,Web表单属于演示层。基本上,用户的输入验证和规则处理是在此层中完成的。

业务层: 这在演示层的顶部。顾名思义,大多数业务运营都在此处执行。例如,在收集表单数据之后,我们希望使用我们的自定义业务规则来验证它们。基本上,我们在此层定义了类和业务实体。

数据访问层: 在业务逻辑层的顶部是数据访问层。它包含帮助业务层与数据库连接并执行CRUD操作的方法。通常,所有与数据库相关的代码和内容都属于数据访问层。有时,人们使用独立于平台的数据访问层来获取各种数据库供应商的数据。

更多详细信息 - https://www.c-sharpcorner.com/uploadfile/dacca2/understand-3-tier-architecture-in-c-sharp-net/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top