.net - 我应该选择 N 层架构而不是 MVC 吗?

标签 .net winforms design-patterns architecture

<分区>

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

因为我想保持应用程序的可扩展性、可维护性和灵 active ,所以我正在考虑应该使用哪种架构。 在这方面,我偶然发现了 N 层和 MVC 模式。

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

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

我的问题是:

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

提前致谢。

最佳答案

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

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

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

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

其他可能相关的因素是:

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

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

  • 是否有网络架构限制不能直接访问数据库?

  • 您是否期望有数千个并发用户并希望通过设置多台服务器进行扩展?

一般来说,我倾向于选择较少的层级,因为它更容易实现并且成本更低(最初和维护期间)。额外层的成本需要根据依赖于额外层的要求来证明是合理的。

关于.net - 我应该选择 N 层架构而不是 MVC 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11344326/

相关文章:

c# - F# 列表到 C# IEnumerable : most efficient method?

c# - 从另一个线程更新列表框后,如何强制主GUI线程更新列表框?

c# - 根据 ListView 项过滤字符串集合

c++ - getinstance() 在单例中到底做了什么?

java - 没有Factory如何调用DAO?

c# - 计算硬盘吞吐量

c# - 在 C# 中内联使用返回多个值的函数

c# - 是什么导致设计器中并非每个事件都可用,我如何才能像在 VB.NET 中一样在 C# 中快速生成处理程序?

java - JPA 将属性存储为行

.net - 防止 <xsi :nil ="true"> on Nullable Value Types when Serializing to XML