背景: 我在设计阶段有一个新网站,我正在考虑使用ColdFusion。服务器目前使用ColdFusion和Python进行设置(为我完成)。
我可以选择使用什么,而ColdFusion似乎对标签概念很感兴趣。使用PHP和Python开发网站时,使用新工具的想法似乎很有趣,但我想确保它与其他两个选项一样易于使用,例如URL美化和可伸缩性。
在可扩展性和开发速度方面使用ColdFusion是否存在任何常见问题?
我的另一个选择是将Python与WebPy或Django一起使用。
答案 0 :(得分:9)
ColdFusion 9具有像Sean Cornfeld的FW / 1这样的良好框架,具有丰富的性能和任何现代Web服务器开发语言的所有功能。它具有一些很好的集成功能,如交换服务器支持和开箱即用的excel / pdf支持。
与所有工具一样,它可能适合或不适合您,但在可扩展性方面的问题通常在于您的代码,很少是平台。
在CF9中自由使用memcached或内置的ehache,聪明地了解您的数据访问策略,智能地返回数据并且您将获得良好的性能。
我最近使用CF的方法是将jQuery广泛用于客户端逻辑,并使用CF进行初始页面设置和使用ajax调用来填充表格。这大大减少了CF特定代码并强制实现了良好的逻辑分离。此外,它还减少了对任何一个平台的依赖(除了优秀的jQuery库)。
要专门回答你的问题,如果你在这里阅读[coldfusion]标签,你会发现很少有关于速度或可扩展性的问题,它可以很好地解决。许多问题似乎都出现在CF是另一个工具(如Apache Axis(Web服务)和ExtJs(cfajax))上的一个相当薄的层 - 你不需要使用它们。您可能需要mod-rewrite或IIS重写来隐藏.cfm
答案 1 :(得分:6)
既然你已经有了ColdFusion和Python,我会仔细考虑你想要完成的是什么。
您是否需要逐步学习曲线,新手友好的语言(对于熟悉HTML的人来说很容易学习),优秀的文档以及许多通常难以完成任务的功能?这听起来像是ColdFusion的工作。
也就是说,一旦你掌握了ColdFusion的基础知识,很容易转换为面向对象的方法(正如其他人所说,有很多MVC框架可用:FW / 1,ColdBox,Fusebox,Model-Glue ,Mach-ii,Lightfront和列表继续......),还有依赖管理(DI / IoC)框架(我最喜欢的是ColdSpring,模仿Java的Spring框架),以及做Aspect的能力 - 面向编程。最后,还有几个ORM框架(Transfer,Reactor和DataFaucet,如果您使用的是CF8或更早版本,或者将Hibernate添加到CF9 +中的列表中)。
ColdFusion也可以与其他所有内容完美配合。它可以加载和使用.Net程序集,提供对Java类的本机访问,并使创建和/或使用Web服务(特别是SOAP,但REST可能)变得轻而易举。 (我认为它甚至可以用com / corba,如果你想从1991年开始使用技术......)
不幸的是,我没有使用Python的经验,所以我无法说出它的优点。也许Python开发人员可以在那里阐明一些亮点。
至于网址重写,(再次,正如其他人已经注意到的那样)在语言中并没有真正完成(尽管你可以捏造它);要获得一个非常漂亮的URL你真的需要mod_rewrite(可以不用.htaccess完成,而规则会进入你的Apache VHosts配置文件),或者使用IIS URL重写产品之一。
我提到的“捏造”将是一个网址:http://example.com/index.cfm/section/action/?search=foo - “.cfm”位于URL中,以便请求从Web服务器(Apache / IIS)传递到应用程序服务器(ColdFusion)。要删除URL中的“.cfm”,您确实必须使用URL重写工具;没有办法解决它。
答案 2 :(得分:2)
与CF合作两年,对我来说最大的问题是:
如果您主要使用标签(而不是CFScript)进行编码以及格式化以提高可读性,请准备好使用空格填充输出。与其他脚本语言不同,语句之间的空格实际上是发送给客户端的 - 所以如果你循环100次并输出结果,循环源代码中的所有换行符和选项卡将出现100次。有很多方法可以解决这个问题但是已经有一段时间了 - 我确信SO之前有人问过这个问题,所以快速搜索会给你解决方案。
与空白问题有关,如果您正在编写一个与AJAX或Flash一起使用的脚本,并且您正在尝试发送xml;甚至在DTD之前的单个空间也可以打破一些更挑剔的解析引擎(jQuery曾经像这样摔倒 - 我不知道它是否仍然如此,闪存是一场噩梦)。当我第一次这样做的时候,我花了好几个小时试图找出为什么看起来格式正确的XML导致我的脚本死亡。
后来的版本并不是那么糟糕,但我也在研究遗留系统,甚至缺乏相当基本的功能。通常,您会发现需要寻找COM或Java库来为您完成工作。但是,这是在早期版本中。
CFAJAX上次检查时是一个沉重,笨重的野兽 - 所以不要打扰,自己滚动。
除此之外,我发现CF是一种有趣的语言 - 它具有与其他所有类似的特性,但总的来说它主要是头痛,而且工作起来很快。
希望这会有所帮助:)
干杯
伊恩
编辑:哦,由于Adobe最熟悉的原因,如果你正在运行试用版,你将在所有输出之前得到一个可爱的HTML评论 - 无论你是否真的输出HTML。是的,因为评论出现在您的DTD之前,请为某些浏览器做准备(特别是不要查看任何一个浏览器!)以使其像垃圾一样呈现。再一次 - 也许他们在新版本中重新考虑了这个......编辑#2:您还提到了网址重写 - 我以前工作的地方一直这样做 - 没有问题。如果您在Apache上运行,请使用mod_rewrite,如果您在IIS上运行,请购买ISAPI重写3。
答案 3 :(得分:2)
帮助自己,查看CFWheels项目。它具有您正在寻找的URL重写支持和路由。也作为一个完整的堆栈mvc框架,它带有它自己的orm。
答案 4 :(得分:1)
已经有几年了,所以我的信息可能有些过时,但根据我的经验:
Coldfusion易于学习,并且能够快速完成并且端到端地运行。
与许多服务器端脚本语言一样,持久性逻辑,业务逻辑和表示之间没有真正的区别。所有这些通常都在典型的Coldfusion源文件中交织在一起。例如,如果您想对成熟应用程序的数据库模式进行更改,这可能意味着更多工作。
可以遵循一些原则来使事情更易于维护; “Fusebox”就是其中之一。可能还有其他人。