我已经开始设计一个完全基于Web的ColdFusion应用程序.没有太多使用Flash表单或AJAX.
第一个版本是严格的Web应用程序.版本2将是Flex前端.
我想设计和构建东西,以便Flex层可以使用现有的逻辑.没关系,如果这意味着我必须在版本1中做额外的工作.我想硬化逻辑代码一次而不是重新考虑因素.
有什么值得考虑/设计/实施的东西,这将极大地帮助以这种方式设计应用程序?
一个重要的建议,取决于你来自哪里(因为它是一个相当大的问题),将尽可能多地利用ColdFusion组件(CFC); CFC架构非常出色,功能多样且功能强大,它与Flex集成得非常好(在即将推出的Flex和CF版本中也会更好),所以在这种程度上你可以设计你的组件层,你会很高兴你做到了.
自从我编写CF代码以来已经有一段时间了,但在我用它完成的最后一个大项目中,我花了很多时间设计一个CFC的功能层,供普通的'Web应用程序使用,就像听起来一样就像你正在做的那样 - 然后,当时间到了Ajax UI的网站子部分时(它可能是Flex,但在我的情况下,它恰好是一个YUI实现),我创建了公开暴露的CFC的外观层,其作用是包装和公开第一层提供的功能的专用子集.这样做使我能够以对所需服务独有的方式利用和扩展现有代码,而无需直接公开底层(第一层)CFC.
我相信其他人会有更多(可能更详细)的建议,但这是我首先为你提供的一个重要建议 - 学习,了解和使用CF组件.祝好运!
我同意Christian的观点,你能做的最好的事情就是将数据库逻辑或任何其他逻辑应用到CFC中,更具体地说,我建议使用webservices.这样做的主要原因是它将允许您最终拥有cf代码,这是与您为Flex应用程序提供服务的服务器不同的服务器上的所有数据库持久性和逻辑,并允许代码重用于其他应用程序. .将cfc编写为webservices的好处在于,您可以将它们用作Web服务,也可以直接用作使用AMF(远程对象)的Flex中的组件.当然,这些福利真正适用于你的程度取决于你的情况,但这是一个很好的计划.
但主要的建议是将您的应用程序视为具有表示层和逻辑和持久层.如果您正在做出决定,那么它将进入逻辑层.如果您正在显示屏幕或使用演示文稿执行任何操作,则会进入该层.将这些内容分开将允许您更轻松地切换表示层以便以后进行灵活处理.
此外,捕获任何抛出的错误并将消息作为结果(包括结构中的任何结果)从所有方法返回都很有用.Flex有一个讨厌的习惯,告诉你出错了,但没有传递错误信息.这将帮助您调试和处理更容易抛出的任何错误.