【问题标题】:Deciding the number of tiers in an n-tiered application确定 n 层应用程序中的层数
【发布时间】:2012-04-04 22:24:26
【问题描述】:

我正在开发一个基于 Web 的应用程序,其主要目标是从数据库中获取数据,将其显示在 UI 上,接收用户输入并将它们写回数据库。该应用程序不会进行任何工业强度算法运算,但会在高峰时间(如下所述)接收大量点击,这将在一天中发生变化......

这些层是您典型的演示、业务、数据。数据层由数据库服务器负责。业务层将包含 DAL 组件以通过 tcp 访问数据库服务器。我必须将这些层分成几层的选择是:

  1. 表示层和业务层可以保持相同 层。

  2. 表示层本身和业务在一个单独的层上 层单独放在一个单独的层上。

在选择 2 的情况下,表示层将使用 WCF 服务通过 http 或 tcp 访问业务层。

我没有看到在业务层上进行任何繁重的处理,所以我倾向于上面的选项 1。我也觉得出于同样的原因,添加新层只会引入网络延迟。但是,就可扩展性而言,如果我需要扩大或扩大规模,哪种方式更好?该应用程序需要每小时能够支持多达 600 万用户。每个用户会话中都会有合理数量的数据,存储用户的偏好和其他详细信息。我也将使用页面级缓存..

感谢您的宝贵时间...

【问题讨论】:

    标签: .net n-tier-architecture


    【解决方案1】:

    在谈论简单的 CRUD Web 应用程序时,我真的不喜欢“n-tier-architecture”这个术语。选择像 MVC 这样的设计模式,然后去做。完全忘记层级。

    您的应用程序不够大或不够流行,不足以担心单独扩展各个组件。很可能,您的应用程序将成为单个 VS 解决方案(甚至可能是项目中的单个应用程序)。如果我所说的任何内容似乎有点刻薄,我深表歉意,但我几乎将我在同一个桶中构建的所有内容都计算在内。另外,如果我所说的任何内容在您的特定项目中完全不正确,我再次道歉,并谦虚地接受反对票。听起来你真的想多了。构建它并查看。

    您正在构建一个具有输入、显示和数据访问功能的网站。启动一个新的 ASP.NET MVC 解决方案,然后去城里。

    【讨论】:

    • 嗨 Josh,我更新了我的问题...无需道歉 :) 我只是想就为什么我应该在不同的服务器上真正拥有一个“应用程序层”提出另一种意见...跨度>
    • @user20358 我的答案保持不变。想想stackoverflow是如何构建的。您预计会有类似的流量吗?你从哪里获得每小时 600 万的用户?使用更多服务器而不是更多组件进行扩展。使用像 redis 这样的缓存。在某些情况下,您可能需要 n 层,例如集成不同的组件。但如果你从头开始构建所有东西,我认为这不太可能。
    • 是的,如果不是更多的话,我也期待类似的情况......无需过多介绍有关应用程序的细节(我已为此项目签署了保密协议)该数字是由客户。虽然它是一个具有合理数量的业务层处理的 crud 应用程序,但同时也不是太密集..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多