当前位置:  开发笔记 > 编程语言 > 正文

使用Front Controller模式有哪些优缺点?

如何解决《使用FrontController模式有哪些优缺点?》经验,为你挑选了3个好方法。

我目前为我的所有网站设计了每个页面的文件,然后包含常见元素,如页眉,页脚等.但是,我注意到许多框架和CMS使用Front Controller模式.

使用前端控制器有哪些优缺点?该模式是否仅仅用在框架和CMS中,因为不知道哪个页面将存在于最终系统中?



1> Tom..:

Srikanth有一个很好的答案.不过,我想详细说明替代方案.假设您有这个简单的URL层次结构:

/gallery
/blog
/admin/login
/admin/newpost

如果这是与页面控制器(PHP等)来实现,无论是gallery.phpblog.php将需要包括一些common.php在开始(或附近).然而,两个login.phpnewpost.php可能包括admin-common.php,其本身拉动"的common.php"和确实"/管理/" -特定的设置,如验证所述用户被认证.

通常,如果您有一个URL层次结构,它最终看起来很像对象继承树.除了使用语言级继承,您将继承foo-common.php您所包含的任何环境.

我无法想象前端控制器如何提高可测试性.最后,无论实现如何,都需要来自自动HTTP用户代理的完全相同的测试.

页面控制器的一个主要缺点是它确实使您的Web应用程序依赖于其托管环境.它还迫使您的开发人员"看到"与最终用户相同的结构,但我认为这是一件好事,考虑到我看到的网站数量绝对是非常糟糕的网址.



2> Pete..:

这些是我永远不会使用前端控制器的原因.

我们有一个非常好的前端控制器,称为Web浏览器.

每个http请求都是唯一且独立的,应该如此处理.

无法使用前端控制器扩展应用程序.

如果将Web应用程序拆分为松散耦合的小模块,则更容易测试单元/模块(例如,您不测试架构以及控制器).

如果您唯一地处理单个请求,性能会更好.

前控制器模式根本不适合恕我直言.构建应用程序的方式与UNIX大致相同,将较大的问题分解为执行一项任务的小型单元,并且可以很好地完成该任务.大多数框架都在推动开发人员使用前端控制器,他们完全错了.


@FredWilson我关于扩展的观点是,如果你使用前端控制器,它意味着每个请求都会转到所有服务器上的一个入口点.如果应用程序的每个部分都有单独的入口点,则可以单独缩放每个部分,例如.邮件应用程序:您可以为read-email.php分配比send-email.php更多的服务器,因为人们通常会比发送更频繁地阅读电子邮件.这不能通过前端控制器实现,您必须一起扩展每个可能性.

3> Srikanth..:

在前端控制器上重述维基百科文章:

在一句话中 - 您使用它来避免重复.

更详细一点:

前端控制器"为处理请求提供了一个集中的入口点." 我们假设您的网络应用程序的前端控制器是index.php.

这个脚本index.php将处理整个应用程序或框架所共有的所有任务,如会话处理,缓存,输入过滤.根据给定的输入,它将实例化更多对象并调用方法来处理特定任务.

前端控制器的替代方案是单独的脚本,如login.php和order.php,每个脚本都包含所有任务共有的代码或对象.这需要在每个脚本中重复包含代码,但也可能为脚本的特定需求留出更多空间.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有