【问题标题】:Understand architecture of MVC application了解 MVC 应用程序的架构
【发布时间】:2012-01-18 06:42:30
【问题描述】:

有很多文章可以解释 MVC 应用程序的架构设计,有些包含业务层、领域层等。

我想知道每个术语以及该层内应该包含什么?

Presentation.Web : MVC 应用程序放在这里
Business.Domain : ??
Infrastructure.Data : ??

应该有哪些其他层以及如何使用这些层来创建 MVC 应用程序的理想架构?

【问题讨论】:

    标签: asp.net-mvc-3 n-tier-architecture


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      我将尝试以技术中立的格式解释它:

      mvc 是模型、视图、控制器的缩写。

      =============================================

      模特不是走下楼梯炫耀时髦衣服的女孩/男孩。 但它是一个包含有价值的属性(数据)的对象

      例如: 在 RPG(角色扮演游戏)中,每个角色都有统计数据,例如 生命值、魔法、攻击、防御、闪避、准确性等。

      这些统计数据在类中称为属性。 Character 充当包含所有这些属性的类。

      =============================================

      现在,谈论视图, 视图是显示特定模型的东西。

      例如: 我们有一个显示总生命值和当前生命值的生命值条。

      有些人可能有兴趣看到代表健康的心形 而不是红条。

      开发人员开始创建另一个不同的视图,但仍使用相同的模型。这是在谈论可重用性!

      您正在重用同一个模型以多种方式显示其属性!

      =============================================

      对于控制器,它是定义业务逻辑的地方。 业务逻辑(或也称为编码的“有趣”部分) 是您定义一些代码来操作属性的地方 模型并将它们发送到视图。

      例如: 所以让我们假设英雄有完整的生命值, 敌人攻击他...

      控制器(有权访问模型)操纵您的 角色生命值通过受到的总伤害减去当前生命值 来自敌人的攻击。

      当你的角色喝下健康药水时, 控制器会增加你的角色当前的生命值。

      ===========================================

      对于交流部分, 操纵模型的控制器, 可以告知视图所做的更改, 以便视图将显示您角色的最新更改。

      或者

      只要属性发生变化,模型就会调度事件, 以及当前订阅模型的视图, 然后将采取必要的措施来使用当前的视图更新视图 被操纵的财产。

      你也可以看看这个link

      【讨论】:

        【解决方案3】:

        以下可能解释:

        MVC 架构

        MVC 架构的主要目的是将业务逻辑和应用程序数据从呈现数据中分离给用户。

        以下是我们应该使用 MVC 设计模式的原因。

        它们是可重复使用的:当问题再次出现时,无需发明新的解决方案,我们只需要遵循模式并根据需要进行调整即可。 它们具有表现力:通过使用 MVC 设计模式,我们的应用程序变得更具表现力。

        1)。模型:模型对象知道所有需要显示的数据。模型知道可以应用于转换该对象的所有操作。它仅代表应用程序的数据。该模型代表企业数据以及管理对这些数据的访问和更新的业务规则。模型不知道演示数据以及该数据将如何显示给浏览器。

        2)。视图:视图代表应用程序的呈现。视图对象是指模型。它使用模型的查询方法来获取内容并渲染它。视图不依赖于应用程序逻辑。如果业务逻辑有任何修改,它保持不变。换句话说,我们可以说,当模型发生变化时,保持其呈现的一致性是视图的责任。

        3)。控制器:每当用户发送请求时,它总是通过控制器。控制器负责拦截来自视图的请求并将其传递给模型以执行适当的操作。在对数据采取行动之后,控制器负责将适当的视图引导给用户。在 GUI 中,视图和控制器通常非常紧密地协同工作。

        来源:http://www.roseindia.net/struts/mvc-architecture.shtml

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-02
          • 2011-09-27
          • 2019-07-01
          • 2013-01-31
          • 1970-01-01
          • 1970-01-01
          • 2016-09-30
          • 1970-01-01
          相关资源
          最近更新 更多