2005/5/10

     
 

ACDK DMI

artefaktur

| Introduction | Features | History | Comparison | Java Conformance | Library | ACDK DMI | Framework | Method | Standard |



The most powerfull aspect in ACDK is its seemless interconnectivity to many scripting languages and distributed component technologies.


Content of this chapter:

   (D)COM, CORBA, .NET and JavaOne
   Scripting
   ACDK DMI
     DMI Server
     DMI Clients
     Chained DMI



 (D)COM, CORBA, .NET and JavaOne


COM, CORBA, .NET and Sun ONE has 3 approaches to integrate applications.
  • Common Object Model is used by Microsoft as standard interface between communicating applications.
  • CORBA defines a remote call interface sourounded with a zoo of specification, how application should use this call interface.
  • JavaOne is a specification build on top of language Java and JavaEnterprise Beans.
  • .NET from Microsoft specifies a new runtime environment, class library and Language (C#).

 Scripting

With scripting the barrier between the developer and the customer/user of a application becomes lower.

 ACDK DMI

Connected to the metainfo of a class ACDK can bind scripting languages, to distributed components.

 DMI Server

DMI Server implements the server part of the DMI communication.
ACDK, COM, CORBA and Java classes/interfaces are DMI servers.

 DMI Clients

DMI Clients can instantiate and use DMI Servers without any further interface clue code. DMI Clients in ACDK are ACDK itself, COM and CORBA clients, Perl, Lisp, Python, Tcl, and through COM also VisualBasic, C#, VBScript, JScript.

Each DMI Client and DMI Server can be communicate with each other.


 Chained DMI


Because ACDK DMI is chainable, you can use ACDK as middleware to connect a DMI client (for example scripting language) with a DMI server (for Example a COM Object) which originally have no connection.
Following an example with python as client and COM as server.


import acdk
classloader = acdk.Object("acdk/lang/ClassLoader")
classloader.findClass("acdkx/com/ComObject")
word = acdk.invoke_static("acdkx/com/ComObject", "New", "Word.Application")
word.poke("Visible", 1)
doc = word.peek("Documents").Add()
sel = word.peek("ActiveWindow").peek("Selection")
sel.TypeText("This is ")
sel.peek("Font").poke("Bold", 1)
sel.TypeText("ACDK")
sel.peek("Font").poke("Bold", 0)
sel.TypeText(" instrumenting Word through acdk_python")
acdk.invoke_static("acdk/lang/Thread", "sleep", 3000)
word.Quit(0)

With the DMI client API for Python it creates a Object "acdkx/com/ComObject". This object works as a proxy to the underlying COM application (here Microsoft Word). From the python view point the object is a native ACDK object, and all methods and member can be used without further indirection.