我已经厌倦了每隔一天就得学习另一个Java web框架。
Struts、Wicket、JSF、JBoss Seam、Spring MVC等等--所有这些无数的框架都试图解决同样的问题。然而,它们都没有真正解决根本问题--这就是为什么总是有越来越多的新问题出现。
大多数在第一印象中看起来都非常明亮和闪亮,因为它们简化了简单的事情。
但是,一旦涉及到现实世界用例的实现,就会遇到问题。
通常,框架并不提供任何帮助,而是通过强制根据框架自身的逻辑和环境来实现,从而阻碍了一个框架,并限制了选择。
简而言之,在使用框架时,我看到了以下缺点:
在我看来,下面这段来自阿尔伯特·爱因斯坦的话非常适合这里:
“我们不能用我们创造问题时使用的那种思维来解决问题。”
回到我美好的旧PHP编码时代,当时编码仍然是有趣和高效的,我过去常常为大多数事情编写自己的框架,只是复制-粘贴并在一个项目到另一个项目中采用它们。
这种方法得到了很好的回报,导致了快速的开发,没有任何开销,并且框架实际上比大多数Java框架更强大,但在单个文件中只有几百行代码,外加一些简单的mod_rewrite规则。
这当然不能解决web开发的所有问题,但它简单、快速、直截了当。
虽然完美地调整了当前项目的要求,但它也很容易扩展,并且由于零开销而具有非常高的性能。
那么,为什么使用这个框架会有那么多麻烦,为什么不把它们都扔掉,回到根源呢?
当我们明天又开始一个新框架的项目时,我应该对我的老板说些什么?
或者,有没有可能框架真的起到了作用?
或者是我忽略的一些隐藏的优势?
发布于 2009-04-24 09:17:16
这是Kev从线程What’s your most controversial programming opinion?中引用的一句话,非常适合这里:
我认为整个“企业”框架的东西都是烟雾弥漫。J2EE、.NET、大多数Apache框架和大多数用于管理这类事情的抽象造成的复杂性远远超过它们所解决的问题。
以任何常规的Java或MVC,或者任何所谓的现代.NET框架为例,它们都能“神奇”地解决繁琐、简单的任务。您最终会编写大量难看的XML样板,这些样板很难快速验证和编写。你有大量的API,其中一半只是为了集成其他API的工作,不可能回收的接口,以及只需要克服Java和C#的不灵活的抽象类。我们根本不需要这些。
如果所有不同的应用服务器都有自己的描述符语法、过于复杂的数据库和群件产品呢?
这里的重点不是complexity==bad,而是不必要的complexity==bad。我在大型企业安装中工作过,其中一些是必要的,但即使在大多数情况下,解决大多数用例也只需要几个自制的脚本和一个简单的web前端。
我会尝试用简单的web框架、开放源码的数据库和琐碎的编程构造来替换所有这些企业级应用程序。
发布于 2009-04-23 11:18:51
在我美好的旧
编码时代,编码仍然是有趣和高效的,我曾经为大多数事情编写自己的框架,只是复制-粘贴并从一个项目到另一个项目采用它们。这种方法得到了很好的回报,导致了快速的开发,没有任何开销,并且是一个实际上比大多数Java框架更强大的框架
请原谅我一秒都不相信。
,但在单个文件中只有几百行代码,外加一些简单的mod_rewrite规则。这当然不能解决web开发的所有问题,但它简单、快速、直截了当。
因此,基本上您在几个月或几年的时间里开发了自己的框架,根据您自己的需求量身定做,并且可以非常快速地使用它,因为您非常了解它。
然而,你不能理解为什么其他人也这么做,然后试图把结果变成每个人都能使用的东西?
你开发的这个伟大的框架在哪里?如果它如此强大和易于使用,那么使用它开发的专用社区、数千用户和数百个网站在哪里?
每个项目都使用不同的框架,即使在同一个公司内也是如此(至少在我的例子中)
这就是你的问题所在。为什么你要在每个项目之后丢弃从每个框架中获得的专业知识?
这个想法是选择一个框架,并坚持使用它,而不是多个项目,这样你就可以精通它。您必须投入一些时间来学习框架,然后它可以让您在更高的层次上工作,从而节省您的时间。
发布于 2009-04-23 11:23:32
提出您自己的框架的问题是,您将犯所有已建立的框架已经偶然发现并解决的所有相同的错误。这是正确的,特别是当涉及到安全性时。
只要问问Jeff和他们在堆栈溢出中实现WMD时需要考虑的问题。我宁愿使用他们在项目中产生的东西,而不是从头开始实现它。这只是一个例子。
https://stackoverflow.com/questions/781191
复制相似问题