ActiveX Overview
Download
Report
Transcript ActiveX Overview
An Overview of ActiveX
Charlie Kindel
Architect & Chief Technical Advisor
Microsoft Developer Relations Group
Outline
What is ActiveX?
The Component Object Model
Current Status
What is ActiveX?
A marketing name for a set of
technologies and services, all based on
the Component Object Model (COM)
It’s just COM!
“DCOM” is just COM with a longer wire
Wanted: Software
Components
“Active wave” requires applications, content,
operating systems, networking, distributed
services to be integrated as never before
Monolithic solutions won’t work
No one vendor or one team of programmers can
move fast enough
Need to leverage others’ work and to build and ship
smaller pieces incrementally
Need to evolve smaller pieces asynchronously
without sacrificing the whole
Solutions…
“WOSA” architecture was Microsoft’s 2nd
generation component technology
API (often with different “levels”)
System (Microsoft) -supplied intermediary DLL with
out-of-band management routines
SPI for real components/servers to plug in
“underneath”
Works great (e.g. ODBC) but has crucial
limitations
No safe decentralized extension or evolution
COM: 3rd Generation
Components
Unified programming model
Between OS and apps — unification of system
handle-based “objects” and variety of app models
Between in-process and remote interaction —
unification of DLLs and RPC
Standards for binary deployment, connection
Software pieces or “components” find and connect to
each other through clearly defined interfaces
Solves fundamental problems of software
integration, independent evolution
Examples
Manufacturing process control
Controls on the Interent/Intranet client
Component based server applications
Active Server Pages
Microsoft Transaction Server (Viper)
Multi-tier “client/server” applications
3 Tier Client/Server
“Desktop” - Compound Documents, Controls, Scripting
H
T
T
P
C
O
M
Mid-Tier - HTTP, Biz Objects, Active Server Pages, Scripting
C
O
M
SNA
etc...
CORBA
Third-Tier - Databases, Legacy Data
ActiveX Builds on COM
COM’s initial thrust: integrating desktop
applications with OLE
COM technology is generically useful, being
applied to a range of other areas
Inherently distributed
1000’s of shipping, commercially
available, products.
World class development tools
VB, VC, VJ, Delphi, PowerSoft…
Who Benefits?
Independent software vendors
Build components in any language, any development
process
Sell independently or in bundles
No central coordination required
Corporate developers
Buy from competitive market rather than build
Large projects benefit from component discipline
Anyone doing software integration
COM Architecture
The Model
The “ORB”
The Services
Component Object Model
Components, Components, Components
Binary standard
Wire-level standard
COM Fundamental Principles
What the designers of COM were striving for...
Binary components
Any programming language
Any location (in-process, cross-process,
cross-machine)
No centralized authority
Zero sacrifice in-proc performance
Simplest model possible
Enable extensibility and adaptability
COM Principles
Rigorous Encapsulation
Black box -- no leakage of implementation
details
All object manipulation through strict
interfaces
Polymorphism
IUnknown
via multiple interfaces per class
“Discoverable”: QueryInterface
IDispatch
IRobot
COM
Object
Isn’t COM about “Objects”?
No … COM sets out to solve system software
problems that arise when hooking up randomly
evolving combinations of binaries
Yes … from the perspective of these new kinds
of objects also called “components”
Traditional object concepts used (but adapted) to
solve a different (but overlapping) set of
requirements in a different problem space
Component services can be called more naturally
from O-O languages
Systems OT complements language OT
COM Architecture
Client
COM
run time
Security
provider
COM
run time
Security
provider
RPC
Inprocess
Protocol stack
LPC
Component
RPC
Protocol stack
Local
DCOM networkprotocol
Remote
Distributed COM
Just COM “with a longer wire”
All COM components communicate in the
same way
on the same machine
In-process, Out-of-process
across a Local Area Network
across a Wide Area Network
across the Internet
Same tools, knowledge, code
Distributed COM
Wire Protocol
Based on DCE RPC Specification
Interoperable with OSF DCE RPC implementations
We call it “ORPC”
Efficient and Scalable
Documented in Internet-Draft
ftp://ietf.org/internet-drafts/draft-brown-dcom-v1spec-01.txt
The COM “ORB”
The “model” is about how the technology
is used
The “ORB” is how it’s implemented
We call it the COM Runtime
COM Runtime Architecture
Flexible and extensible
Pluggable Transports
Proxy
Other
Component
TCP, UDP
SPX,IPX
Net BUI
HTTP
“Falcon”
COM Runtime
COM
Client
Server Machine
COM Runtime
Client Machine
Component
COM Runtime Architecture
Flexible and extensible
Pluggable Security Providers
Proxy
Other
Component
NTLM
SSL, Certs.
NT Kerberos
DCE
COM Runtime
COM
Client
Server Machine
COM Runtime
Client Machine
Component
Efficient and Scalable
Multiplexing - Single Port per-protocol, per server
process, regardless of # of objects
Scalable - Connection-Less Protocols like UDP Preferred
Established Connection-Oriented (TCP) Sessions Reused
by same client
Client
Client
Server
Efficient and Scalable
Low Bandwidth
Header is 28 bytes over DCE-RPC
Keep-Alive Messages bundled for all connections
between Machines
Client Machine
Client #1
Client #2
Keep-Alive Traffic
for all
connections
Server Machine
Server
COM Runtime Architecture
Secure - Security is designed and built in.
Not an option.
Inherently Distributed
Pluggable
Security
Transports
The COM “ORB”
Highly debugged and tuned
The COM Runtime first shipped in 1993
Used by 1000s of commercial applications
Available today on Win95, NT, Solaris
DEC UNIX, HPUX, Linux, MVS, VMS, Mac,
and others rolling out this year
The COM “ORB”
Full source code licensable from The Open
Group (formerly OSF and X/Open)
With conformance test suite
Free! (Built-into Win32 Platforms)
No separate client access license or
expensive “developer” version
Structure of the COM “ORB”
Components and Applications
The COM Runtime
Core Services
(Automation, Monikers, Storage, ComCat, Data Transfer, IR)
COM and Distributed COM
Registry
MS-RPC
Pluggable Security
(SSPI)
Pluggable Transports
TCP
UDP
IPX
SPX
HTTP “Falcon”
NTLM DCE
Kerberos ETC...
Core COM Services
Security
Lifecycle Management
Type Information
(Interface Repository)
Monikers (Naming)
Automation (Dynamic
Invocation)
Data Transfer
Component
Categories
Registry
COM Summary
The Model
The “ORB”
The Services
So What is ActiveX?
A marketing name for a set of
technologies and services, all based on
COM (the model, the “ORB”, and the
services)
User Experience: How It
Works
HTML content
(text and images)
ActiveX Control
or Java applet
download
HTTP
server
HTTP
ActiveX Control
or Java applet
(D)COM
ActiveX Script
Internet Explorer 3.x/4.x
COM objects or
ActiveX Controls
COM objects or
ActiveX Controls
Active Components
ActiveX Controls
Are COM components with “design-time” UI
Can be written in C++, Java, VB, Delphi, ...
Self-registering
Optimized for download and execute
Java applets
Simple applications
Work on both Active Client or Server
Can talk indirectly over HTTP or directly over COM
Microsoft Java VM
Java VM is a COM component
Use Java classes from any
application/language, not just browser/Java
Any Java object is a COM object
Automatic integration of Java applets with other
languages and scripts
Lets Java applets talk to other Java applets
Lets Java applets talk to ActiveX components
Gives Java applets access to all PC
functionality
Transaction Server
“Viper”
Runtime execution
environment for serverbased components
Extends COM architecture with transaction
semantics
Provides concurrency,
multi-threading, queuing, atomicity, etc.
Makes is easy to encapsulate business logic in
middle-tier
ActiveX Core Product Status
“D”COM first released in Windows NT 4.0,
August 1996
Win95 version released January 1997
Solaris 2.x release imminent
Other UNICES, MVS, and VMS to follow
Macintosh version in H1 1997
Active Group source licenses available by mid1997; DCE integration project by end of 1997
Resources
Great Overview Book
Understanding ActiveX and OLE (by David Chappell)
Implementations
Win95 version
<http://www.microsoft.com/oledev/>
Solaris and other non-Win32 versions
<http://www.sagus.com/>
Technical info
<http://www.microsoft.com/workshop/> and
<http://www.microsoft.com/oledev/>
Inside COM (by Dale Rogerson)
Mailing list
http://www.microsoft.com/workshop/resources/email.htm
Questions?
Thank you!
™