1. 关于OSGI.NET

在介绍 OSGI.NET 前先介绍下OSGi, OSGI全称为Open Service Gateway Initiative,它一方面指由IBM、Oracle、BEA、SAP等国际IT巨头组成的OSGi联盟组织;另一方面指该组织制定的一个基于Java语言的服务规范——OSGi服务平台。而OSGi.NET是OSGi R4.2规范移植到.NET平台的实现,是一个动态模块化框架的规范。OSGi.NET规范定义了面向组件、面向服务的编程方法。

基于OSGi.NET的插件框架提供了模块化与插件化、面向服务架构和模块扩展三大功能,适用于控制台、WinForm、Windows服务、WPF、ASP.NET和移动平台等任意.NET应用环境。

2. OSGi.NET的优势 

  •  模块间零耦合

    在OSGi.NET规范里,插件具有热插拔、物理隔离和动态特性,所以模块间是0耦合,可快速进行模块或软件复用,同时能很好解决团队间的协作问题,使各个团队或成员间独立进行开发,在软件或模块的后期维护中表现出更多的优势,由于插件是互相隔离,并且其依赖是通过可管理的服务来实现的,依赖粒度小,模块间的依赖可视为0。不同的插件可以有不同的版本,独立开发、部署和测试。对组件的更改不会影响到其他组件的行为。

  •  快速响应需求变化

   OSGi.NET框架实现了一个微内核,能够快速响应用户的需求,定制或修改一个组件.

  •  易管理、易部署、易更新

  由于OSGi.NET的插件具备物理隔离、热插拔和动态的特性,使持续部署、更新变为可能,并且让您可以非常方便的管理内核。

  •  OSGI.NET平台的开放性

  OSGi.NET是一个开放的平台,在此构建的应用程序,天生就具备了开放性。你可以通过服务向开发者提供API,通过扩展点向开发者提供功能扩展,并且可以构建私有的插件仓库。

3.OSGI.NET 运行机制

 在OSGi.NET插件框架中,插件即Bundle,它具备物理隔离、热插拔和动态特性。每一个插件都是完全可复用的,可以被动态的安装、启动、停止、卸载或更新。

插件运行时即BundleRuntime,则是插件的运行容器,它负责从插件目录中加载和启动插件。

4.面向服务

 在OSGi.NET插件框架中,插件具备高内聚、低耦合特性,也就是说插件间耦合度非常低。服务即Service,是插件通讯的方式。在这里,“服务=接口 + 实现”。接口是服务的契约,服务提供商实现了服务的接口并将服务注册到服务总线,服务消费者则通过服务契约从服务总线搜索服务并绑定使用。这里,服务是动态,可以被动态注册、卸载和更新,一个服务契约也可能有多个服务实现。

5.插件扩展

 在OSGi.NET插件框架,插件具备可扩展性,可以在不变更插件代码情况下,更改或者扩展插件的行为。这个扩展机制是通过一对基于XML格式的“扩展点 + 扩展”来实现的。一个插件可以通过定义“扩展点”来实现可扩展,而其它插件则通过定义对应的“扩展”来注册/更新功能。扩展/扩展点在插件启动时注册到插件运行时,相反,在卸载时,则从插件运行时卸载。

6.片段插件

 在OSGi.NET,有一种特殊的插件,称为片段插件,即Fragment Bundle。片段插件相当于子插件,其作用是为了扩充其它插件的类型空间、扩展信息。除了片段插件的插件,都是宿主插件(Host Bundle)。与宿主插件不同的是,片段插件不能被启动、停止,没有类加载器,不允许从片段插件加载类型。当宿主插件被启动后,片段插件会自动附加到宿主插件,即将片段插件的类型空间、扩展信息合并到宿主插件。

7.相关名词解释

  •  扩展点:通过标准XML节点<ExtensionPoint>来定义一个模块向其它模块暴露的扩展点。暴露扩展点的模块会监听并处理其它模块对其的扩展。
  •  扩展:通过标准XML节点<Extension>来定义一个模块对暴露扩展点的模块的扩展。这个XML节点会通过扩展点变更事件传递到暴露扩展点的模块。
  •  动态扩展:模块在启动和停止时,会分别向平台注册和卸载相应的扩展点及扩展,该平台通过模块上下文暴露扩展点变更事件来处理动态的扩展信息。
  •  零耦合:模块的扩展没有任何的耦合,仅通过标准XML来配置。

