我已经开始设计一个完全基于 Web 的 ColdFusion 应用程序。没有太多使用 Flash 表单或 AJAX。
第一个版本是一个严格的网络应用程序。版本 2 将是一个 Flex 前端。
我想设计和构建一些东西,以便 Flex 层可以使用现有的逻辑。如果这意味着我必须在版本 1 中做额外的工作,那也没关系。我想强化一次逻辑代码而不是重构。
现在有哪些值得考虑/设计/实施的事情将极大地帮助能够以这种方式设计应用程序?
我已经开始设计一个完全基于 Web 的 ColdFusion 应用程序。没有太多使用 Flash 表单或 AJAX。
第一个版本是一个严格的网络应用程序。版本 2 将是一个 Flex 前端。
我想设计和构建一些东西,以便 Flex 层可以使用现有的逻辑。如果这意味着我必须在版本 1 中做额外的工作,那也没关系。我想强化一次逻辑代码而不是重构。
现在有哪些值得考虑/设计/实施的事情将极大地帮助能够以这种方式设计应用程序?
一个重要的建议是尽可能地利用 ColdFusion 组件 (CFC),这取决于您来自哪里(因为这是一个相当大的问题);CFC 架构非常出色、用途广泛且功能强大,它与 Flex 集成得非常好(并且在未来的 Flex 和 CF 版本中会做得更好),因此在设计组件层时,您可以考虑到这一点,您将很高兴你做到了。
自从我编写 CF 代码以来已经有一段时间了,但是在我使用它完成的最后一个大型项目中,我花了很多时间从 CFC 中设计一个功能层,以供普通的 ol' Web 应用程序使用,就像听起来一样就像你正在做的那样——然后,当需要为网站的一个子部分安装 Ajax UI 时(它可能是 Flex,但在我的情况下,它恰好是一个 YUI 实现),我创建了一个公开暴露的 CFC 的外观层,其工作是包装和暴露第一层提供的功能的专门子集。这样做使我能够以对需要它的服务所特有的方式利用和扩展现有代码,而不必直接公开底层(第一层)CFC。
我相信其他人会有更多(并且可能更详细)的建议,但这是我首先要为您提供的一个重要建议——学习、了解和使用 CF 组件。祝你好运!
我同意 Christian 的观点,你能做的最好的事情就是将数据库逻辑或应用程序的任何其他逻辑都放在 CFC 中,更具体地说,我建议使用 web 服务。这样做的主要原因是,它将允许您最终拥有您的 cf 代码,这是您的所有数据库持久性和逻辑在与您提供 flex 应用程序的服务器不同的服务器上,并且还允许代码重用于其他应用程序. 将您的 cfc 编写为 Web 服务的另一个好处是您可以将它们用作 Web 服务或使用 AMF(远程对象)直接作为 Flex 中的组件。当然,这些好处真正适用于您的程度取决于您的情况,但这是一个很好的计划。
但主要的建议是将您的应用程序视为具有表示层以及逻辑和持久层。如果您正在做出决定,它会进入逻辑层。如果您正在显示屏幕或做任何与演示有关的事情,它会进入该层。将这些东西分开将使您可以更轻松地切换您的表示层以供以后使用。
此外,捕获任何抛出的错误并将消息作为结果(带有任何结果,例如在结构中)从所有方法返回也很有用。Flex 有一个坏习惯,就是告诉你出了什么问题,但不传递错误信息。这将帮助您更轻松地调试和处理任何抛出的错误。
查看马特伍德沃德关于该主题的演讲,内容非常丰富:
还有一些一般的事情要添加到其他人提供的答案中:
我并没有声称自己是架构专家,而且我知道我在这里抛出了很多行话来保持简短,但是在 CF 博客上搜索一下应该会找到很多关于我提到的设计模式的信息。祝你好运!