2

我必须开发一个应用程序(Winforms 应用程序),它连接到企业内联网中的数据库。

由于我想保持应用程序的可扩展性、可维护性和灵活性,我正在考虑应该使用哪种架构。在这方面,我偶然发现了 N-Tier 和 MVC 模式。

据我所知,这两种模式之间的主要区别在于 MVC 具有更三角形的结构(组件可以相互通信),而 3 层应用程序具有直接的结构,其中每个组件 (n) 只能将请求转发到分量 (n+1)。

所以我的想法是采用 3-Tier 方法。“ Presentation Layer,Tier-1”保存表单,“Business Layer,Tier-2”处理Tier-1和Tier-3之间的信息和逻辑,“Data Layer,Tier-3”连接到数据库并使用存储过程。

我的问题是:

这听起来像是一个合理的决定吗?因为我读到如果您计划在不同的机器上运行单个层,N-Tier 是有意义的,我不打算这样做。如果您认为我选择了错误的方法,还有什么更好的主意?

提前致谢。

4

2 回答 2

5

MVC 和 n-tier 是两种不同层次的架构模式,涵盖不同的方面。它们可以同时使用。这不是一个或另一个。

MVC 更像是一种可以应用于表示层的软件架构,其中一个组件是 Windows 窗体。(Windows 窗体是否完全兼容 MVC 是一个单独的讨论。)

N 层架构是一种系统架构(比 MVC 架构更高级别)。决定基本上是您是否有两层(Windows Forms 客户端作为第一层,数据库作为存储过程作为第二层)或三层(Windows Forms 客户端作为第一层,应用程序服务器作为业务逻辑作为第二层,第三层的数据库作为第三层)。甚至更短:客户端会直接连接到数据库还是中间有应用服务器?

似乎给出了存储过程的使用。如果是这种情况,那么它们可能不仅提供数据查询和存储,还提供一些业务逻辑。在这种情况下,我倾向于使用两层。

其他可能相关的因素是:

  • 身份验证:是否可以在数据库中设置所有用户?或者在应用程序服务器上执行此操作并使用单个用户访问数据库会更容易吗?是否需要某种单点登录?

  • 授权:是否可以检查数据库中的所有权限?如果不是,那么创建安全应用程序需要三层吗?

  • 网络架构是否有任何禁止直接访问数据库的限制?

  • 您是否期望有数千个并发用户并希望通过设置多台服务器来扩大规模?

一般来说,我倾向于选择更少的层,因为它更容易实施并且成本更低(初始和维护期间)。额外层的成本需要通过依赖于额外层的要求来证明。

于 2012-07-05T13:23:40.267 回答
4


MVC 和任何其他与 MVC 相关的模式(例如 MVP、MVVM)都是与应用程序的 UI 层相关联的模式。(无论是 Winforms/Web/WPF 还是 UI 框架)。

基本上,这些 UI 模式从 UI 表示相关方面促进了 UI 逻辑的松散耦合。它们具有以下优势:

  • 使用自动化单元测试工具使 UI 逻辑层单元可测试。(无需启动实际的 UI)
  • 由于 UI 和 UI 逻辑组件之间的松散耦合,UI 逻辑类变得更加可重用。(即控制器和模型可以被多个视图使用)
  • 还提供不常用的额外好处,例如能够通过序列化模型等来保存 UI 的状态。

MVC 和 N-Tiered 架构不是两种相反的方法,您需要从中选择一种或另一种。
根据您的要求,您可以混合和匹配它们以适应您的应用程序要求。

例如,您可以选择具有 UI、业务逻辑和数据访问层的整体 3 层解决方案。在此您可以选择以 MVC 样式实现您的 UI 层。

为了进一步澄清,您可以将业务逻辑层作为一组服务公开业务功能,同时与数据访问层进行通信以实现持久性。同时,您的 UI 层上的控制器可以访问这些业务层服务以获取业务功能并构建模型/视图模型以适应视图。
实现可能会有很大不同,这只是一个例子。

基本上这两种模式可以相互补充,提供更好的解决方案。

于 2012-07-05T14:57:13.230 回答