首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

再谈开源框架的“非入侵”还有意义吗

2012-10-25 
再谈开源框架的“非侵入”还有意义吗??? ?非侵入“这词应该是spring最开始主打的口号吧,也唱响了新一代开源

再谈开源框架的“非侵入”还有意义吗?

?? ?"非侵入“这词应该是spring最开始主打的口号吧,也唱响了新一代开源框架的发展潮流,君不见目前非常多的框架都在大谈自己是”非侵入“式的,程序员也在津津乐道”非侵入“式的好处,我个人认为,最开始”非侵入“背后的意义应该是框架的灵活切换,而不仅仅是代码中的”非侵入“,而如今,spring、struts等,虽然可以实现代码的”无侵入“,但背后的”已绑定“似乎已经违背了初衷。那再谈”非侵入“还有何意义?


楼主这个问题本身就没什么意义嘛

“什么是入侵每个人都有自己的观点”
扯蛋,自己没弄明白什么是入侵就不要在这高谈阔论
56 楼 delphixp 2009-09-04   很多人对于“非侵入”这个概念的感知,都是来自那本《without EJB XXX》的吧?

就这本书来说说“非侵入”的含义:

  1)使用容器的同时,无须实现(继承)容器的任何接口(类)。相比于旧版的EJB,你必须要实现相应的接口。

  2)在进行测试时(例如TDD),可以使用灵活的测试方法。(例如用 JUNIT,或者一个main 方法)相比于旧版的EJB,每次测试都要花相当时间等待容器的停止/启动,要脱离容器来做测试的话,比较困难或麻烦。

应该说,这种“非侵入”性是相对于旧版的EJB而言。使用流行语来说就是,旧版的EJB容器是“重侵入”的,是一种卖身的关系。而对于 Spring 这种容器来说,是“轻侵入”的,是一种合作关系。

完全没有侵入性,是不存在的。只要你用框架,你就必须要遵守框架所制定的“游戏规则”。这种规则不是要求你调用/创建框架对象,就是要求你实现/继承框架接口/类,又或者某种特定的配置文件。不要认为只需要配置文件,就没侵入性,配置文件是“侵入”到系统,而不是代码而已。

所以,对于“非侵入”性的理解,更多是:尽量减少框架“入侵”到你的代码中去。要知道,错误、复杂度等都具有传递性,代码越是“纯洁”就意味着更少依赖性,更好的维护性。

57 楼 ferreousbox 2009-09-04   随着大家的关注点和出发角度不同,问题就像wq163说的已经扩散了,往往有些朋友就抓住言论中的一些关键字来进行辩驳,所以难免会出现争执和意见不统一,这往往也是思想的碰撞。所以,我认为我们讨论的前提应该是基于一个共同的认识,那就是怎么界定“入侵”?

从狭义的角度讲,直接对框架代码的依赖,这是无可厚非被大家认同的直接入侵;

从广义的角度讲,只要你使用了就是被入侵了,当然这里还有一个度和界限的问题,这里的界限和度我理解为标准,即使用标准的东西是可以被认为非入侵的,因为是依赖标准而非具体实现。好比我们使用JDBC框架或OSGI框架,这是依赖标准。

而spring等提出的非入侵就像前面有朋友提到的是基于单元测试的易用性和非依赖性的这样一个维度,但是我也要说,在什么都可以MOCK的年代入侵不入侵真的还那么重要么?

另外,我的初衷并不是说因为入侵而不使用,而是说不要因为非入侵而刻意非入侵! 58 楼 qianhd 2009-09-04   其实都是一场梦
随便一个需求的修改 都可以让框架侵入的体无完肤
59 楼 herowzz 2009-09-04   如果说到标准的话,spring本来就是反标准的。
再说,用标准就不被入侵了?现在有几个程序是用标准写的?标准还不都是那些厂商们你定一套,我定一套。使用ejb,jsf等等你就可以随意更换到别的框架吗?
如果照你那样理解入侵的话,那任何第三方框架都别使用了,直接jdbc,servlet最符合您的要求?
60 楼 pipilu 2009-09-04   哎,真服了。你是为了证明你提的问题是合理的,还是为了探求答案?
赶快隐藏吧。 61 楼 belover 2009-09-05   pipilu 写道哎,真服了。你是为了证明你提的问题是合理的,还是为了探求答案?
赶快隐藏吧。

同意楼上!

很难想象。在 javaeye 这种深度交流的技术社区。还有这么没有任何实际意义的讨论!
楼主下课吧!

热点排行