11.07.2015 Views

Download this PDF file - Riviste

Download this PDF file - Riviste

Download this PDF file - Riviste

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Rosca D. – Bănică L. – ActiveX - An Internet Strategy for Applications Developmentand Web server extensions quite easily. This feat is achieved by using ActiveX controls, Activeclient and server side scripts, and the Active document interfaces and ISAPI (Internet ServerApplication Programming Interface).An ActiveX control is an object that supports a customizable, programmatic interface. Usingthe methods, events, and properties exposed by a control, Web authors can automate their HTMLpages. Examples of ActiveX Controls include text boxes, command buttons, audio players, videoplayers, stock tickers, and so on.You can develop ActiveX Controls using Microsoft Visual Basic, Microsoft Visual C++, andJava. Because ActiveX Controls are complex, Microsoft offers some tools that help a C++developer create an ActiveX control. The following table describes these tools:Tool Description Ships withA set of C++ classes that support ComponentObject Model (COM), OLE, and ActiveX(among other things). MFC provides thesimplest means of creating ActiveX Controls.Microsoft FoundationClasses (MFC)Microsoft ActiveXTemplate LibraryA set of C++ templates designed to createsmall and fast COM objects.Visual C++ version 4.2 or later.(MFC ships with earlier versions ofVisual C++; however, theseversions do not support ActiveX.)Active Template Library (ATL) 2.1ships with Visual C++ version 5.0.(ATL 2.0 is a Web release thatrelies on the Visual C++ 4.2 IDE.)3 – Classifying ActiveX ComponentsActiveX components can be classified and broken into the following categories:- Automation Servers- Automation Controllers- Controls- COM Objects- Documents- ContainersAutomation Servers are components that can be programmatically driven by otherapplications. An Automation Server contains at least one, and possibly more, IDispatch-basedinterfaces that other applications can create or connect to.An Automation Server may or may not contain User Interface (UI), depending on the natureand function of the Server.- © 2007 p. 117


Rosca D. – Bănică L. – ActiveX - An Internet Strategy for Applications DevelopmentAutomation Servers can be in-process (executing in the process space of the Controller),local (executing in its own process space), or remote (executing in a process space on anothermachine). The specific implementation of the server will, in some cases, define how and wherethe server will execute, but that is not guaranteed. A DLL can execute as either in-process, localor remote; an EXE can execute only locally or remotely.Automation Controllers are those applications that can use and manipulate AutomationServers. A good example of an Automation Controller is VB. An Automation Controller can beany type of application, DLL or EXE, and can access the Automation Server either in-process,locally, or remotely. Typically, the registry entries and the implementation of the AutomationServer indicate which process space the server will execute in relation to the Controller.ActiveX Controls (formerly known as OLE control) has a broader definition. It refers to anyCOM objects. For instance, the following objects are all considered an ActiveX control.- Objects that expose a custom interface and the IUnknown interface- OLE automation servers that expose the IDispatch/Dual interfaces- Existing OLE controls (OCX)- OLE objects that make use of monikers- Java Applet with the support of COMActiveX Control used inside scripting languages make <strong>this</strong> binary reusable componentsreused in the Internet world. Almost any type of media wrapped into an ActiveX control can beseamlessly integrated into your Web page. Sound, video, animation, or even credit-cardapprovals controls can be used within your Web page.4 – COM: The Fundamental "Object Model" for ActiveX and OLECOM (Component Object Model) is the technical cornerstone for the ActiveX technology; itdefines how objects expose themselves for use within other objects and how objects cancommunicate between processes and across a network. You can easily integrate COM objects foruse in many languages, such as Java, Basic, and C++. COM objects are reusable binarycomponents.The following concepts are fundamental to COM:- Interface: The mechanism through which an object exposes itself.- IUnknown Interface: The interface on which all others are based. It implements the referencecountingand interface-querying mechanisms required for COM objects.- © 2007 p. 118


Rosca D. – Bănică L. – ActiveX - An Internet Strategy for Applications Development- Reference Counting: The technique by which an object keeps track of its reference instancecount. The instance of the object class should be deleted when there is no reference to <strong>this</strong>instance.- QueryInterface Method: It is called with the Interface ID (IID) to which the caller wants apointer. Can be generated by Guidgen.exe by choosing DEFINE_GUID(...) format.QueryInterface enables navigation to other interfaces exposed by the object.- IClassFactory Interface: This interface must be implemented for every object class. Itprovides functionality to create an instance of the object class with CLSID and locks the objectserver in memory to allow creation of objects more quickly.- Marshaling: The mechanism that enables objects to be used across process and networkboundaries, allowing interface parameters for location independence by packing and sendingthem across the process boundary. Developers have to create proxy/stub dll for the custominterfaces if exist. The custom interface has to be registered in the system registry.- Aggregation: COM object supports an interface by including another object that supports thatinterface. The containing object creates the contained object as part of its own creation. The resultis that the containing object exports the interface for the contained object by not implementingthat interface.- Multiple Inheritance: A derived class may inherit from multiple interfaces.5 – ActiveX Object ModelThere are two primary pieces to the ActiveX Object Model: the Microsoft HyperText MarkupLanguage (HTML), Viewer component (MSHTML.dll) object and the Web Browser Control(shdocvw.dll). Both are in-process (DLL-based) COM objects.classes.All interfaces defined in the ActiveX Object Model are "dual" interfaces. A "dual" interfacemeans that the objects inherit from IDispatch and IUnknown. They can be used by clientapplication at "early-bind" via Vtable and at "late bind" via OLE automation controller by usingIDispatch::GetIdsOfNames and IDispatch::Invoke.vtable).MSHTML is the HTML viewer part of Microsoft Internet Explorer 3.0. It is an in-processCOM server and a Document Object. It can be hosted in OLE Document Object containers.MSHTML implements the OLE Automation object model described in the HTML ScriptingObject Model. With <strong>this</strong> object model, you can develop rich multimedia HTML content.VBScript running inline in the HTML and Visual Basic 4.0 running external to the HTML canuse the object model.- © 2007 p. 119


