Further Component Oriented Systems Deepak Dhungana
[email protected] Institute for System Engineering and Automation Thomas Wuerthinger
[email protected] Institute for System Software Johannes Kepler University Linz, Austria http://www.jku.at On the agenda today • Plux.NET • Mozilla • Microsoft COM • Visual Studio Plux.NET OSGi package host; class PrintItem interface IMenuItem { implements IMenuItem { ... ... Host.java } PrintItem.java } void start(BundleContext bc) { Dictionary p = new Properties(); void start(BundleContext bc) { props.put("Text", "Print"); bc.addServiceListener(this, props.put("Icon", "Print.ico"); "(&(objectclass=IMenuItem))") bc.registerService( } IMenuItem.class.getName(), Activator.java void serviceChanged(...) { ... } Activator.java new PrintItem(), p); } Manifest-Version: 1.0 Manifest-Version: 1.0 Bundle-Name: Host Bundle-Name: PrintItem Bundle-Activator: Activator Bundle-Activator: Activator host.mf Export-Package: host host.mf Import-Package: host Eclipse <plugin> <plugin> <extensions-point id="menuitem" <extensions point "menuitem"> 11 schema="schema.exsd"/> <menuitem plugin.xml ... class="PrintItem" </plugin> 66 Text="Print" plugin.xml Icon="Print.ico"/> <attribute name="class" type="string"/> </extension> <attribute name="Text" type="string"/> </plugin> 22 <attribute name="Icon" type="string"/> schema.exsd same as OSGi same as OSGi 33 44 55 77 88 99 Host.java Activator.java host.mf PrintItem.javaActivator.java host.mf Plux.NET Host.cs PrintItem.cs [Extension("PrintItem")] [Plug("MenuItem")] [SlotDefinition("MenuItem")] [ParamValue("Text", "Print")] [Param("Text", typeof(string))] [ParamValue("Icon", "Print.ico")] [Param("Icon", typeof(string))] class PrintItem: IMenuItem { interface IMenuItem { ... ... } } Wolfinger, R., Dhungana, D., Prähofer, H., and Mössenböck, H.: A Component Plug-in Architecture for the .NET Platform. 7th Joint Modular Languages Conference (JMLC), 2006. Plux.NET •Adopt and adapt plug-in components to domain of enterprise applications.