从 Adobe ColdFusion 迁移到 Railo 时,有两个主要方面可能会出现问题:
- 使用 Railo 不支持的功能区域
- 马虎的CFML代码
前者包括与 Microsoft 技术的集成,例如 Exchange 和 Sharepoint,以及 Office 文档操作;PDF 表单和一些更复杂的文档操作;UI“小部件”集成。一些 Microsoft 集成有第三方扩展,例如cfSpreadsheet,但对于与 PDF 相关的内容,您需要使用 Java 库自行开发(PDF 表单和高质量的 HTML 到 PDF 转换是 Adobe 的专长,因此请准备好如果您依赖这些,请在迁移中做很多工作)。至于 UI“小部件”,您最好以“正确的方式”来做,所以如果您依赖这些,您应该阅读 ColdFusion UI The Right Way。
后者是一个更难确定的问题。这些差异没有很好的记录——除了那些已经过渡到 Railo 的人在邮件列表和博客上发布的经验帖子——但它们包括以下内容:
- 使用范围名称作为变量(出于性能原因,Railo 将范围视为保留名称)
- 在标签中嵌入注释,例如
<cfif x gt y <!--- check boundary --->>
(我在旧的 CFML 代码中看到过这样的事情,并且很惊讶它可以工作)。
- 依赖于嵌套结构元素的自动创建,例如,
a.b.c = 0
当a
尚未声明时。
- 依赖于长期弃用的功能,例如
parameterExists()
.
还有许多其他小的差异:Railo 在语法和语义方面通常比 Adobe ColdFusion 更严格,而且这些决定通常是由性能问题驱动的,因为与 Adobe ColdFusion 的兼容性会使 Railo 变慢。
在这里全面披露:我几乎只使用 Railo 五年了,我曾经经营过 Railo 咨询业务的美国分部。也就是说,你需要考虑到 Railo 是一家小公司(尽管有五个相当大的前 Adobe 合作伙伴的支持),只有少数人在引擎上工作,除了更前沿的部分之外,对产品的了解很少。 CFML 社区。相比之下,Adobe 拥有庞大的团队和营销预算。切换到 Railo 不会解决您对难以找到开发人员的担忧 - 要访问更大的开发人员池,您确实需要切换到更流行的语言,而不仅仅是不同的引擎。
最后,谈谈 Blue Dragon 的引擎,特别是 Open BlueDragon:该项目的维护者多次公开表示,与其他引擎(Adobe、Railo)的兼容性并不是他们主要关心的问题,而且确实有很多现代的他们仍然不支持或至少不以兼容的方式支持的语言功能。最后我检查了一下,尽管 Adobe ColdFusion 和 Railo 多年来一直支持完整的脚本组件(我的意思是使用component { ... }
而不是<cfcomponent><cfscript> .. </cfscript></cfcomponent>
表单),但完整脚本组件仍在该列表中。CFML 的 BlueDragon 方言多年来一直在稳步分化,所以除非你有非常老的 CFML,它仍然可以在 CFMX7 / ACF8 上运行,否则你可能不会在尝试迁移到 Open BlueDragon 时取得太大成功。