component services

Post on 14-Jan-2016

42 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Component Services. Tom Perkins - CertSIG. Software Component (Definition). A software component is a system element that Offers a predefined service Is able to communicate with other components. Other component. Does something. Able to communicate with other components. Criteria. - PowerPoint PPT Presentation

TRANSCRIPT

Component ServicesTom Perkins - CertSIG

Software Component (Definition)

• A software component is a system element that– Offers a predefined service– Is able to communicate with other

components

Does something

Other component

Able to communicate with other components

Criteria

• Multiple use• Non-context-specific• Composable with other components• Encapsulated (cannot be

investigated through its interfaces)• A unit of independent deployment

and versioning

Components

• Must be written to a specification (COM, Java Beans, etc)– Adherence to specification turns object into component– Makes object reusable

• Components may be objects or collections of objects

• Must adhere to Interface Description Language (IDL)

• Accessing or sharing components across network links or processes – Serialization (marshalling) required to turn component or

one of its interfaces into a bitstream.

Component Object Model (COM)

• Platform for software components• Introduced by Microsoft in 1993• Enables

– Interprocess communication– Dynamic object creation

• Umbrella term for several technologies– OLE– OLE Automation– ActiveX– COM+– DCOM

COM• A way of using objects in different environments

from the one they were created in– Across machine boundaries

• Implementers must provide well-defined interfaces– Interfaces separate from implementation– You don’t need to know how object is implemented

internally– Reuse through interfaces

• Objects are responsible for their own creation and destruction through reference-counting

• Replacements– COM .NET – Support for Web Services Windows Communication

Foundation (WCF)• DCOM binary formats; WCF XML-based SOAP

Differences from Object-Oriented Programming

• Object-Oriented Programming (OOP)– Software should model the real world objects it

represents– Focuses on real-world interactions b/w objects– Attempts to create objects from nouns and

verbs in a “use case”• Software Componentry

– Programmers glue together prefabricated components

– Like electronics or mechanics– Discourages anthropomorphism– Pessimistic about “end-user” programming

3-Tier Approach

Presentation

Business Logic

Data

Active Server Pages

COM Components

DBMS (SQL Server,etc)

Implementation ChoiceTier Name

COM+ 1.0• Object Pooling

– Objects kept in a pool until ready to be used• Just-In-Time Activation

– Minimizes time an object lives and consumes resources– Client can hold reference a long time– But, server creates object only on 1st method call

• Role-based Security– Access to parts of component are granted/denied based

on role to which client belongs• Queued Components

– Component execution in async or disconnected mode• Loosely-Coupled Events

– An object publishes an event, other objects suscribe

COM+ 1.5

• COM+ components can be configured to run as a – Windows Service

• Can start when Windows starts• Can run with system identity account – has

high privileges

– Web Service• Needs IIS on machine

COM+ 2.0 (.NET Framework)

• Name: COM+2.0 .NET Framework• Major upgrade of COM• Replaces need for COM• Components execute in mangaged CLR

– Provide memory management, security, and versioning to the component

• COM+ 1.0 used for Windows 2000• COM+ 1.5 used for XP and Windows

Server 2003

Exposing .NET Components

• COM+ recognizes only COM components

• .NET component exposed to COM must be exposed as COM component

• For a COM client to find a .NET Component:– .NET Component must be registered as a

COM server in the Registry

• AKA Assembly Registration Process

Calling a .NET Component from COM/COM+

COM Client

Registry

.NET Component

COM+ recognizes only COM components

??

Assembly Registration Process

Assembly Registration Process

• VS-Change Register For COM Interop option on Project|Property Pages|Configuration Properties (slightly different for VS2005)

• -or- Assembly Registration tool (regasm.exe)

• -or- Programmatically, use RegistrationServices class of System.Runtime.InteropServices namespace

But first …

• Assembly must be signed– Assembly identity

• Text Name• Version• Culture Information

– Public key– Optional Digital Signature

• Assign GUID for assembly itself, each class, each method

Assembly

Inside the Component’s Registry Entry

InprocServer32 key

Assembly key

registry Entry

normally points to DLL used by COM to create component

for managed code, contains path to mscoree.dll

