1 / 30

Component Services

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.

libba
Download Presentation

Component Services

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Component Services Tom Perkins - CertSIG

  2. 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

  3. Criteria • Multiple use • Non-context-specific • Composable with other components • Encapsulated (cannot be investigated through its interfaces) • A unit of independent deployment and versioning

  4. 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.

  5. 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

  6. 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

  7. 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

  8. 3-Tier Approach Tier Name Implementation Choice Presentation Active Server Pages Business Logic COM Components Data DBMS (SQL Server,etc)

  9. 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

  10. 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

  11. 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

  12. 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

  13. Calling a .NET Component from COM/COM+ COM Client Registry Assembly Registration Process ?? .NET Component COM+ recognizes only COM components

  14. 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

  15. 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

  16. Inside the Component’s Registry Entry mscoree.dll registry Entry … InprocServer32 key … Assembly key … 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 COM Client CCW (proxy) .Net Component

  17. Invoking a .NET Component from COM COM/COM+ Runtime Common Language Runtime Registry .NET Component COM Client mscoree.dll GUID CoCreateInstance() DLLGetClassObject() COM Call .NET Call CCW

  18. 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

  19. 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+?

  20. 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.

  21. 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() {…} } }

  22. 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

  23. Declarative Programming Example [Transaction(TransactionOption.Required)] public class MySampleSC : ServicedComponent { … }  Component requires Transaction Support • All details for enabling transactions done behind the scenes • Advantages: • Less code • Reliability – platform should be validated • Flexibility – administrators can reconfigure without recompiling

  24. 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

  25. 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

  26. Component Services Administration Tool

  27. Component Activation – Similar Context COM+ Application Process COM+ Context X Compatible Contexts? Runtime Information COM+ catalog Y Enterprise Services Component A Component B Runtime Information CoCreateInstance() ObjB = new ComponentB() GUID

  28. Component Activation – Different Contexts COM+ Application Process COM+ Context X Context Y Interception N Compatible Contexts? Runtime Information COM+ catalog Enterprise Services Component A Component B Proxy Runtime Information CoCreateInstance() ObjB = new ComponentB() GUID

  29. 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; incompatibledifferent contexts

  30. 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

More Related