`

.Net实现OSGi遐想

 
阅读更多

很多书籍和文章都对JavaC#之间的相同与不同之处做了比较,下面是JavaC#之间的共同点的一个简单的列举:

特点

Java

C#

面向对象语言

独立于机器语言的中间语言

类打包

Jar包文件

程序集(Assembly)以exedllmodule文件存在

类名称空间

类加载机制

由类加载器加载到JVM

.Net应用程序域加载

独立的类空间

不同的类加载器(Class Loader)加载的类具有独立的逻辑空间,相互不可见

不同的应用程序域(Application Domain)加载的程序集不可见,具有独立的逻辑空间

运行时环境

JVM

.Net Runtime

OSGi中最重要的概念就是BundleBundle介于Jar包和应用系统之间,通过MANIFEST.MF文件中定义的元数据,来描述Bundle资源信息。同样,在.Net中,Bundle可以用程序集(Assembly)来实现,程序集的Manifest文件与Bundle的元数据文件类似,用于存储程序集的元数据信息,可以扩展该文件实现Bundle的规范。

Bundle加载后在OSGi环境中具有独立类空间,每个Bundle具有独立的类加载器,如下图所示。

JVM中的类加载器在.Net中可以用应用程序域(Application Domain)实现,一个应用程序域可以加载一个或多个应用程序集,共享的应用程序集可以加载到中立的应用程序域中。如下图所示:

以上关键问题的解决是不是就可以使用.Net实现OSGi的思想了呢?应该可以吧!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics