Welcome to OSGi.NET, here we’are sharing anything about OSGi for .NET or OSGi4NET, whatever you call it.
OSGi.NET, a dynamic modularization framework, which is a .NET implementation tightly based on OSGi specifications from OSGi Alliance, is designed and developed by Xi’an UI Information Technology, Inc., in China, from 2008.
1, Modernization plug-in supporting
- Physical isolation: each OSGi.NET component is an isolated part in physical layer which means any one of them has its own folders, types, resources and Class Loader. They are completely independent and no physical contact with each
- Highly reusable: just fully copy component files to the specified folder, its service or functionality will be exposed to other ones immediately, without any changes.
- Standardization: every component follows the same standard, the same folder structure, the same configuration and the same developing way.
- Fast integration: simply copy component files to the specified plug-in folder, the integration will be done without any further configuration.
- Easy to deploy and upgrade: copying is the only thing we need to do.
2, Hot swapping and dynamic supporting
- Hot swapping: all of the components can be installed or uninstalled without system rebooting.
- Life cycle: there are 7 life-cycle status, “Installed, Resolved, Starting, Activated, Stopping, Stopped and Uninstalled”. In each of status, the component will have different behavior and functionality.
- Dynamic: the component could expose or hide its functionality through life-cycle status switching, so that its service, extension or other functionality will be exposed dynamically.
- Remote deployment: OSGi.NET supports remote deployment, which means we can install, start and stop a component remotely, and more we can subscribe the Change Event in Component Store and synchronize when needed.
3, SOA (Service-Oriented Architecture) supporting
- Service-binding model: OSGi.NET supports the typical service-binding model, “Register Service -> Search Service -> Bind Service”, so service provider register its service in Registry, then service consumer
search and bind the needed service from Registry.
- Separation of interface and implementation: every single service is combined by interface and implementation, which means, here, interface is a service contract and implementation is an instance of the class implemented this interface.
4, Module extension supporting
- Extension point: using XML node <ExtensionPoint> to define an extension point in a component and expose itself to other components. This component will monitor and handle this extension from others.
- Extension: using XML node <Extension> to define an extension in a component and extend the component which exposes this extension point. This XML node will be posted to the component exposes this extension point through Extension
- Dynamical extension: the component will register or unregister the extension point and extension when it starts or stops. OSGi.NET will handle this change dynamically through Extension Changed Event in the context.
- Zero coupling: the extension between two components is only configured in an editable XML, no physical coupling.
5, Multi-environment applications supporting
- Supports Console Application.
- Supports Windows Service Application.
- Supports Windows Forms Application.
- Supports WPF Application.
- Supports ASP.NET Web Application.
- Of course, you can also build your own Windows Mobile Application on UIOSP.
- Supports ASP.NET MVC (3 or above) Web Application.