`
庄表伟
  • 浏览: 1150129 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于OSGi,AOP,SOA,Web Framework的一个讨论

阅读更多
romza在BJUG的maillist里提出了一个问题,Web开发中的Component,能不能够通过OSGi这样的插件体系,来进行组织,以提高代码的可重用性。
 
这个帖子引起了广泛而深入的讨论,我也在很后面加入了进去,说了一点。
 
飞驰的话题呼啸而过,我稍一迟疑,就赶不上趟了。
 
但是这里面的话题,又的确是我非常感兴趣的(嗯,跑题了那么远,但是还在我的兴趣范围内),所以的确是应该出来聊聊我的看法,特别是徐Rx同志多次提到了我的DJ...
 
1、徐Rx,我认为你不应该为自己的表达能力过多辩护,还把责任推到我们中华民族伟大的中文上来。看着你的帖子,我好几次都差点晕过去,百分之50中文单词勾兑百分之50的英文单词。这样的句子,能让人读懂吗?
 
2、几次昏过去之后,我又强迫自己醒过来接着看帖子,我认为徐Rx还是讲得很正确的,除了再次想把我的DJ和语义网拉上关系之外。
 
3、回到最初的话题,romza的需求可以理解,但是你所猜测的那个解决方案(插件体系结构)我认为不是一条正路。提高软件的重用性,自然是大家多年来一直追求的目标,但是不同的应用领域,应该有不同的重用规范。彼此之间可以参考,但是很难照搬。就我对Web开发的理解,在AJAX还没有大规模改变Web开发的世界之前,浏览器的运作模式是非常单调的(请求-响应)模式,响应的输出,无非就是文本,在这样的世界里,Web模板是最自然的解决方案。比如buaawhl的Fastm,或者我的Fastm+。但是当AJAX的概念大面积的进入人们的视线之后,传统的思维就必须修正了,由此而引发的一系列的思考,我倒现在也没有完全想好,也许Micheal
Chen可以出来谈谈。但是,现有类似于AjaxTags这样的用Tags给Web1.0打补丁的方式,我认为是丑陋的。
 
4、再说面向对象与面向方面的问题,在只有Object的世界里,对象就是唯一的可以重用的积木。这个积木从其本质来说,就是有缺陷的,所以要想在OO的基础上重用,就会很辛苦(参见我的《丧钟》系列)。但是贸然引入Aspect,也并非解救之道。就像AJAX出现之后,我们必须重新思考Web开发,而不是打补丁一样。Aspect的概念出现之后,我们现在的用法,也不过是用Aspect给Object打补丁。这样的做法,在我看来,一样是丑陋的。
 
5、AOSD我看了一下,那老头举的例子,简直就是在说梦话。要像他那样做面向方面的分析设计,系统肯定是做不出来的。
 
6、说说我的DJ,在我看来,强行将一些行为划入Object,而另一些划入Aspect,是不平等的。这些行为不该有这样的高低贵贱之分。在DJ之中,他们都是某一个Channel。语义是:"Channel就是行为插入数据的管子"。每一个管子之间是平等的,而我们需要一个更加强壮的机制,来管理这些行为之间的相互干扰,以及对于数据的交叉读写。
 
7、前面拐拐龙底咚说的:"一下子想起了久违的DB触发器",实在是深得我心。我一直认为,在确保数据安全方面,OO的做法是愚蠢的,而DB的触发器是一种更加灵活的方案。但是传统数据库中的触发器,缺少对行为相互干扰之间的管理,而是纯粹只关心了数据的安全。因此,我一直在设想,如果我的DJ能够成为某种PL/SQL的直接扩展,也许是更加自然的一种实现方案。
 
8、徐Rx的C/C++回忆我也很赞同,我曾经跟一个朋友说过一句话:"框架就是弱语言,而语言就是强框架"。我现在所在的公司,做的那个乐酷网络电视录像机,背后的业务逻辑支撑框架,就是按我的DJ的思路来做的,叫做DOOP。面向动态对象的编程。应该这么说,是先有了DOOP的开发实践,才有了后来更进一步语言化的打算。
 
9、我对于DJ的定位,是一种业务逻辑层的描述语言,而其它的方面,它肯定都不擅长,比如界面层,比如网络层。因此,我的看法是,在现在的多层架构的体系下,抛开"确切所处的层次来谈重用",肯定是用不好的。也可以这么说,你不可能找到一个方案,能够一举解决整个系统的重用性问题。必须区分技术领域、区分系统层次,区分不同的规模尺度。然后才能来谈重用。这样才可能成功的。
分享到:
评论

相关推荐

    OSGI中包含web服务器配置需要的jar.zip

    OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许应用程序以模块化的方式构建,每个模块称为一个bundle。在OSGI环境中,你可以动态地安装、启动、更新和卸载这些bundle,而无需重启...

    Osgi AOP document (PDF)

    (d-AOP) in conjunction with service oriented programming is well suited to face this demand. One well known approach providing a service-oriented component model is the OSGi Service Platform.

    基于SOA和ESB企业总线的OSGi企业级应用

    标题中的“基于SOA和ESB企业总线的OSGi企业级应用”是一个关于构建企业级软件系统的主题,其中涉及到三个关键概念:Service-Oriented Architecture(SOA)、Enterprise Service Bus(ESB)以及OSGi(Open Service ...

    OSGI教程_面向SOA的架构

    每个Bundle都是一个独立的Java模块,包含类、资源和元数据。它们通过导出和导入包来相互依赖,确保了模块间的隔离性和一致性。 2. **生命周期管理**:OSGI允许控制Bundle的生命周期,包括启动、暂停、停止和卸载。...

    SCA、SOA与OSGi概念浅析

    **SCA(Service Component Architecture)** 是一种服务组件框架,旨在简化基于 **SOA(Service-Oriented Architecture)** 的应用程序构建。SCA的核心目标是让开发者能够专注于业务逻辑,而不是技术实现细节,通过...

    基于OSGi和Spring开发Web应用.doc

    9. Web 应用 bundle:Web 应用 bundle 是一个基于 OSGi 和 Spring 的 Web 应用程序,能够提供更加强大的灵活性和可靠性。 本文通过一个简单实例,介绍了如何利用 Spring-DM 开发基于 OSGi 和 Spring 架构的 Web ...

    org.osgi.framework.BundleException-glassfish

    Glassfish是Oracle提供的一个开源应用服务器,它支持OSGi框架来实现服务的模块化和灵活部署。 BundleException是OSGi框架中的一种常见异常,通常表示在处理OSGi捆绑包(Bundle)时发生了问题。捆绑包是OSGi中的基本...

    OSGi与Web容器的整合

    然而,对于轻量级的解决方案,Eclipse Gemini Web项目提供了将Tomcat或Jetty集成到OSGi环境的方法,创建了一个OSGi Web Container。 **2.3 开发环境准备** 为了在Eclipse中开发OSGi Web应用,需要安装相应的插件,...

    基于OSGi和Spring开发Web应用

    dmServer,全称为Dynamic Modules Server,是一个完全模块化的Java服务器,其基于OSGi,专为运行企业级Java应用和Spring应用而设计。dmServer的模块化特性使得它能够提供更加灵活和可靠的部署环境,对于那些需要频繁...

    OSGi Web示例工程

    Web示例工程是使用OSGi技术构建的一个具体应用,通常包括了如何在OSGi环境中部署和运行Web应用程序的实例。 在OSGi框架中,Equinox是Eclipse基金会提供的一个实现,它是OSGi规范的主要实现之一,广泛应用于服务器端...

    osgi 在web容器中部署

    你可以将其作为一个OSGi bundle部署到Tomcat中,然后通过Web接口来管理其他OSGi bundles的生命周期。WebConsole提供了上传、安装、启动和停止bundle的功能,对于开发者来说非常方便。 Pax Web则是一个更专注于将...

    自己开发的OSGi Web Console

    1、自己开发的OSGi Web Console,适用于实现了OSGi规范的Equinox、Felix等...2、展示了如何把OSGi框架作为一个组件嵌入到现有的未基于OSGi开发的Web应用当中,在Web应用中可获取OSGi中的Service以增加应用的灵活性。

    开发一个简单的 OSGi Web 应用实例

    ### 开发一个简单的 OSGi Web 应用实例 #### 一、项目概述 本教程旨在通过一个具体的示例来介绍如何使用OSGi框架开发一个简单的Web应用。这个示例应用能够计算两个数字的和或乘积,并展示了OSGi bundle的动态部署...

    一个关于osgi的例子

    这个标题“一个关于osgi的例子”暗示我们将探讨如何使用OSGi进行模块化开发。 在描述中提到,压缩包包含两个文件夹:OsgiSrc和OsgiDemo。OsgiSrc很可能是包含源代码的文件夹,开发者可以查看和学习OSGi服务的实现...

    OSGi, Spring , Web

    描述中提到的"run virgo"意味着我们将关注Spring Virgo,这是一个基于OSGi的轻量级应用服务器,它支持Spring应用的部署和管理。"html5演示"暗示有HTML5技术的应用实例,HTML5是现代Web开发的标准,提供了更好的...

    基于OSGi和Spring开发Web应用教程

    在基于OSGi和Spring开发Web应用中,OSGi(Open Services Gateway Initiative)是一个开放标准,用于创建模块化Java应用程序。它允许开发者将应用程序分解为独立的模块,称为bundle,每个bundle都包含自己的类路径、...

    基于OSGi的分布式Web应用结构.pdf

    总结而言,文章深入探讨了如何通过OSGi技术来构建一个更加灵活、高效的分布式Web应用结构,以应对大数据和高并发时代对Web应用系统性能和资源优化的需求。这种方法不仅优化了Web应用的设计,还降低了部署和运维成本...

    基于OSGi和Spring开发Web应用的Demo

    综上所述,这个基于OSGi和Spring的Web应用示例展示了如何利用这两种技术的优点,构建一个模块化、可维护且易于扩展的应用。通过OSGi的模块化,我们可以更好地管理组件的生命周期,实现热部署;借助Spring的DI和AOP,...

    OSGI 实例eclipse插件开发

    首先,Eclipse是一个开放源代码的集成开发环境(IDE),它支持多种编程语言的开发,而OSGI则为Eclipse提供了一个强大的插件系统。通过OSGI,开发者可以创建独立、可重用的插件,这些插件可以互相交互并与其他Eclipse...

Global site tag (gtag.js) - Google Analytics