我的胖客户端应用程序是否属于MVC模式?

时间:2010-02-28 15:03:28

标签: php model-view-controller saas fat-client

我目前正在开发的基于网络的应用程序正在增加手臂和腿部!它基本上是一个管理系统,可以帮助用户跟踪预订,用户帐户,发票等。也可以使用相当粗糙的API通过几个不同的网站访问它。

胖客户端设计松散地遵循MVC模式(或者MVP)与php / MySQL后端,Front Controller,几个不同的页面控制器,面向对象和程序模型的自由主义,一堆令人困惑的视图和模板,一些JavaScripts,CSS文件和Flash对象。

我的程序员是“分离关注”原则的忠实粉丝,并且就此而言,我目前正试图找出分离 <的最佳方法/ strong>随着项目的发展和更多的人为此做出贡献,将各种问题结合起来。

我们面临的问题是,虽然JavaScript(或带有ActionScript的Flash)通常是使用模板编写的,因此是View的一部分,并且与Controller和Model分离,我们发现它实际上包含了整个MVC模式。 ..使用onmouseover事件交换图像 - 这就是行为。渲染数据网格 - 我们正在操纵视图。通过AJAX发送重新排序列表的结果 - 现在我们在控制中。检查表单字段以查看电子邮件地址是否采用有效格式 - 我们正在咨询模型。

让数据库人员用jQuery编写验证模型是否明智? php程序员可以在JavaScript中编写必要的Control结构吗?网页设计师能否真正为他们的View编写功能性AJAX表单?每个项目都应该有一个JavaScript霸主吗?

如果MVC模式可以应用于人而不是代码,我们最终会得到这个:

  • 模型 - 数据库boffins - “SELECT * FROM mind WHERE interested IS NULL”
  • 控制 - 讨厌的程序员 - “类Something extends NothingAbstractClass {...}”
  • 查看 - 传统上是图形/网页设计师的领域 - “”

......还有一个新图层:

  • 行为 - 互动和反馈设计师 - “CSS3是新的黑色......”

所以,我们正在重构,我想坚持最佳实践设计,但我不知道如何继续。我不想重新发明轮子,所以任何人都会有任何关于我应该看什么模式的提示或提示,或者来自已经做过肮脏工作的人的任何代码样本?作为程序员,如何在保持两者独立的同时为后端和前端重写应用程序?

在你问之前,是的,我看过Zend,CodeIgnitor,Symfony等等,不,它们似乎没有跨越服务器逻辑和客户端逻辑之间的界限!

1 个答案:

答案 0 :(得分:1)

你和其他有脑的人都在问这个问题而且这个问题很棘手。一个非常好的信息架构师在可用性,行为和流程方面进行思考,尽管他/她可能甚至不知道如何使用设计工具或能够绘制或编程。如果他们可以在草图中获得界面,设计师可以使它漂亮。让设计师做一些看起来很费劲的STATIC东西 - 这就是他们擅长的东西。为IA提供可以为屏幕对象指定的前端行为库。他们没有实现这些东西,他们只使用它。如果你使用像JQuery这样的前端工具,这会容易得多,如果你有一个了解设计和设计的前端大师,那就太好了。后端很好。将javascripts分隔到自己的目录中,并始终将它们作为外部文件链接。所有PHP框架都有动态执行此操作的方法。我已经玩弄了一个配置结构的想法,它将文件映射到它们加载的所有前端内容,因此每个单独的视图只加载它需要的内容。但是你是绝对正确的:客户端有一个完整的子MVC主要存在于整个MVC的视图中。我认为你可以分区Ajax的东西(当视图需要引用回服务器时)我将Ajax控制器方法记录为ajax方法,否则不要调用它们。很多是让团队中的每个人都购买分工范式。它只会使他们编写更多解耦的可重用代码,无论你最终选择挂起它的框架。你是对的,你可以对所有这些进行前端封装,但是它们中没有一个强制执行良好的前端封装,我认为它仍然属于DYI领域。祝好运。