代码之家  ›  专栏  ›  技术社区  ›  Henry

如果在CF中没有IOC框架(又称ColdSpring、LightWire等),您会怎么做?

  •  0
  • Henry  · 技术社区  · 14 年前

    我已经做了2年的ColdFusion,我一直用ColdSpring来注入依赖性。我想看看没有他们我是否还能活下来。备选方案是什么?

    为了 独生子女 :

    OnApplicationStart()并将服务注入应用程序范围?

    为了 瞬态 :

    工厂模式?xxxfactory.createxxx()?或者…XXXService.createXXX()?

    请发表评论,分享你的选择。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Aaron Greenlee    14 年前

    亨利,

    我将编写一个“dimanager”cfc来管理自己的依赖项,并使用onApplicationStart()将“dimanager”保留在应用程序范围内,以便在应用程序的生命周期内使用。

    每个服务将负责创建您在问题中建议的瞬变IT服务。

    我会选择在我的“dimanager”中使用coldfusion 9s缓存方法来管理单例的持久性,因为随着coldfusion的发展,我期望对机器存储机制提供更大的支持,并且,您可以为每个单例定义配置文件,以便一些在一段时间后过期,而另一些则在应用程序的生命周期内使用。这将提供比使用应用程序范围更大的控制。但是,根据具体的挑战,配置文件可以将对象放在集群范围、服务器范围等中。

    我几乎 为了一个我即将完成的项目走了这条路,但是,决定不重新发明轮子,只使用Coldbox,因为它具有出色的缓存能力。我还应该补充一点,Coldbox团队已经基本完成了将框架分解为单独单元的目标。最后一个单独的部分是Wirebox,它应该很快发布——所以,如果您在使用框架方面有限制,不喜欢MVC或AOP,您可以用自己的方式编写应用程序,并且仍然使用Wirebox或其他已经存在的伟大IOC框架(如您一直使用的框架)。

    希望有帮助。

    我也期待着其他的答案。

        2
  •  1
  •   Paul Rubel    14 年前

    在某些情况下,DI框架隐藏了一些代码味道,比如自动传递一堆参数。通过手工做事情,或者至少知道这样做需要什么,你将使你的设计更干净。 这可能有点像学习C,即使你不经常使用它,了解它也是件好事。

    有一篇关于 do-it-yourself DI 这里的重点是Java,但可能值得你花时间。

        3
  •  0
  •   Adam Bellas    14 年前

    这些都是很好的建议。最近,在建立一系列支持服务时,我的主要目标是为缓存应用程序代码和API内部工作分离做好准备。具体来说,这意味着始终使用工厂来生成瞬态,并且始终拥有接收来自应用程序的请求的单例服务。

    不过,我觉得没有AOP我就活不下去了。我已经能够用分层拦截器解决很多令人惊讶的问题,所以我真的应该在我的办公桌上建造一个小神龛来崇拜AOP。

    所以,总的来说,在构建自己的解决方案时,尝试实现单例服务和临时工厂。AOP是一个巨大的奖金,但我不能告诉你如何实现它。我是一个冷泉用户,感谢它所做的一切!