代码之家  ›  专栏  ›  技术社区  ›  Jas Panesar

今天的ColdFusion应用程序-明年的flex。考虑到明年最大限度地重用逻辑层?

  •  7
  • Jas Panesar  · 技术社区  · 16 年前

    我已经开始设计一个完全基于Web的ColdFusion应用程序。对flash表单或ajax的使用不多。

    第一个版本是严格的Web应用程序。版本2将是一个灵活的前端。

    我想设计和构建一些东西,以便flex层可以使用现有的逻辑。如果这意味着我必须在版本1中做额外的工作,那没关系。我想对逻辑代码进行一次强化,而不是重新考虑。

    现在有什么值得考虑/设计/实现的事情能够极大地有助于以这种方式设计应用程序?

    3 回复  |  直到 13 年前
        1
  •  6
  •   Christian Nunciato    16 年前

    根据你来自哪里(这是一个相当大的问题),有一个很大的建议是尽可能地利用ColdFusion组件(CFC);CFC架构是优秀的、通用的和强大的,它与Flex很好地集成(并且在未来的Flex和CF版本中会做得更好),因此在某种程度上你可以考虑到这一点,设计您的组件层,您会很高兴这样做的。

    我写了一段时间的CF代码,但是在我做的上一个大项目中,我花了很多时间设计了一个由CFC组成的功能层,以供普通的ol'web应用程序使用,就像你在做的一样——然后,当需要为站点的一部分(它可能是flex,但在我的CA中SE,它碰巧是一个yui实现),我创建了一个公开暴露的cfc的facade层,其工作是包装和公开第一层提供的功能的一个专门的子集。这样做可以让我以一种独特的方式利用和扩展现有代码,而不必直接公开底层(第一层)CFC。

    我相信其他人会有更多(可能更详细)的建议,但这是我首先为您提供的一个重要建议——学习、了解和使用CF组件。祝你好运!

        2
  •  6
  •   Ryan Guill    16 年前

    我同意Christian的观点,您所能做的最好的事情就是将数据库逻辑或应用程序的任何其他逻辑放在CFC中,更具体地说,我建议您使用WebServices。这样做的主要原因是,它将允许您最终拥有您的CF代码,这是您的所有数据库持久性和逻辑,与您为flex应用程序提供服务的服务器不同,并允许代码重用到其他应用程序。将CFC编写为WebServices的好处也在于,您可以将它们作为WebService使用,也可以直接作为使用AMF(远程对象)的flex中的组件使用。当然,这些好处到底能给你带来多大的好处取决于你的情况,但这是一个很好的计划。

    但主要的建议是将应用程序视为具有表示层、逻辑和持久性层。如果您正在做一个决定,它将进入逻辑层。如果您正在显示一个屏幕或对表示进行任何操作,它将进入该层。将这些东西分开可以让您更容易地切换出表示层,以便稍后进行灵活调整。

    此外,捕获抛出的任何错误并将消息作为所有方法的结果(具有任何结果,如结构中的结果)返回也是很有用的。flex有一个坏习惯,告诉你出了什么问题,但不传递错误信息。这将帮助您调试和处理任何更容易抛出的错误。

        3
  •  3
  •   RaeLehman    16 年前

    退房 Matt Woodward's presentation 关于这个话题,它提供了很多信息:

    在其他人提供的答案中添加一些一般性的内容:

    • 在CFC中封装数据交互(通常在委托给网关和DAO的服务中)
    • 在大多数情况下,您将希望创建“bean”CFC来表示您的业务对象(用户、小部件等),这些将作为actionscript类转移到flex。您需要向它们添加cfproperty标记,使它们可以序列化为actionscript(区分大小写和顺序!),所以在创建它们时要注意,以防以后不得不处理它,并使用类似 Adobe CF Extensions for Eclipse Illudium PU36 为你做这件事。
    • 创建一个远程Facade CFC(或一组CFC,具体取决于应用程序有多大),将方法委托给您的服务-这是您将方法的访问权限设置为“远程”的地方-通常是您唯一希望这样做的地方(您会觉得自己在做大量委托,但集中所有远程服务是值得的)
    • 在使用HTML开发时,将远程Facade CFC视为API,并使HTML视图尽可能“哑”。这样想:在CF视图中编写的任何逻辑都必须在flex视图中复制。如果您只使用远程API构建项目,那么您将对flex如何与应用程序交互有一个很好的了解。
    • 退房 ColdSpring 它为管理所有要创建的对象提供了许多很棒的功能!

    我不自称是一个建筑专家,我知道我在这里用了很多行话来保持简短,但是一些关于CF博客的谷歌搜索应该会找到很多关于我提到的设计模式的信息。祝你好运!