com, dcom heterogeneous dcom and microsoft dna richard j. bonneau, ph. d. systems application...
TRANSCRIPT
COM, DCOMCOM, DCOM Heterogeneous DCOM Heterogeneous DCOM
andandMicrosoft DNAMicrosoft DNA
Richard J. Bonneau, Ph. D.Richard J. Bonneau, Ph. D.
Systems Application Integration Engineering Systems Application Integration Engineering (SAIE)(SAIE)
Industry Solutions Division (ISD)Industry Solutions Division (ISD)
Compaq Computer Corp.Compaq Computer Corp.
With Acknowledgements to:With Acknowledgements to:Developing With COM Developing With COM On UNIX And OpenVMSOn UNIX And OpenVMS
Mohan Rao CavaleMohan Rao Cavale Frank Hayes Frank Hayes Gaitan D’Antoni Gaitan D’AntoniDevelopment Lead Development Lead Engineering Manager Project Leader Engineering Manager Project Leader
COM/UNIX COM/UNIX COM For Digital UNIX COM For OpenVMS COM For Digital UNIX COM For OpenVMS Microsoft Corporation Microsoft Corporation Compaq Compaq Compaq Compaq
Goals of talkGoals of talk
High levelHigh level and and code-levelcode-level view of the view of the COM/DCOM conceptsCOM/DCOM concepts
See a COM/DCOM demo liveSee a COM/DCOM demo live Extensions of DCOM to Heterogeneous Extensions of DCOM to Heterogeneous
platformsplatforms DNA as industry-level solutions DNA as industry-level solutions
integration frameworkintegration framework– Infrastructure ComponentsInfrastructure Components– Industry Integration EffortsIndustry Integration Efforts
Presentation CaveatsPresentation Caveats
““Techy talk” - not marketing hypeTechy talk” - not marketing hype Not comprehensive - nor in-depthNot comprehensive - nor in-depth A broad brush of many conceptsA broad brush of many concepts Hands-on - tools (VC++, VB, Hands-on - tools (VC++, VB,
registry, ...), code segments in VB/VC, registry, ...), code segments in VB/VC, examples (VB and VC) …examples (VB and VC) …
Not an expert - just a knowledgeable Not an expert - just a knowledgeable user who likes to lecture !!!user who likes to lecture !!!
OutlineOutline
COM - the basicsCOM - the basics A COM demo or two ...A COM demo or two ... Distributing COMDistributing COM Heterogeneous COM - OVMS and Heterogeneous COM - OVMS and
Tru64 UNIXTru64 UNIX Future of COM: DNA components and Future of COM: DNA components and
DNA for different industriesDNA for different industries SummarySummary
An Important Equation!An Important Equation!
For all intents and purposes:For all intents and purposes:
OLE = COM = DCOM = ActiveX = COM+ OLE = COM = DCOM = ActiveX = COM+ !!!!!!
Simplifies the TLA world considerably!!Simplifies the TLA world considerably!!
An Important InEquation!An Important InEquation!
COM Objects = C++ ObjectsCOM Objects = C++ Objects
Although they can be implemented Although they can be implemented using C++ objects or Java objects using C++ objects or Java objects or even VB objects or even VB objects
/
COM - the basicsCOM - the basics
CComponent omponent OObject bject MModel odel Components - critical to development of - critical to development of
distributed 3-tier enterprise applicationsdistributed 3-tier enterprise applications– provide services to requestors (clients)provide services to requestors (clients)– small units of software for dev and maintsmall units of software for dev and maint– easily deployed and accessibleeasily deployed and accessible
‘‘Everything’ in MS Windows 9x/NT is a Everything’ in MS Windows 9x/NT is a component!!component!!
COM - the evolutionCOM - the evolution
Ultimate goal - software reusability!!Ultimate goal - software reusability!! ““In the beginning” - Single program In the beginning” - Single program
source filesource file Procedures/functions and #includeProcedures/functions and #include Compile functions into a library and Compile functions into a library and
link into final imagelink into final image Have compiled routines in a separate Have compiled routines in a separate
sharable library or dynamic link librarysharable library or dynamic link library
COM - the evolution - part COM - the evolution - part IIII
On source level - Objects as organizing On source level - Objects as organizing principle - Within a given program or through principle - Within a given program or through include filesinclude files
Object libraries- reduce compilation overheadObject libraries- reduce compilation overhead What’s important? -What’s important? - the method calls the method calls InterfaceInterface as as
– collection of methods collection of methods – a connection point between client and object servera connection point between client and object server
Collect interfaces into separate containers - Collect interfaces into separate containers - called called COMPONENTSCOMPONENTS!!
The basics - continuedThe basics - continued
Interface: A rigorously defined binary Interface: A rigorously defined binary structure allowing independent structure allowing independent development of clients and serversdevelopment of clients and servers
MS designed to be language, MS designed to be language, platform, hardware neutral!!platform, hardware neutral!!
Defines the programming Defines the programming contractcontract between client and serverbetween client and server
The interface - continuedThe interface - continued
Derived from some known issues in doing Derived from some known issues in doing multi-platform C++ development - see multi-platform C++ development - see Don Box book (Essential COM)Don Box book (Essential COM)
Simple concept with sweeping Simple concept with sweeping implications when used universally - implications when used universally - sound like Microsoft??sound like Microsoft??
A component is then a software vehicle A component is then a software vehicle for providing access to one or more for providing access to one or more interfacesinterfaces
Universal Interface Universal Interface definitions - IDLdefinitions - IDL
interface IWarehouse : IDispatch interface IWarehouse : IDispatch
{{
HRESULT OrderFulfill(HRESULT OrderFulfill(
[in] long lPartNumber, [in] long lPartNumber,
[in] long lNumItems, [in] long lNumItems,
[out] unsigned char * ucpResult);[out] unsigned char * ucpResult);
HRESULT Reset ([in] long ReStockValue);HRESULT Reset ([in] long ReStockValue);
} ;} ;
The COM pictureThe COM picture A Component ‘exposes’ one or A Component ‘exposes’ one or
more Interfacesmore Interfaces Clients ‘acquire’ a pointer to one or Clients ‘acquire’ a pointer to one or
more interfaces more interfaces Client uses them to Client uses them to
call the methodscall the methodsComponent
Interfaces
Client
The Interface - more The Interface - more detailsdetails
Pointer to method 1
Pointer to method 2
Pointer to method 3
Pointer to method 4
Pointer to method 5
Pointer
ClientInterface Pointer
ObjectMethod 1(…)
Method 2(…)
Method 3(…)
Method 4(…)
Method 5(…)
“Vtable”
So how DOES COM work?So how DOES COM work?
A client needs to get a hold of an A client needs to get a hold of an interface on a component - interface on a component - key task!key task!
Once that is done, it just calls the Once that is done, it just calls the methods associated with the interface methods associated with the interface through the interface pointer!through the interface pointer!
How easy to do that?How easy to do that? Sample code in VB - next slideSample code in VB - next slide
CodeCodeVisual Basic clientVisual Basic client
Dim ICObj As ObjectDim ICObj As Object
……....
Private Sub Command1_Click()Private Sub Command1_Click()
Set ICObj = Set ICObj = CreateObject("DCOMDEMO.InventoryControllerServerCreateObject("DCOMDEMO.InventoryControllerServer")")
......
End SubEnd Sub
……..
Call ICObj.Call ICObj.ProcessOrderProcessOrder(lPartNumber, lNumItems, (lPartNumber, lNumItems, lNumOrders, ucpResult, lpNumOrdersFilled)lNumOrders, ucpResult, lpNumOrdersFilled)
So how is this not just So how is this not just RPC?RPC?
Some rules about being “COM”Some rules about being “COM” Must implement the IUnknown Must implement the IUnknown
Interface with three methodsInterface with three methods– QueryInterfaceQueryInterface– AddRefAddRef– ReleaseRelease
Rules around maintaining counts of Rules around maintaining counts of COM instances… vestigial and COM instances… vestigial and cumbersomecumbersome
How to get that interface How to get that interface pointer??pointer??
The Registry!The Registry! All servers/components/interfaces register All servers/components/interfaces register
themselves - using globally unique identifiers themselves - using globally unique identifiers (GUIDs and CLSIDs) (GUIDs and CLSIDs)
Clients (through COM library calls) access the Clients (through COM library calls) access the registry (by this unique identifier) to registry (by this unique identifier) to – find out where the server isfind out where the server is– get an interface pointerget an interface pointer– then just do a “function call” through the ptr!then just do a “function call” through the ptr!
A quick peek at registry ...A quick peek at registry ...
HKEY_CLASSES_ROOTHKEY_CLASSES_ROOT CLSID key - organized by GUIDs - ugh!CLSID key - organized by GUIDs - ugh! APPID key - organized by names …APPID key - organized by names … TypeLib key - GUID’s again!TypeLib key - GUID’s again!
Messy - slow - CRITICAL!Messy - slow - CRITICAL! Other tools = e.g. OleView - more user Other tools = e.g. OleView - more user
friendly!friendly!
What really happens?What really happens?
Client
COM library
Service Control Manager(SCM)
Registry
Based on GUID, SCM looks up the server, if necessary loads/starts it and obtains a pointer to the requested interface, returns it to the client.
Server
COM library
A very COM simple demo - A very COM simple demo - VB!VB!
MS has made VB the environment of MS has made VB the environment of choice to quickly build COM choice to quickly build COM applicationsapplications
Let’s make both a server/component Let’s make both a server/component and a client and a client
And get them to talk to each other …And get them to talk to each other … It’s “too easy”, especially in relation to It’s “too easy”, especially in relation to
VC++!VC++!
What a COM client needs What a COM client needs to do ...to do ...
Call Call CoInitCoInit - to init the COM - to init the COM environmentenvironment
Call Call CoCreateInstanceCoCreateInstance - to request - to request access to an interface on a access to an interface on a server/componentserver/component
Use the returned interface pointer to Use the returned interface pointer to call component’s interface methodscall component’s interface methods
Look at some sample C++ code??Look at some sample C++ code??– Warehouseclient.cxxWarehouseclient.cxx
What a COM component or What a COM component or server needs to do ...server needs to do ...
Implement the methods of the Implement the methods of the interface(s) it supports, including the interface(s) it supports, including the inherited IUnknown methodsinherited IUnknown methods– May use C++ objects & methods for COM May use C++ objects & methods for COM
interface methodsinterface methods Register with the registry as a Register with the registry as a
component (self-registry recommended)component (self-registry recommended) Look at some sample C++ code??Look at some sample C++ code??
– Warehouse.cxxWarehouse.cxx
A more complex demoA more complex demo
Developed by Digital/Compaq for MS PDC Developed by Digital/Compaq for MS PDC last Octoberlast October
To demonstrate heterogeneous DCOM on To demonstrate heterogeneous DCOM on all Compaq’s platforms (plus one)all Compaq’s platforms (plus one)
Simple 3-tier factory inventory modelSimple 3-tier factory inventory model Uses COM/DCOM throughout on all the Uses COM/DCOM throughout on all the
platformsplatforms Actually same code base used for all the Actually same code base used for all the
servers (not the GUI client!)servers (not the GUI client!)
COMCOM
COMCOM
COMCOM
COMCOM
WarehouseWarehouseInventoryInventorycontrollercontroller
WarehouseWarehouse
WarehouseWarehouse
Demo Architecture Demo Architecture
ClientClient
InventoryInventorycontrollercontroller
The methods = the The methods = the interfacesinterfaces
Inventory Controller (IInventoryController) Inventory Controller (IInventoryController) MethodsMethods
Process OrderProcess Order - try to fill an order from - try to fill an order from one or more warehousesone or more warehousesGet StatisticsGet Statistics - tell how well you have - tell how well you have been able to service ordersbeen able to service ordersReset StatisticsReset Statistics - clean stats out for - clean stats out for another recording periodanother recording period
Warehouse Methods (IWarehouse)Warehouse Methods (IWarehouse)OrderFulFillOrderFulFill - can you fill a specific order - can you fill a specific order for a part and quantity?for a part and quantity?ResetReset - magically restock the factory - magically restock the factory
CodeCodeInterface definitionsInterface definitions
// Interface IInventoryController// Interface IInventoryController
[[
object,object,
uuid(6fc9d540-4c46-11d2-9147-004005193783),uuid(6fc9d540-4c46-11d2-9147-004005193783),
helpstring("IInventoryController Interface"),helpstring("IInventoryController Interface"),
pointer_default(unique),pointer_default(unique),
dual,dual,
oleautomationoleautomation
]]
......
CodeCodeInterface definitionsInterface definitions
interface IInventoryController : IDispatch interface IInventoryController : IDispatch {{
import "oaidl.idl" ;import "oaidl.idl" ;HRESULT ProcessOrder (HRESULT ProcessOrder (
[in] long lPartNumber,[in] long lPartNumber,[in] long lNumItems, [in] long lNumItems, [in] long lNumOrders, [in] long lNumOrders, [out] unsigned char * ucpResult,[out] unsigned char * ucpResult,[out] long * lpNumOrdersFilled);[out] long * lpNumOrdersFilled);
HRESULT ResetStatistics ();HRESULT ResetStatistics ();HRESULT GetStatistics ([out] long * lpTotalOrders,HRESULT GetStatistics ([out] long * lpTotalOrders,
[out] long * lpTotalOrdersFilled,[out] long * lpTotalOrdersFilled,[out] long * lpTotalBackorders);[out] long * lpTotalBackorders);
} ;} ;
CodeCodeInterface definitionsInterface definitions
// Component and type library descriptions// Component and type library descriptions[[
uuid(70fe8120-4c46-11d2-9147-004005193783),uuid(70fe8120-4c46-11d2-9147-004005193783),version(1.0),version(1.0),helpstring("Compaq DCOM Demo - Inventory Controller helpstring("Compaq DCOM Demo - Inventory Controller Server 1.0 Type Library")Server 1.0 Type Library")
]]library InvctrLiblibrary InvctrLib{{ importlib("stdole2.tlb") ;importlib("stdole2.tlb") ;
// InventoryController server/class// InventoryController server/class[ uuid(717738f0-4c46-11d2-9147-004005193783),[ uuid(717738f0-4c46-11d2-9147-004005193783),
helpstring("Inventory Controller Class") helpstring("Inventory Controller Class") ]]coclass InventoryControllercoclass InventoryController{{ [default] interface IInventoryController ;[default] interface IInventoryController ; } ;} ;
} ;} ;
CodeCodeInterface definitionsInterface definitions
interface IWarehouse : IDispatch interface IWarehouse : IDispatch
{{
HRESULT OrderFulfill(HRESULT OrderFulfill(
[in] long lPartNumber, [in] long lPartNumber,
[in] long lNumItems, [in] long lNumItems,
[out] unsigned char * ucpResult);[out] unsigned char * ucpResult);
HRESULT Reset ([in] long ReStockValue);HRESULT Reset ([in] long ReStockValue);
} ;} ;
Let’s run it now ...Let’s run it now ...
All processes running on single systemAll processes running on single system Bring up VC++-based GUI Front EndBring up VC++-based GUI Front End Creates executing component servers at both Creates executing component servers at both
back end tiersback end tiers Initializes all product stock to 1000Initializes all product stock to 1000 Awaits client commands toAwaits client commands to
– Select nodes to participateSelect nodes to participate– Request ordersRequest orders– Check/reset statisticsCheck/reset statistics
A Visual Basic GUI ClientA Visual Basic GUI Client
Using Rapid Development ToolsUsing Rapid Development Tools Accesses same (interface) Accesses same (interface)
functionality as VC++ Clientfunctionality as VC++ Client Puts results onto an excel Puts results onto an excel
spreadsheet using a macro - displays spreadsheet using a macro - displays a bar chart for results - again using a bar chart for results - again using COM calls to Excel as a COM objectCOM calls to Excel as a COM object
Has an automatic order feature ...Has an automatic order feature ...
COMCOM
COMCOM
COMCOM
COMCOM
WarehouseWarehouseInventoryInventorycontrollercontroller
WarehouseWarehouse
ExcelExcel(stats.xls)(stats.xls)
Demo Architecture - Part II Demo Architecture - Part II
ClientClientVC++VC++
ClientClientVBVB
DCOM - a DCOM - a slightslight enhancementenhancement
Now in the real world, we want to be able Now in the real world, we want to be able to get services from servers - wherever to get services from servers - wherever they may be!they may be!
So let’s extend COM to be able to call So let’s extend COM to be able to call interfaces on components located ON interfaces on components located ON OTHER SYSTEMS!OTHER SYSTEMS!
In windows world, distribute DLLs easilyIn windows world, distribute DLLs easily A natural application/extension of the A natural application/extension of the
RPC model between network nodesRPC model between network nodes
What really happens now?What really happens now?
Client
COM library
Service Control Manager(SCM)
Registry
Server
COM library
Service Control Manager(SCM)
Registry
Node A Node B
DCOM -how does it work?DCOM -how does it work? Cooperation at the OS level between Cooperation at the OS level between
platformsplatforms Requires platform OS implementations Requires platform OS implementations
of of – COM RunTime servicesCOM RunTime services– RegistryRegistry– SCM (Service Control Manager) , etc.SCM (Service Control Manager) , etc.
Several different models for distributionSeveral different models for distribution
Two Approaches to Two Approaches to Distributing ComponentsDistributing Components
Non-intrusive DistributionNon-intrusive Distribution– uses existing components and clientsuses existing components and clients
Explicit DistributionExplicit Distribution– requires client side changesrequires client side changes
Non-intrusive DistributionNon-intrusive Distribution
use clients and components use clients and components as as they existthey exist
clients locate component servers clients locate component servers through registry settingsthrough registry settings
registry can be set to point to registry can be set to point to remote serversremote servers
DCOMCNFG utility manages DCOMCNFG utility manages components - components - let’s see!let’s see!
Non-intrusive DistributionNon-intrusive Distribution
Client
Com Library
SCM - Service Control Manager
registry
Server
SCM - Service Control Manager
registry
RemoteServerInformation
Node A Node B
Explicit DistributionExplicit Distribution
clients use COM library calls to clients use COM library calls to create/locate server on create/locate server on specificspecific remote remote node - I.e. CoCreateInstancenode - I.e. CoCreateInstanceExEx
COM bypasses local registry and COM bypasses local registry and communicates directly to SCM on communicates directly to SCM on remote noderemote node
Note: remote node server registry entry Note: remote node server registry entry may itself point to another remote may itself point to another remote node!node!
Explicit DistributionExplicit Distribution
Client
Com Library
SCM - Service Control Manager
registry
Server
SCM - Service Control Manager
registryRemoteServerX
Node A Node B
Explicit DExplicit DCOM CodeCOM CodeVisual Basic clientVisual Basic client
Dim ICObj As ObjectDim ICObj As Object
……....
Private Sub Command1_Click()Private Sub Command1_Click()
Set ICObj = CreateObject("DCOMDEMO.InventoryControllerServer"Set ICObj = CreateObject("DCOMDEMO.InventoryControllerServer", , node1node1))
……..
Call ICObj.ProcessOrder(lPartNumber, lNumItems, lNumOrders, Call ICObj.ProcessOrder(lPartNumber, lNumItems, lNumOrders, ucpResult, lpNumOrdersFilled)ucpResult, lpNumOrdersFilled)
DCOMDCOM
DCOMDCOM
DCOMDCOM
DCOMDCOM
Windows NT Windows NT ServerServer
OpenVMSOpenVMS
WarehouseWarehouse
InventoryInventorycontrollercontroller
WarehouseWarehouse
WarehouseWarehouse
Digital UNIXDigital UNIX
SolarisSolaris
Demo built from released COM SDKs on platforms aboveDemo built from released COM SDKs on platforms above
Heterogeneous DCOM Demo Heterogeneous DCOM Demo Architecture Architecture
WindowsWindows
ClientClient
Heterogeneous DCOMHeterogeneous DCOM Cross platform COMCross platform COM
– Demo using shipping COM SDKs on:Demo using shipping COM SDKs on: Digital UNIX, OpenVMS, SolarisDigital UNIX, OpenVMS, Solaris
– UNIX platform support from MicrosoftUNIX platform support from Microsoft Ship schedulesShip schedules
COM on Digital UNIX and OpenVMSCOM on Digital UNIX and OpenVMS– Developing COM enabled middlewareDeveloping COM enabled middleware
Architecture, core features, toolsArchitecture, core features, tools
– Deploying COM enabled middlewareDeploying COM enabled middleware Support, schedules, resourcesSupport, schedules, resources
COM Platform SupportCOM Platform Support COM/UNIX and COM/OpenVMS 1.xCOM/UNIX and COM/OpenVMS 1.x
– Solaris 2.5 - Microsoft (Shipping today)Solaris 2.5 - Microsoft (Shipping today)– Digital UNIX 4.0D - Compaq (In beta)Digital UNIX 4.0D - Compaq (In beta)– OpenVMS 7.2 - Compaq (In beta)OpenVMS 7.2 - Compaq (In beta)– IRIX 6.5 - SGI IRIX 6.5 - SGI
COM/UNIX and COM/OpenVMS futureCOM/UNIX and COM/OpenVMS future– Binary compat with COM 1.0Binary compat with COM 1.0– Improvements based on customer Improvements based on customer
feedback on COM 1.0feedback on COM 1.0– Additional platform supportAdditional platform support
COM Platform SupportCOM Platform Support
Microsoft COM for UNIX 2.0 (future)Microsoft COM for UNIX 2.0 (future)– Solaris 2.5 and upSolaris 2.5 and up– HP-UX 11.0HP-UX 11.0– AIX 4.3AIX 4.3
Will be available from MicrosoftWill be available from Microsoft Technical support from MicrosoftTechnical support from Microsoft
COM InteroperabilityCOM Interoperability
Partnerships with Leading ORB Partnerships with Leading ORB vendors for CORBA interopvendors for CORBA interop– Iona and Visual Edge Iona and Visual Edge – Source code license agreementsSource code license agreements– Enable well tested interop productsEnable well tested interop products
Native OLEDB provider supportNative OLEDB provider support– IntersolvIntersolv
Windows NTWindows NT
NTNTServer identityServer identity
Enterprise clusterEnterprise cluster
Server
SecuritySecurity
NTLM securityNTLM security
Events
COMCOM
SSPISSPI
DomainDomain
RPCRPC
COMCOM
SSPISSPI
InterfaceInterface
RPCRPCWindows NTWindows NT
identityidentity
COM APIsCOM APIs
RegistryRegistry
Software ArchitectureSoftware Architecture
COM ToolsCOM Tools
Digital UNIXDigital UNIX– Existing tools for Existing tools for
code creationcode creation– Enterprise Toolkit Enterprise Toolkit
available nowavailable now– ATL in COM V1.xATL in COM V1.x– Component Component
Monitor Q1 1999Monitor Q1 1999
OpenVMSOpenVMS– Existing tools for Existing tools for
code creationcode creation– ATL in COM V1.xATL in COM V1.x– Debugging/Debugging/
performance tool performance tool from AverStar from AverStar Spring 1999Spring 1999
– Enterprise Toolkit Enterprise Toolkit Spring 1999Spring 1999
Benefits of Heterogeneous Benefits of Heterogeneous DCOMDCOM
Preservation of platform-dependent Preservation of platform-dependent legacy applicationslegacy applications– through use of wrappers around appsthrough use of wrappers around apps
Cooperation between NT-based Cooperation between NT-based environments for operator interaction environments for operator interaction and mature backend systemsand mature backend systems
Careful design of new apps permit Careful design of new apps permit portability across platformsportability across platforms
COM/DCOM ResourcesCOM/DCOM Resources
BooksBooks– Inside COM - Rogeson - MS Press - excellentInside COM - Rogeson - MS Press - excellent– Essential COM - Box - language focussedEssential COM - Box - language focussed– WROX series on COMWROX series on COM
Microsoft COMMicrosoft COM– http://www.microsoft.com/comhttp://www.microsoft.com/com
Microsoft COM on UNIXMicrosoft COM on UNIX– Program Manager: Program Manager: [email protected]@microsoft.com
Public COM on UNIX mailing listPublic COM on UNIX mailing list– Information at: Information at: http://www.SoftworksLtd.com/http://www.SoftworksLtd.com/
dcomunix.htmldcomunix.html
Use of COM/DCOM: DNAUse of COM/DCOM: DNA
COM is just one piece of the DNA COM is just one piece of the DNA Architecture (Architecture (DDistributed interistributed interNNetworking etworking AApplications)pplications)
Also - MTS, MSMQ, COM+, three tier Also - MTS, MSMQ, COM+, three tier design methodology with business objects design methodology with business objects on middle tier, etc.on middle tier, etc.
Goal: Convergence and simplification of Goal: Convergence and simplification of technologies over timetechnologies over time
Then DNA for Manufacturing, Health, ...Then DNA for Manufacturing, Health, ...
Acronyms and Misc.Acronyms and Misc. DCOM = COM = OLE = ActiveXDCOM = COM = OLE = ActiveX ActiveXActiveX
– Originally focused solely on developing internet Originally focused solely on developing internet control componentscontrol components
– componentscomponents - act as servers to clients - act as servers to clients– controlscontrols - used to build visual COM components - used to build visual COM components– documentdocument - able to be placed on Web pages - able to be placed on Web pages
Web Technologies also highly integratedWeb Technologies also highly integrated– Active Server Pages (ASP)Active Server Pages (ASP)– Dynamic HTML (DHTML)Dynamic HTML (DHTML)
DNA ModelDNA Model
Two Dimensions of DNATwo Dimensions of DNA
Cross Industry SupportCross Industry Support– Infrastructure Tools and ComponentsInfrastructure Tools and Components
Industry Specific IntegrationIndustry Specific Integration– DNA for xxxDNA for xxx
Primary DNA Tools and Primary DNA Tools and ComponentsComponents
COM - Component Object ModelCOM - Component Object Model DCOM - Distributed COMDCOM - Distributed COM MTS - Microsoft Transaction ServerMTS - Microsoft Transaction Server MSMQ - Microsoft Message Queue MSMQ - Microsoft Message Queue
SystemSystem COM+ - Next generation of DNA COM+ - Next generation of DNA
supportsupport IIS - Internet EnvironmentIIS - Internet Environment
A Microsoft COM TimelineA Microsoft COM Timeline
o OLE - Object Linking and Embedding - of MS application objects within MS applications
o COM - Component Object Model - Generalized infrastructure to improve communications between application components
o DCOM - Distributed COM - between components on different systems and Operating Systems
o ATL - Active Template Library - Tool that simplifies the creation of DCOMcomponents improves calls to/from other DCOM objects
o MTS - Microsoft Transaction Server
o MSMQ - Microsoft Message Queue Management
o COM+ - Buries DCOM/COM, MTS, and MSMQ structures and methods within Windows NT environment
OLE
COM
DCOM COM+
ATL
MTS
MSMQ
OLEOLE Object Linking and EmbeddingObject Linking and Embedding MS 1st attempt at using application MS 1st attempt at using application
components within other applications - components within other applications - especially in support of document especially in support of document integrationintegration
Biggest drawback initiallyBiggest drawback initially– Different object models for each MS application Different object models for each MS application
(Word vs Excel)(Word vs Excel)
OLE 2 - no longer Object … - just “OLE”OLE 2 - no longer Object … - just “OLE”
COMCOM Component Object Model = MS Application busComponent Object Model = MS Application bus Grand Unifying technology on Microsoft Platforms for application Grand Unifying technology on Microsoft Platforms for application
component communicationscomponent communications Big incremental improvement over OLEBig incremental improvement over OLE Programming infrastructure for components to talk with each otherProgramming infrastructure for components to talk with each other Provides for Interface interactions between componentsProvides for Interface interactions between components
– over IDL (Interface Definition Language) calls, over IDL (Interface Definition Language) calls, – using GUID (Globally Unique Identifiers) to identify components, andusing GUID (Globally Unique Identifiers) to identify components, and– uses LRPC to communicate between componentsuses LRPC to communicate between components
Synchronous by design*Synchronous by design*
COM = InterfacesCOM = Interfaces
Collections of Method Definitions to Collections of Method Definitions to access services from COM serversaccess services from COM servers
Servers may implement one or more Servers may implement one or more Interfaces - and may be DLLs or EXEsInterfaces - and may be DLLs or EXEs
All COM Servers MUST implement the All COM Servers MUST implement the IUnknown Interface - IUnknown Interface - – which allows you to discover/access all the which allows you to discover/access all the
other interfaces on the same server other interfaces on the same server (QueryInterface method)(QueryInterface method)
Types of InterfacesTypes of Interfaces Custom InterfacesCustom Interfaces
– Application responsible for defining unique callable Application responsible for defining unique callable methodsmethods
– Clients must know method signaturesClients must know method signatures– Unique call paths between client and serverUnique call paths between client and server
““Automation” or IDispatch InterfacesAutomation” or IDispatch Interfaces– Universal single interface to get at all server Universal single interface to get at all server
services/methodsservices/methods– Single client-side contact - sorta!Single client-side contact - sorta!– Limitation on types of arguments, thoughLimitation on types of arguments, though
Using COM Using COM Collection of Support Routines (Coxxxxx) Collection of Support Routines (Coxxxxx)
– Initialize/shut down the local COM environmentInitialize/shut down the local COM environment– Obtain Access to a COM server’s interfacesObtain Access to a COM server’s interfaces
Basic COM Model Basic COM Model – Simpler on Client Side Simpler on Client Side – Complicated for Creation/Mgmt of Objects on Complicated for Creation/Mgmt of Objects on
Server SideServer Side Class Factories - additional objects neededClass Factories - additional objects needed Implementing IUnknown Methods (object and class Implementing IUnknown Methods (object and class
factory objects!)factory objects!) Issues around shared server objects, multi-Issues around shared server objects, multi-
threaded, etc.threaded, etc.
DCOMDCOM
Distributed COM or Distributed COM or COM across a wireCOM across a wire
Participating Components may now Participating Components may now reside on different systems and use RPC reside on different systems and use RPC for callsfor calls
Support provided for DCOM between Support provided for DCOM between non-heterogeneous platformsnon-heterogeneous platforms– Windows NTWindows NT– OVMSOVMS– Digital UNIXDigital UNIX– Sun Solaris Sun Solaris
DCOM (cont.)DCOM (cont.) Clients can operate in ‘location-Clients can operate in ‘location-
independent’ manner with serversindependent’ manner with servers Registry can hold locations of servers and Registry can hold locations of servers and
other COM stuff!other COM stuff! Newer Model supports Client accessing Newer Model supports Client accessing
server on a specific nodeserver on a specific node DCOMCNFG and other utilities to help locate DCOMCNFG and other utilities to help locate
and manage the network of COM servers, and manage the network of COM servers, objects, interfaces, type libraries, etc.objects, interfaces, type libraries, etc.
DCOM DemoDCOM Demo
SAIE Developed the DCOM Demo of SAIE Developed the DCOM Demo of heterogenous interoperability for UNIX heterogenous interoperability for UNIX and VMS groupsand VMS groups
Involved up to 9 systems on 3 different Involved up to 9 systems on 3 different platforms executing almost identical platforms executing almost identical server code server code
VC++ and VB front ends as clientsVC++ and VB front ends as clients Real learning experience - but it Real learning experience - but it
worked!worked!
COM/DCOM (Cont.)COM/DCOM (Cont.)
Primary Drawback with COM/DCOMPrimary Drawback with COM/DCOM
The current Visual C/C++ environment The current Visual C/C++ environment requires lots of cut-and-paste of requires lots of cut-and-paste of objects objects and methods to define the and methods to define the infrastructure needed to support each infrastructure needed to support each application componentapplication component
NOTE: VB and VJ++ bury most of the support infrastructure NOTE: VB and VJ++ bury most of the support infrastructure and are much more simplified environments in dealing with and are much more simplified environments in dealing with COMCOM
ATLATL
Active Template LibraryActive Template Library Tool simplifies the creation of Tool simplifies the creation of
COM/DCOM components in VC++COM/DCOM components in VC++ Uses Application Wizards to simplify Uses Application Wizards to simplify
the creation processthe creation process– Choose interface modelChoose interface model– Choose Locking, Marshalling,... Choose Locking, Marshalling,... – ATL creates bulk of COM supportATL creates bulk of COM support
COM map and object map macrosCOM map and object map macros Unfortunately not supported on other Unfortunately not supported on other
platforms yetplatforms yet
MTSMTS Microsoft Transaction ServerMicrosoft Transaction Server
– Runtime environment/infrastructure for Runtime environment/infrastructure for application assembly and execution application assembly and execution
– Simplified application model - single userSimplified application model - single user Delivers needed server servicesDelivers needed server services
– Distribution - Distribution - through packagesthrough packages– Easy drag and drop assembly of packages Easy drag and drop assembly of packages
and monitoring of executionand monitoring of execution– Transactionalization of componentsTransactionalization of components– Load balancing, thread pooling, database Load balancing, thread pooling, database
connection pooling, etc.connection pooling, etc.
Inside MTSInside MTS
All Current MTS Object/Servers must All Current MTS Object/Servers must be DLLSbe DLLS
MTX server is the universal proxy for MTX server is the universal proxy for all MTS components on a given node all MTS components on a given node
Intercepts calls for interface methods Intercepts calls for interface methods and can apply server services and and can apply server services and transactional techniques before/after transactional techniques before/after calling component methods calling component methods
MTX and MTS ComponentsMTX and MTS Components
MTSinterceptor
YourMTS
componentMyComp
MTX - MTS controller
MyComp clientcallshere
IMyXfaceIMyXface
MSMQMSMQ
Microsoft Message Queue SystemMicrosoft Message Queue System Provides asynchronous between Provides asynchronous between
COM/DCOM ComponentsCOM/DCOM Components Typical API for en-queuing and de-Typical API for en-queuing and de-
queuing messagesqueuing messages Reliability guaranteed - but still a Reliability guaranteed - but still a
very new product and needs very new product and needs maturation maturation
COM+COM+
Next generation(s) of building Next generation(s) of building distributed applications using COM distributed applications using COM components components
Support from within Windows 2000 Support from within Windows 2000 (uncertain about other platforms)(uncertain about other platforms)
Makes building COM-compliant Makes building COM-compliant components much easiercomponents much easier
Submerges MTS, MSMQ, and COM Submerges MTS, MSMQ, and COM services deep within the OSservices deep within the OS
DNA Development ToolsDNA Development Tools
DevStudio Tools apply across the DevStudio Tools apply across the boardboard– VC++VC++– VB6VB6– VJ++VJ++– VisualInterDevVisualInterDev– FrontpageFrontpage
Can produce clients, servers, middle Can produce clients, servers, middle tiers, in mixed language systemstiers, in mixed language systems
More Info?More Info?
www.microsoft.com/dnawww.microsoft.com/dna www.microsoft.com/mtswww.microsoft.com/mts www.microsoft.com/comwww.microsoft.com/com MSDNMSDN MS Technical JournalMS Technical Journal Dr. Dobbs & C/C++ Journal and VB Dr. Dobbs & C/C++ Journal and VB
mags toomags too
MS/Industry Initiatives MS/Industry Initiatives based on DNAbased on DNA
VCI/CIP - Value Chain InitiativeVCI/CIP - Value Chain Initiative DNA for MFG/AutomotiveDNA for MFG/Automotive OLE for Process Control (OPC)OLE for Process Control (OPC) DNA for Front Office (Trilogy)DNA for Front Office (Trilogy) DNA for Retail - E-office?DNA for Retail - E-office? Rumors of Rumors of
– DNA for PharmaceuticalDNA for Pharmaceutical– DNA for MedicalDNA for Medical– DNA for Financial DNA for Financial – ......
VCI/CIPVCI/CIP
Value Chain Initiative - consortium of Value Chain Initiative - consortium of companies agreeing to use DNA for companies agreeing to use DNA for managing business operationsmanaging business operations
CIP (Commerce Interchange Protocol) - CIP (Commerce Interchange Protocol) - a DNA-based message composition and a DNA-based message composition and delivery/receipt system - no workflow delivery/receipt system - no workflow tool - yet!tool - yet!
Ongoing negotiations between Compaq Ongoing negotiations between Compaq and MS re VCI/Business Bus ‘integration’and MS re VCI/Business Bus ‘integration’
DNA for MFG/AutomotiveDNA for MFG/Automotive
First instantiation of DNA for MfgFirst instantiation of DNA for Mfg Detroit-based Initiative (surprise!)Detroit-based Initiative (surprise!) Recent MS Event Recent MS Event Attempting to define groupings of Attempting to define groupings of
interfaces to represent information and interfaces to represent information and control data flow within automotive control data flow within automotive industryindustry
Embraces OPC as core ‘information Embraces OPC as core ‘information model’model’
OPCOPC
OLE for Process ControlOLE for Process Control– set of standard OLE/COM interface set of standard OLE/COM interface
protocolsprotocols– based on MS COM technologybased on MS COM technology– foster interoperability in the process foster interoperability in the process
control industry betweencontrol industry between automation/control applicationsautomation/control applications field systems/devicesfield systems/devices business/office applicationsbusiness/office applications
Applications working with Applications working with OPC Servers/ComponentsOPC Servers/Components
Application X Application Y
OPC Interface OPC Interface
OPC ServerA
OPC ServerB
OPC ServerC
The DNA Manufacturing The DNA Manufacturing ArchitectureArchitecture
ERP / MRP
MESDCS Batch
deviceCE
deviceSmartdevice
OAG BB CIP COM DCOM
OPC / OLE DB
HMI/SCADA
PC Control
OPC
OPC
CIP
process
DB
COM
COM
UI
OPC OpportunityOPC Opportunity
Field management - advent of “smart” field Field management - advent of “smart” field devicesdevices– provides wealth of field device dataprovides wealth of field device data
device health, config params, materials of device health, config params, materials of construction,...construction,...
Process management Process management – Distributed Control Systems (DCS) and SCADA Distributed Control Systems (DCS) and SCADA
monitors and controls the manufacturing process monitors and controls the manufacturing process – makes process data available electronicallymakes process data available electronically
Business management - integrating process Business management - integrating process data and financial information related to processdata and financial information related to process
SummarySummary DNA - a rich collection of DNA - a rich collection of
(interchangeable) tools, technologies (interchangeable) tools, technologies and methodologies for building three-and methodologies for building three-tiered, distributed applicationstiered, distributed applications
Underlying COM models supports Underlying COM models supports universal access to servers/servicesuniversal access to servers/services
Multi-platform support an issueMulti-platform support an issue Some industry initiatives favoring DNA-Some industry initiatives favoring DNA-
based solutionsbased solutions
Questions?Questions?
MSMQMSMQBusinessBusBusinessBus
wrapper
ERPwrapper
MESBasestar
wrapper
SiteServer
CIP
SiteServer
wrapper
DocumentManagement
Iexplore.exe
ShopFloor MES MES
DNA - based componentsBaseStar(?)
BusinessBus Technology BusinessBus Technology LayeringLayering
BusinessBus API
MSMQ transport BmQ, MQSeries transports
NT UNIX, VMS, etc.
API Layer
Transport Layer
Platforms
IntegrationManager
Application Layer CIP
Wrappers
Applications