【问题标题】:Componentizing complex functionality in an MVC web app在 MVC Web 应用程序中组件化复杂的功能
【发布时间】:2011-02-28 12:36:18
【问题描述】:

这是关于 MVC Web 应用架构以及如何扩展它的问题 处理组件化中等复杂的功能单元。

我有一个 MVC 风格的网络应用程序,其中包含面向客户的信用卡收费页面。

我被要求允许管理员也输入信用卡付款, 信用卡被电话接管的时候。

网站面向客户的信用卡收费部分目前是 它是自己的控制器,大约有 3 个页面和一个登录名。那个控制器 负责:

  • 客户登录凭证认证
  • 信用卡数据收集
  • 调用图书馆进行实际收费。
  • 向用户报告结果。

我想把卡片数据采集页面提取成一个组件 某种方式,以便我可以轻松地在应用程序的管理端重用代码。

现在我的组件仅限于使用 PHP 样式的单个“视图”页面 嵌入 Perl 代码。

这是一个用 Perl 编写的简单的自定义 MVC 框架。现在,控制器 直接从框架调用以服务 Web 请求。我的想法是 允许从其他控制器调用控制器,以便我可以组件化 更复杂的功能。

为了简单起见,我认为我更喜欢组合而不是继承,即使它会 需要编写一堆传递方法(动作)。作为 Perl,我可以 理论上做多重继承。

我想知道是否有其他 MVC Web 框架经验的人可以发表评论 关于这种事情通常是如何完成的。

谢谢。

【问题讨论】:

    标签: django model-view-controller spring web-applications catalyst


    【解决方案1】:

    创建一个包含所有 cc 特定功能的组件(类?),并通过适当的方法/函数公开它。

    使用组合为您的控制器(面向客户和管理员)提供 cc 组件的实例,并让两者都调用适当的方法来实现需要发生的事情。

    我已经处理过很多次类似的事情,我绝对更喜欢让我的“控制器”(或任何其他直接依赖于第三方库的代码)尽可能“愚蠢”,并且像你说的那样做 -传递需要特定于您的应用程序的功能的任何内容。这使我的代码易于测试,这也是我现在大部分设计的动力。

    我希望我们谈论的是同样的事情,MVC 可以应用在很多不同的层次上,有时会让人感到困惑。

    【讨论】:

    • 我认为我们在谈论同一件事,尽管我可能不清楚我是否想在组件中包含 HTML UI,这就是为什么我在谈论控制器(及其视图) ) 而不仅仅是后端工人阶级。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2020-06-03
    • 1970-01-01
    • 2021-08-25
    • 2011-01-25
    相关资源
    最近更新 更多