是否值得为小型(ish)应用程序使用 3 层架构
Posted
技术标签:
【中文标题】是否值得为小型(ish)应用程序使用 3 层架构【英文标题】:Is it worth using 3-tier architecture for small(ish) applications 【发布时间】:2010-10-05 18:38:23 【问题描述】:我正在开发一个相对较小的 asp.net Web 应用程序,我想知道是否真的需要采用完整的 n 层架构。对于大小的想法;大约有20个数据库表。
在过去,我使用 2 层方法,将业务逻辑和数据访问组合到一个类库中,其中一个 asp.net Web 应用程序形成 UI 层,这似乎工作正常。
是否有一个阈值大小或一些经验法则,您应该在哪里使用 n 层?
【问题讨论】:
【参考方案1】:它现在可能相对较小,但您认为它将来会增长吗?当然,您必须务实,但是如果您已经在单个程序集中自然地分离了关注点,那么将其拆分为两个或多个程序集是相当容易的。如果这些类本身结合了业务逻辑和数据访问,那么您将有更多的工作要做。但是,我认为在一个程序集中编写数据访问逻辑并在另一个程序集中编写业务逻辑(如果需要的话)几乎没有什么工作比一开始就将它们全部编写在一个地方。
【讨论】:
【参考方案2】:如果您预计会有任何形式的增长或变化,现在加强明确的层级会有所帮助。但是,如果这是您自己的项目,并且您不介意支付更改或紧密集成代码的成本,那么只需像一层一样破解它。
一切都与未来的成本有关。目前,随用随编程是迄今为止最便宜的,但不能很好地响应变化。使用层规划会产生前期成本,但它可以比第一种方法更好地处理更改和剥离整个层的实现。
因此,您的经验法则取决于谁将支付更改费用以及何时支付。
【讨论】:
【参考方案3】:是的,这是值得的。您提出的是一起破解解决方案。我无法告诉你这给我带来了多少次痛苦和折磨。硬币的另一面是过度构建他们的解决方案的天文学开发人员。你也想避免这种情况。
简单点,构建你的三层,我建议你试试 LINQ to SQL,它让构建 DAL 变得轻而易举,然后你可以专注于构建一个纤薄的 UI,以及一个可以处理繁重工作的 BLL。这样做不会花费您太多时间,并且以后可以进行单元测试。
【讨论】:
【参考方案4】:是否有阈值大小或某些规则 你应该雇用的拇指 n 层?
我不知道,但我会扔掉它:如果这个网络应用程序有可能增长(或更改后端)和/或其他人可能最终维护它,我会考虑去采用 n 层方法。
【讨论】:
【参考方案5】:只要让它成为可能。现在可能有点矫枉过正,但不要把自己写进不可能的情况。与从头开始重建相比,大规模重构需要更长的时间(很可能就是这样,从头开始重建)。
我参与的最后一个项目(来晚了)的编写方式几乎不可能打破层级。数据逻辑与业务逻辑交织,与表示逻辑交织。在短期内,它和以往一样好,因为修复它需要几个月的时间。
将所有内容分开并不难,所以就像我之前说的,保持可能。
【讨论】:
以上是关于是否值得为小型(ish)应用程序使用 3 层架构的主要内容,如果未能解决你的问题,请参考以下文章