SlideServe
Menu
Préférences
© SlideServe · v2026

Commercial Component Based Design (Part 2)

brone avatar
20 diapositives · 381 Views · Oct 04, 2014

Commercial Component Based Design (Part 2). Corba OLE ActiveX This segment prepared and presented by John Champaign (jchampaign@uwaterloo.ca). CORBA Key Concepts. Common Object Request Broker Architecture Created by Object Management Group (consortium of 700+ companies)

Commercial Component Based Design (Part 2) - slide 1
01 / 20Commercial Component Based Design (Part 2)
1 / 17

Télécharger la présentation

Commercial Component Based Design (Part 2)
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Commercial Component Based Design (Part 2) • Corba • OLE • ActiveX • This segment prepared and presented by John Champaign (jchampaign@uwaterloo.ca)

  2. CORBA Key Concepts • Common Object Request Broker Architecture • Created by Object Management Group (consortium of 700+ companies) • Defines how distributed, heterogeneous objects can interoperate • Location Transparency • Client has no idea where object resides, where it is local or remote • Objects • Gives object-oriented benefits at a higher level (e.g. encapsulation – must access through IDL, polymorphism, inheritance of interfaces, exception handling) • Portable • across platforms, languages, networks • Standard

  3. Simplified Architecture • Interface Definition Language(IDL) • Similar to interfaces in Java or C++ abstract classes • Defines protocol to be used between devices • Allows “wrappers” for legacy systems • Application Programming Interface(API) • Insures consistency for clients and CORBA objects (in theory) • Object Request Broker(ORB) • Middleware establishing client/server relationship • Allows transparent invocation of methods • Intercepts calls, and deals with them (finding an object that can implement the request, pass it the parameters, invoke its method, and return the results) • Client remains ignorant of how calls are dealt with

  4. CORBA Architecture Client Object Implementation IDL Skeleton Object Adapter Dyn. Inter- face IDL Stub ORB Interface Object Services: naming, events, life cycle, persistence, transactions, concurrency, relationships, externalization, object licensing, properties, object query. ORB OS Kernel OS Kernel Network

  5. IDL Interface for Quoter interface Stock { double price (); readonly attribute string symbol; readonly attribute string full_name; }; interface Stock_Factory { Stock get_stock (in string stock_symbol) raises (Invalid_Stock_Symbol); };

  6. Client - Manage ORB in Stock Quoter In client.cpp: int main (int argc, char* argv[]) { try { // First initialize the ORB, that will remove some arguments... CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "" /* the ORB name, it can be anything! */); // Get Reference to desired object // call methods to access object orb->destroy (); } catch (CORBA::Exception &ex) { std::cerr << "CORBA exception raised!" << std::endl; } return 0; } Client.cpp

  7. Client - Get Quoter Object Ref Client.cpp In client.cpp: #include "QuoterC.h” CORBA::Object_var factory_object = orb->string_to_object(argv[1]); Quoter::Stock_Factory_var factory = Quoter::Stock_Factory::_narrow (factory_object.in ()); for (int i = 2; i != argc; ++i) { try { // Get the stock object Quoter::Stock_var stock = factory->get_stock (argv[i]);

  8. Implement Get_Stock Method Stock_ Factory_i.cpp In stock_factory_i.cpp // Return Object Reference Quoter::Stock_ptr Quoter_Stock_Factory_i::get_stock (const char *symbol) throw (Quoter::Invalid_Stock_Symbol) { if (strcmp (symbol, "RHAT") == 0) { return this->rhat_._this(); } else if (strcmp (symbol, "MSFT") == 0) { return this->msft_._this (); } throw Quoter::Invalid_Stock_Symbol (); }

  9. Implementing Stock Interface In stock_i.cpp // Access object class Quoter_Stock_i : public POA_Quoter::Stock { public: Quoter_Stock_i (const char *symbol, const char*full_name, CORBA::Double price); private: std::string symbol_; std::string full_name_; CORBA::Double price_; }; Stock_i.cpp

  10. Stock Operations and Attributes Stock_i.cpp In stock_i.cpp: // Access object class Quoter_Stock_i : public POA_Quoter::Stock { public: // some details omitted char *symbol () throw (CORBA::SystemException); char *full_name () throw (CORBA::SystemException); CORBA::Double price () throw (CORBA::SystemException); }; // In the .cpp file: char * Quoter_Stock_i::symbol () throw (CORBA::SystemException) { return CORBA::string_dup (this->symbol_.c_str ()); }

  11. Implement Server Server.cpp int main (int argc, char* argv[]) { try { // First initialize the ORB, that will remove some arguments… CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "" /* the ORB name, it can be anything! */); CORBA::Object_var poa_object = orb->resolve_initial_references ("RootPOA"); PortableServer::POA_var poa = PortableServer::POA::_narrow (poa_object.in ()); PortableServer::POAManager_var poa_manager = poa->the_POAManager (); poa_manager->activate (); // The application code goes here! // Destroy the POA, waiting until the destruction terminates poa->destroy (1, 1); orb->destroy (); } catch (CORBA::Exception &ex) { std::cerr << "CORBA exception raised!" << std::endl; } return 0; }

  12. Software Bus • CORBA provides a communication infrastructure for a heterogeneous, distributed collection of collaborating objects • Analogous to “hardware bus”

  13. OLE Overview • Object Linking and Embedding • Microsoft 's technology for supporting compound documents • such as the Windows desktop. • A way for Windows to create documents containing objects from other programs. • e.g. place a chart from Excel and a slide from PowerPoint into a Word document. • Components can be re-used by many applications (referred to as component containers).

  14. OLE Example • Pie chart generated by Excel embedded in a word document being displayed in a PowerPoint presentation..

  15. OLE Technology • A set of APIs to create and display a (compound) document • The Component Object Model (COM) now takes in OLE as part of a larger concept. It has become a set of standard COM interfaces • Embedded documents retain all their original properties. If the user decides to edit the embedded data, Windows activates the originating application and loads the embedded document.

  16. OLE Extensions • Automation is an OLE technology, which enables third party applications to remotely control Office applications. • e.g. Puppeteer invokes Automation interfaces to modify application behavior when executing on bandwidth limited platforms. • using Automation interfaces, Puppeteer can act as a buffer for a large PowerPoint presentation, loading slides while the user presents.

  17. ActiveX - Overview • A loosely-defined set of technologies developed by Microsoft, ActiveX is an outgrowth of two other Microsoft technologies called OLE (Object Linking and Embedding) and COM (Component Object Model). ActiveX applies to a whole set of COM-based technologies. • ActiveX control is Microsoft 's answer to the Java technology from . An ActiveX control is roughly equivalent to a applet, but is known as an ActiveX control. • Writing a program to run in the ActiveX environment creates a self-sufficient program that can be run anywhere in your ActiveX network • This component is known as an ActiveX control, and is often used to attach a program to a web page.

  18. ActiveX - Implementation • An ActiveX control can be created using one of several languages or development tools, including C++ and Visual Basic, or PowerBuilder, or with scripting tools such as VBScript. • Currently, ActiveX controls run in 95/98/NT/2000 and in . Microsoft plans to support ActiveX controls for UNIX. • Similar (but different) security issues as applets

  19. Example Sub LoadMSAgent()Resp = Window.Confirm "Use the MS Agent?"If Resp ThenWindow.Alert "Loading ActiveX Controls."Document.WriteLn "<OBJECT ID='Agent' width=0 height=0"Document.WriteLn "CLASSID='CLSID:F5BE8BD2-7DE6-11D0-91FE-00C04FD701A5'"Document.WriteLn " CODEBASE='http://activex.microsoft.com/" & _    "controls/agent/msagent.exe#VERSION=1,5,1,0'>"Document.WriteLn "<" & Chr(47) & "OBJECT>"Document.WriteLn "<OBJECT ID='TruVoice' width=0 height=0"Document.WriteLn " CLASSID='CLSID:B8F2846E-CE36-11D0-AC83-00C04FD97575'"Document.WriteLn " CODEBASE='http://activex.microsoft.com/" & _    "controls/agent/cgram.exe#VERSION=1,5,0,0'>"Document.WriteLn "<" & Chr(47) & "OBJECT>"End IfEnd Sub