【问题标题】:Yii MVC + Web Service = Not MVC?Yii MVC + Web Service = 不是 MVC?
【发布时间】:2011-09-15 04:34:22
【问题描述】:

我正在着手创建一个 Yii 项目,该项目基本上有一个共享数据模型(比如说 CerealStuff),带有一个前端网站(称为 site)、管理站点 admin 和 Web 服务 @ 987654324@。我是整个 MVC 的新手,我想知道我应该如何设计这个项目以与 Yii/MVC 最佳实践保持一致。到目前为止,我已经确定了两个基本选项:

  1. 在根目录下创建模型CerealStuff,创建三个模块siteadminws,每个模块都有自己的控制器;
  2. 在根目录创建模型CerealStuff,创建两个模块adminpublic,其中public 包含处理站点的控制器并具有处理ws 内容的@soap 声明。

我知道选项 2 减少了复制编码的总量,但老实说它感觉不那么干净。另外我觉得现代网络应用程序应该是这样的,即使“站点”(视图)也使用网络服务来访问数据库。

告诉我怎么想!

【问题讨论】:

    标签: php web-services model-view-controller yii


    【解决方案1】:

    我在我的应用程序中公开了一个简单的 Web 服务,并且我使用了一个单独的(肥皂)控制器。

    如果您遵循 fat model / skinny controller 范式,则将 Web 服务前端添加到您的模型非常简单。

    编辑:胖模型的更好示例:http://www.therailsway.com/2007/6/1/railsconf-recap-skinny-controllers

    【讨论】:

    • 因此,这样做的缺点是您最终会在两个地方对前端和 Web 服务控制器中的共享功能进行更改?假设您有一个控制器,它执行一些复杂的输出格式。
    • 并非如此。请参阅有关瘦控制器的链接——您的逻辑正在模型中。您的控制器不应该进行复杂的输出格式,这就是您的视图的用途。
    【解决方案2】:

    阅读 this article 以查看 MVC 结构化 Yii 项目的示例,该项目具有 front-endback-end 的两个入口点。了解这一点后,您可以轻松地为 ws 添加另一个入口点。

    如您所见,所有模型都在模块之间共享。控制器、配置文件和视图是分开的。视图也可以配置为共享。我在许多项目中都使用过这种类型的结构,并且在扩展或缩放方面从未遇到任何问题。

    【讨论】:

    • 不,这并不意味着它应该有不同的入口点。 Yii 允许你创建几乎任何类型的配置。组织文件结构的方法有很多种。
    • 有时由于工作流程或其他问题,最好为前后设置单独的受保护目录(使用该文章中的示例),我只是软链接了模型目录,它基本上完成了同样的事情,同时允许分离其余代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    相关资源
    最近更新 更多