260 likes | 365 Vues
Trading for COTS components in Open Environment EUROMICRO’2001 http://www.euromicro.org. WEST – T4. Málaga, May 22-25. Introduction. top-down. bottom-up. CBSE. - times costs efforts + flexibility + reliability + reusability. Software development. Off-the-shelf components.
E N D
Trading for COTS components in Open Environment EUROMICRO’2001 http://www.euromicro.org WEST – T4. Málaga, May 22-25
Introduction top-down bottom-up CBSE • -times • costs • efforts • + flexibility • + reliability • + reusability Software development Off-the-shelf components Repository trader
exporter A trader service 4 importer 5 1 3 export() 2 query() trader
Requirements for a COTS trader Delegation Heterogeneous component model Use of heuristics and metrics Federation Service composition and adaptation extensible/scalable Multiples interfaces. automatic/store and forward push/pull models Signature information is not enough Softmatchmaking
Current traders ODP model: ODP trading service, ISO/ITU-T. • ORBacus (OOC/IONA). http://www.ooc.com • OpenORB (Intalio). http://www.openorb.org • AceORB (TAO). http://www.cs.wustl.edu/schmidt/ACE • VisiBroker (Borland). http://www.borland.com/visibroker
ODP trader shortcomings • Use homogeneous object model. • Use direct federation. • Do not allow service composition or adaptation. • Exact matches at the signature level only. • Do not allow multiple interfaces. • They are based on a push model only.
Services and service types ODP trading service specification: “A service is a set of capabilities provided by an object at a computational level. A service is an instance ofservice type”
export COTS XML repository import COTStrader EXPORTER WEB EXPORT INTERFACE templates WEB IMPORT INTERFACE IMPORTER
COTStrader: spec template Packaging Functional Non Functional Marketing
COTStrader module OnePlaceBuffer { // Provided interfaces interface OnePlaceBuffer { void write(in long x); long read(); }; // Required interfaces interface out { oneway void print(in long x); }; }; Example CORBA IDL
export import COTStrader EXPORTER WEB EXPORT INTERFACE COTS XML repository templates WEB IMPORT INTERFACE IMPORTER
COTStrader: Exporting <?xml-stylesheet type="text/xsl" href="http://www.cotstrader.com/COTS-XMLStyle.xsl"?> <COTScomponent name="OnePlaceBuffer" xmlns="http://www.cotstrader.com/COTS-XMLSchema.xsd" xmlns:types="http://www.w3.org/2000/10/XMLSchema"> <functional>... </functional> <properties> ... </properties> <packaging>... </packaging> <marketing>...</marketing> </COTScomponent>
COTStrader: Exporting Functional information: <functional> <providedInterfaces>. . . </providedInterfaces> <requiredInterfaces>. . .</requiredInterfaces> <serviceAccessProtocol>. . .</serviceAccessProtocol> </functional>
COTStrader: Exporting Functional information example: providedInterfaces. <providedInterfaces> <interface name="OnePlaceBuffer"> <description notation="CORBA-IDL"> ´ interface OnePlaceBuffer { void write(in long x);long read(); }; </description> <behavior notation="Larch"> <description notation= "Java/Larch" href="http://www.cotstrader.com/samp/OPB/OnePlaceBuffer.beh" </description> <exactMatching href="http://liribarn.ual.es:8080/servlet/Larch.exactMatch"/> <softMatching href="http://liribarn.ual.es:8080/servlet/Larch.softMatch"/> </behavior> </interface> </providedInterfaces>
COTStrader: Exporting Functional information example: requiredInterfaces. <requiredInterfaces> <interface name="out"> <description notation="CORBA-IDL">interface out { oneway void print(in long x); } </description> </interface> </requiredInterfaces>
COTStrader: Exporting Functional information : serviceAccessProtocol. <serviceAccessProtocol> <description notation="pi-protocols"> OnePlaceBuffer(ref,out) = ref?write(x,rep).out!print(x). rep!().Full(ref,out,x); Full(ref,out,x)=ref?read(rep).rep!(x).OnePlaceBuffer(ref,out); </description> <exactMatching href="http://liribarn.ual.es:8080/servlet/PI.exactMatching"/> <softMatching href="http://liribarn.ual.es:8080/servlet/PI.softMatching"/> </serviceAccessProtocol>
COTStrader: Exporting Non Functional information example: properties. <properties notation="W3C"> <property name="securityLevel"> <type>xsd:string</type> <value>SAFE</value> </property> <property name="capacity"> <type>xsd:int</type> <value>1</value> </property> <property name="isRunningNow"> <type>xsd:bool</type><!-- dynamic property --> <value href=“...8080/servlet/OnePlaceBuffer.running"/> </property> <property name="keywords"> <type>xsd:string</type> <value>storage,bounded</value> </property> </properties>
COTStrader: Exporting Packaging/architectural information example: packaging. <packaging> <description notation="CCM-softpkg“ href=“.../OPB/Impl_OnePlaceBuffer.csd"/> </packaging>
CCM:http://www.cotstrader.com/examples/OPB/Implement_OnePlaceBuffer.csdCCM:http://www.cotstrader.com/examples/OPB/Implement_OnePlaceBuffer.csd <?xml version="1.0"?> <softpkg name="OnePlaceBuffer_services" version="1.0"> <pkgtype>CORBA Component</pkgtype> <title>OnePlaceBuffer</title> <description>A descriptor example for cotstrader.com</description> <idl id="IDL:example/OnePlaceBuffer:1.0"> <link href="http://www.cotstrader.com/samples/OPB/OnePlaceBuffer.idl"/> </idl> <implementation> <os name="Win95"/><os name="WinNT" version="4.0"/><os name="AIX"/> <processor name="x86"/><processor name="sparc"/> <runtime name="JRE" version="1.3"/> <programminglanguage name="Java"/> <code type="jar"> <fileinarchive name="services.jar"/> <entrypoint>services.OnePlaceBuffer</entrypoint> </code> <threadsafety level="instance"/> <dependency type="ORB"><name>ORBacus</name></dependency> </implementation> </softpkg>
COTStrader: Exporting Marketing information example: marketing. <marketing> <license href="http://www.cotstrader.com/examples/OPB/license.html" /> <expirydate>05-10-2001</expirydate> <certificate href="http://www.cotstrader.com/examples/OPB/lcard.png"/> <vendor> <companyname>E-Brokering corp.</companyname> <webpage>http://www.e-B.com</webpage> <mailto>sales@e-Brokering.com</mailto> <address> <zip>04120</zip> <street>Ctra Sacramento s/n</street> <city>Almeria</city><country>Spain</country> <street>Campus de Teatinos</street> <city>Málaga</city><country>Spain</country> </address> </vendor> <description>A one-place buffer</description> </marketing>
COTStrader EXPORTER WEB EXPORT INTERFACE export COTS XML repository templates import WEB IMPORT INTERFACE IMPORTER
COTStrader: Importing <?xml version='1.0'?><COTScomponent name="Query1" xmlns="http://www.cotstrader.com/COTS-XMLSchema.xsd"> <functional> <providedInterfaces> <interface name="OnePlaceBuffer"> <description notation="CORBA-IDL"> interface OnePlaceBuffer { void write(in long x); long read(); } </description> </interface> </providedInterfaces> </functional> <properties> <property name="securityLevel"><type>xsd:string</type></property> <property name="isRunningNow"><type>xsd:bool</type></property> </properties> </COTScomponent>
COTStrader: Importing <COTSquery name="ClientQuery" xmlns="http://www.cotstrader.com/COTS-XMLSchema.xsd"> <COTSdescription href="http://www.cotstrader.com/Query1.xml" /> <functionalMatching> <interfaceMatching> <exactMatching href="http://www.cotstrader.com/cgi-bin/exactMatch.cgi" /> </interfaceMatching> <serviceAccessProtocolMatching> <softMatching /> </serviceAccessProtocolMatching> </functionalMatching> ...
COTStrader: Importing <COTSquery name="ClientQuery" xmlns="http://www.cotstrader.com/COTS-XMLSchema.xsd"> . . . <propertyMatching><constraints notation="XQuery"> (securityLevel = SAFE) and (isRunningNow = TRUE) </constraints><preferences notation="ODP">firts</preferences> </propertyMatching> <packagingMatching notation="XQuery">description/notation = "CCM-softpkg" and( description/implementation/os/name = "WinNT" or description/implementation/os/name = "Solaris" ) </packagingMatching> <marketingMatching notation="XQuery">vendor/address/country = "Spain" </marketingMatching> </COTSquery>
£ S COTStrader Functional: Two kinds of matchings:ExactSoft Properties, packaging and marketing: Constraints and preferences, XQuery (W3C) Constraints : >, <, >=, <=, =, !=, not, and, or. Preferences : first, random, min(expr), max(expr)
Soft/exact matching Apache/Server Tomcat/Servlets export COTS XML repository import COTStrader EXPORTER WEB EXPORT INTERFACE Query templates WEB IMPORT INTERFACE XQuery XQEngine CORBA/ORBacus IMPORTER Linux/Java