o knows how to launch a CLR process

o and execute a managed DLL

o uses Assembly key to find DLL

- stores identity of DLL, not path

- GAC searched, then others

o mscoree creates instance of type

o mscoree creates COM-Callable Wrapper (CCW) – proxy b/w COM client and managed code in DLL

mscoree.dll

COM Client

CCW (proxy)

.Net Component

Invoking a .NET Component from COM

COM/COM+ Runtime Common Language Runtime

COM Client .NET Component

mscoree.dllRegistryGUID

CoCreateInstance()DLLGetClassObject(

)

CCW

COM Call .NET Call

Exporting .Net Components as COM Type Libraries

• CCW – late binding – type references resolved at runtime

• Slow, no compile-time checking• Alternative – export .NET components

as COM type libraries• Early binding – faster, compile-time

type checking• Assembly Registration Process similar• Default extension .tlb

Architecture of Component Services

• What are the basic components of COM+ architecture?

• How is a COM+ application organized?

• How does COM+ provide component services?

• How does the .NET Framework interact with COM+?

Serviced Components

• All .NET serviced components must derive from System.EnterpriseServices.ServicedComponent class.

• Classes must be public and concrete• Classes must provide a public default

constructor– COM cannot create an object and pass

parameters for object creation at the same time.

A Basic Serviced Component Declaration

• ServicedComponent class – has methods but no events or properties – Methods:– Activate() – startup method– CanBePooled() – can object be pooled?– Construct() – gives access to construction string, after constructor– Deactivate() – cleanup operations– DisposeObject() – finalize, removes COM+ reference

using System.EnterpriseServices; namespace TEP { public class MySampleSC : ServicedComponent { public MySampleSC() {…} } }

Declarative Programming Model

• Uses declarative tags to specify services component receives (transactions, JIT activation, object pooling)

• Instructs COM+ to accomplish certain tasks• Visual C#, declarative tags specified by attributes• Attribute values can be modified at run time by

reflection • Use Component Services administrative tool• Can change application’s behavior without compiling

Declarative Programming Example

• All details for enabling transactions done behind the scenes

• Advantages:– Less code– Reliability – platform should be validated– Flexibility – administrators can

reconfigure without recompiling

[Transaction(TransactionOption.Required)]

public class MySampleSC : ServicedComponent

{ … } Component requires Transaction Support

COM+ Application

• Definition: A group of serviced components that perform related functions.

• Each component consists of interfaces and methods

• Always stored in a DLL; 2 configurations

Server Application Library Application

• runs in its own process• COM+ provides surrogate process (dllhost.exe)

• runs in process of client • loaded into process of client

COM+ Catalog

• Stores information about COM+ applications• GUID identifies each COM+ application and

serviced component• Also each’s runtime requirements

– If requires Transaction, this is stored– Declarative attributes stored here

• Physically split – COM+ Registration DB c:\windows\registration– Windows Registry within key HKEY_CLASSES_ROOT

• Access and update through Component Services administrative tool – Control Panel

Component Services Administration Tool

Component Activation – Similar Context

COM+ COM+ Application Process

Context X

En

terp

rise

Serv

ices

Component A Component B Compatible

Contexts?COM+

catalog

ObjB = new ComponentB()

CoCreateInstance()

GUID

Runtime Information

YRuntime Information

Component Activation – Different Contexts

COM+ COM+ Application Process

Context X

En

terp

rise

Serv

ices

Component A Component B Compatible

Contexts?COM+

catalog

ObjB = new ComponentB()

CoCreateInstance()

GUID

Runtime Information

NRuntime Information

Pro

xy

Interception

Context Y

Context

• Definition: A set of runtime properties that define the execution environment for a serviced component

• Created during activation process• Based on configuration of component• Objects with similar requirements

share a context; incompatibledifferent contexts

Interception

• A mechanism that allows COM+ to capture calls to any object and execute its own code before passing that call.

• Example: only users authenticated with Supervisors security role are allowed to call ApproveOrder() method.

• COM+ intercepts the call and accepts or rejects based on identity of user.

• Objects in different contexts use a proxy rather than direct calls

• Available at object level and method level

top related