相关文章:

 http://osgi.com.cn/article/7289226  OSGI.NET

http://www.cnblogs.com/baihmpgy/archive/2010/05/05/1727626.html OSGI.NET 开放工厂--博客文章

 http://www.verydemo.com/demo_c89_i4770.html  OSGI.NET 入门笔记

 http://osgi.codeplex.com/discussions OSGI.NET 官网(英文版 )

 http://www.iopenworks.com/  OSGI.NET开放工厂

http://osgi.com.cn/account/signin?next=http://osgi.com.cn/article/7289228 OSGI 中文社区

OSGI.NET 学习笔记(一)的更多相关文章

  1. OSGi.NET 学习笔记

    OSGi.NET 学习笔记 [目录]   持续更新和调整中,本人学习笔记,非官方文档,难免疏漏,仅供参考. OSGi.NET SDK下载地址. 前言及环境准备 模块化和插件化 概念 实例 小结 面向服 ...

  2. OSGI.NET 学习笔记--架构篇

    关于osgi.net ,想必大家也听说过,以下是自己在学习osgi.net 过程中整理出来的内容,供大家学习参与使用. 1.  UIOSP 开放工厂框架架构 开放工厂所有插件基于OSGi.NET面向服 ...

  3. OSGI.NET 学习笔记--应用篇

    关于osgi.net ,想必大家也听说过,以下是自己在学习osgi.net 过程中整理出来的内容,供大家学习参与使用. 1.  OSGI.NET 与UIOSP OSGi是Open Service Ga ...

  4. 《深入理解Java虚拟机》学习笔记

    <深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...

  5. 2万字长文包教包会 JVM 内存结构 保姆级学习笔记

    写这篇的主要原因呢,就是为了能在简历上写个"熟悉JVM底层结构",另一个原因就是能让读我文章的大家也写上这句话,真是个助人为乐的帅小伙....嗯,不单单只是面向面试学习哈,更重要的 ...

  6. JVM学习笔记-第七章-虚拟机类加载机制

    JVM学习笔记-第七章-虚拟机类加载机制 7.1 概述 Java虚拟机描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被 ...

  7. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  8. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  9. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

随机推荐

  1. visual studio 声明数组太大,导致栈溢出

    在解释原因前我们先看一下一个由C/C++编译的程序占用的内存分为几个部分: 1.栈区(stack segment):由编译器自动分配释放,存放函数的参数的值,局部变量的值等.在Windows下,栈是向 ...

  2. PLSQL_PLSQL读和写XML文件方式(案例)

    2012-05-01 Created By BaoXinjian

  3. Ubuntu打开终端和设置root密码(转载)

    From:http://blog.csdn.net/xhhjin/article/details/6328752 http://www.linuxsir.org/bbs/thread318516.ht ...

  4. java的内省(introspector)

    package com.wzh.test.introspector; import java.beans.BeanInfo; import java.beans.IntrospectionExcept ...

  5. python argparse模块解析命令行选项简单使用

    argparse模块的解析命令行选项简单使用 util.py #!/usr/bin/env python # coding=utf-8 import argparse parser = argpars ...

  6. ORM框架:EF与NHibernate了解

    在.Net Framework SP1微软包含一个实体框架(Entity Framework),此框架可以理解成微软的一个ORM产品.用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储 ...

  7. android studio 安装报错 unable to run mksdcard sdk tool

    搜了一下原来缺少这个 sudo apt-get install lib32z1 lib32ncurses5  lib32stdc++6

  8. Tesseract-OCR 字符识别---样本训练

    Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持60多种语言(包括中文).  ...

  9. Zabbix监控和分布式部署实施方案

    最近在研究Zabbix监控,由于机房分布在多个城市,因此采用zabbix proxy做为监控方案,在每 个节点部署zabbix proxy,由zabbix proxy收集agentd数据,然后将采集到 ...

  10. SQL字符串分组聚合(分组后的数据查询后用逗号隔开)

    )) , 'aa') , 'bb') , 'aaa') , 'bbb') , 'ccc') go , , '') from tb group by id