Rosca D. – Bănică L. – ActiveX - An Internet Strategy for Applications DevelopmentThe Web browser control object is an in-process COM Server. It also serves as a DocumentObject container that can host any Document Objects, including MSHTML, with the addedbenefit of fully supporting hyperlinking to any document type.The Web browser control is also an OLE control. The IWebBrowser interface is the primaryinterface exposed by the Web Browser Control.The Web browser control is the core of what customers see as "the Internet Explorer 3.0product". Internet Explorer 3.0 also provides a frame to host <strong>this</strong> control. Internet Explorer 3.0supports the following HTML 3.x0 extensions:- Frame: Creates permanent panes for displaying information, supporting floating frames orborderless frames- NOFRAMES: Content that can be viewed by browsers not supporting frames- OBJECT: Inserts an OLE control- TABLE: Fully compliant with HTML 3.x0 tables with cell shading and text wrapping- StyleSheet: font size, intra-line space, margin, highlighting and other features related withstyles can be specified in the HTML by the user- In-Line sound and videoActiveX Documents, or DocObjects as they were originally called, represent Objects that aremore than a simple Control or Automation Server. A document can be anything from aspreadsheet to a complete invoice in an accounting application. Documents, like Controls, haveUI and are hosted by a Container application. Microsoft Word and Excel are examples ofActiveX Document Servers, and the Microsoft Office Binder and Microsoft Internet Explorer areexamples of ActiveX Document Containers. The ActiveX Document architecture is an extensionof the OLE Linking and Embedding model and allows the document more control over thecontainer in which it is being hosted. The most obvious change is how the menus are presented.A standard OLE Document's menu will merge with the Container, providing a combined featureset; whereas an ActiveX Document will take over the entire menu system, thus presenting thefeature set of only the document and not that of both the Document and the Container. The factthat the feature set of the Document is exposed is the premise for all the differences betweenActiveX Documents and OLE Documents. The Container is just a hosting mechanism, and theDocument has all of the control. ActiveX Documents are used within a uniform presentationarchitecture, rather than within an embedded document architecture, which is the basis for OLEDocuments. Microsoft Internet Explorer is a perfect example of <strong>this</strong>. The Explorer merelypresents the Web pages to the user, but they are viewed, printed, and stored as a single entity.Microsoft Word and Microsoft Excel are examples of the OLE Document architecture. If an- © 2007 p. 120


Rosca D. – Bănică L. – ActiveX - An Internet Strategy for Applications DevelopmentExcel spreadsheet is embedded in a Word document, the spreadsheet is actually stored with theWord document and is an integral part of it.ActiveX Documents also have the added capability of being published as Web pages on theInternet or on a corporate intranet. Imagine an in-house tracking system for purchase orders runfrom the same Web browsers that are used to connect to the Internet.ActiveX Containers are applications that can host Automation Servers, Controls, andDocuments. VB and the ActiveX Control Pad are examples of Containers that can hostAutomation Servers and Controls. The Microsoft Office Binder and the Microsoft InternetExplorer can host Automation Servers, Controls, and Documents. With the decreasingrequirements defined by the ActiveX Control and Document specifications, a Container must berobust enough to handle the cases where a Control or Document lacks certain interfaces.Container applications may allow little or no interaction with the Document or Control they host,or they may provide significant interaction capabilities in both manipulation and presentation ofthe hosted component. This capability, however, is dependent upon the Container hosting thecomponent and is not defined by any of the Container guidelines as being required.6 – ConclusionsA specification is important to establish the basic requirements of the component you are askedto create. Before you can proceed, you must have a clear understanding of what kind ofcomponent or application is needed and why you are creating it. Appropriate questions to ask are,"What created the need for the component, and how is it going to be used?" If the person orpersons can't describe the problem, they probably don't understand the problem. The last thinganyone needs is an incomplete picture of the problem, which tends to create delays and promotelast minute changes that can cause unexpected results. Try to get as much of the specification aspossible on paper.After you determine the need, you can move on to designing the component. Again, it iscritical to get as much information as possible. Does the problem require a single component ormultiple components? Do the components need the capability to interact together? And, if so, isspeed an issue? What about the skill level of your developers? How are they able to cope withchange or possibly new and unfamiliar development methods? What are the support andmaintenance requirements?All these issues and more will affect the kind of component you create and how you willdevelop it. As a developer of ActiveX components, it is your responsibility to know the answersto these questions.- © 2007 p. 121


Rosca D. – Bănică L. – ActiveX - An Internet Strategy for Applications DevelopmentReferencesWeiying Chen et al. (1996), ActiveX Programming Unleashed, Macmillan Computer Publishing, USAGroup Que (1997), ActiveX Programming with Visual C++ 5, Macmillan Computer Publishing, USAhttp://www.microsoft.comhttp://www.activex.com- © 2007 p. 122

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!