Presentation is loading. Please wait.

Presentation is loading. Please wait.

ECSE 6780- Software Engineering 1I - 1 - HO 8 © HY 2012 Lecture 8 COM Limitations (Review) Like CORBA: No support for common programming idioms (other.

Similar presentations


Presentation on theme: "ECSE 6780- Software Engineering 1I - 1 - HO 8 © HY 2012 Lecture 8 COM Limitations (Review) Like CORBA: No support for common programming idioms (other."— Presentation transcript:

1 ECSE 6780- Software Engineering 1I - 1 - HO 8 © HY 2012 Lecture 8 COM Limitations (Review) Like CORBA: No support for common programming idioms (other than RPC) Unlike CORBA: Has one “main” implementation - from Microsoft for Windows, so by definition “compatible” Needs component services: distributed transactions, resource pooling, disconnected applications, event publication and subscription, better memory and processor (threads) management, … Distributed Frameworks

2 ECSE 6780- Software Engineering 1I - 2 - HO 8 © HY 2012 Lecture 8 Microsoft Transaction Server (MTS) Enables the transactional requirements of each component to be set administratively, so components can be written separately and then grouped together as needed to form a single transaction COM + MTS

3 ECSE 6780- Software Engineering 1I - 3 - HO 8 © HY 2012 Lecture 8 What Transactional Requirements? Many applications write to some database or other data repository An application that makes more than one change to a database may want to group those changes into a single unit – called a transaction The goal is to make sure that either all of those changes take place or that none of them do—a mix of success and failure isn’t possible

4 ECSE 6780- Software Engineering 1I - 4 - HO 8 © HY 2012 Lecture 8 What is a Transaction? “ACID” properties –Atomicity (all or nothing) –Consistency (no integrity constraints violated) –Isolation (no other computation sees intermediate states) –Durability (persistence = failure recovery) Component model frameworks generally only concerned with atomicity and durability

5 ECSE 6780- Software Engineering 1I - 5 - HO 8 © HY 2012 Lecture 8 Handling Transactions within One Data Source If all the data accessed are contained in a single database, the database itself probably provides transactions The programmer need only indicate when a transaction begins and when it ends The database will make sure that all data accesses within these boundaries are either committed or rolled back

6 ECSE 6780- Software Engineering 1I - 6 - HO 8 © HY 2012 Lecture 8 Transactions Across Multiple Data Sources The problem gets harder when an application accesses data contained in more than one database or involves other data resource managers such as a message queue It’s probably not possible for the transaction support built into any one of those systems to coordinate the commitment or roll-back of all data accesses Need some kind of independent transaction coordinating service

7 ECSE 6780- Software Engineering 1I - 7 - HO 8 © HY 2012 Lecture 8 Transaction Coordinating Service Two-Phase Commit First phase: transaction coordinator asks every resource manager (e.g., database) involved in the transaction if it’s prepared to commit Second phase: –If every resource manager says yes, then the transaction coordinator tells each one to commit –If one or more of the resource managers involved in this transaction is unable or unwilling to commit (or does not respond within a timeout period), the transaction coordinator tells all of them to roll back the transaction

8 ECSE 6780- Software Engineering 1I - 8 - HO 8 © HY 2012 Lecture 8 MTS Executive and Distributed Transaction Coordinator (DTC) Invisible to a client, client sees just an ordinary COM object exposing some number of interfaces Executive intercepts every call the client makes on the objects it controls DTC manages the two-phase commit

9 ECSE 6780- Software Engineering 1I - 9 - HO 8 © HY 2012 Lecture 8 MTS Application Structure

10 ECSE 6780- Software Engineering 1I - 10 - HO 8 © HY 2012 Lecture 8 Two-Phase Commit OLE = Object Linking and Embedding

11 ECSE 6780- Software Engineering 1I - 11 - HO 8 © HY 2012 Lecture 8 Context Object Every object involved in a transaction is associated with a context object If a transaction needs to span the functions of multiple different objects, then same context object coordinates the activities of all of those objects Allows the transaction semantics to be separated from application code

12 ECSE 6780- Software Engineering 1I - 12 - HO 8 © HY 2012 Lecture 8 Automatic Transactions In traditional transaction systems, the application code indicates when a transaction begins and ends MTS also supports automatic transactions, allowing business logic to remain unaware of when transactions start and end

13 ECSE 6780- Software Engineering 1I - 13 - HO 8 © HY 2012 Lecture 8 Transaction Semantics Defined Declaratively Transaction semantics declared when components are assembled into an application package Each component is assigned a transaction attribute, one of four values: –Required –Requires New –Supported –Not Supported

14 ECSE 6780- Software Engineering 1I - 14 - HO 8 © HY 2012 Lecture 8 Transaction Options REQUIRED - The component must execute within the context of a transaction, although it does not care where the transaction context originates –If the caller has a transaction (context object), then the called component will use the existing transaction –If the caller does not have a transaction, then MTS automatically creates a new transaction context for the component

15 ECSE 6780- Software Engineering 1I - 15 - HO 8 © HY 2012 Lecture 8 Transaction Options REQUIRES NEW - indicates that the component must always establish its own transaction context Regardless of whether or not the calling application has a transaction context, MTS automatically creates a new transaction context object for the component

16 ECSE 6780- Software Engineering 1I - 16 - HO 8 © HY 2012 Lecture 8 Transaction Options SUPPORTED - indicates that the component does not care whether or not there is a transaction context in place NOT SUPPORTED - indicates that the component cannot support a transaction

17 ECSE 6780- Software Engineering 1I - 17 - HO 8 © HY 2012 Lecture 8 Commit or Abort The component operating on the database can tell the MTS executive when its task is complete –Everything has gone just fine and the transaction is ready to be committed – the component calls IObjectContext::SetComplete (or just returns) –Something has gone wrong, perhaps one attempt to access data resulted in an error, and the entire transaction should be rolled back – the component calls IObjectContext::SetAbort (or just crashes, hangs, etc.)

18 ECSE 6780- Software Engineering 1I - 18 - HO 8 © HY 2012 Lecture 8 Coordination of Multi-Component Transactions Calling SetComplete does not necessarily mean that the transaction will be committed right then If this component implements all the work required for an entire transaction, then MTS will perform the commit But this component may be part of a group of components, all of which collectively participate in a single transaction Each component will call SetComplete (or terminate) when its work is done, but MTS won’t begin the commit process until all components within the transaction have completed successfully The code for the component looks the same in either case

19 ECSE 6780- Software Engineering 1I - 19 - HO 8 © HY 2012 Lecture 8 And a few other services…

20 ECSE 6780- Software Engineering 1I - 20 - HO 8 © HY 2012 Lecture 8 Just-In-Time (JIT) Activation Also known as deferred activation When a client makes a call to an object to create an instance, COM provides that client a reference to a context object instead of a reference to the object Client gets a real reference to the object, and the object is activated, only when client calls a method of that object Object deactivated when method returns and reactivated when next method called Deactivated object releases all resources, including locks on data stores Allows server resources to be used more productively

21 ECSE 6780- Software Engineering 1I - 21 - HO 8 © HY 2012 Lecture 8 Object Pooling Recycling of objects When a client releases an object that supports object pooling, or such an object is deactivated, instead of destroying that object completely, COM+MTS recycles it When another client requests or reactivates the same kind of object, COM+MTS gives an instance from the pool Since these component instances are already loaded in memory (up to maximum size of pool), they are immediately available for use

22 ECSE 6780- Software Engineering 1I - 22 - HO 8 © HY 2012 Lecture 8 Connection Pooling Opening and closing connections to a database can be time- consuming Reuse existing database connections rather than create new ones A resource dispenser caches resources such as ODBC (Open DataBase Connectivity) connections to a database, allowing components to efficiently reuse them

23 ECSE 6780- Software Engineering 1I - 23 - HO 8 © HY 2012 Lecture 8 Role-Based Security “Role” = a logically related group of users that share the same permissions to access a defined subset of an application’s functionalities Assign different permissions for different roles on a class, interface or method Can set either administratively or via programming Don’t need to write security-related logic into components (but can do so if desired)

24 ECSE 6780- Software Engineering 1I - 24 - HO 8 © HY 2012 Lecture 8 So How Does MTS Fit With COM?

25 ECSE 6780- Software Engineering 1I - 25 - HO 8 © HY 2012 Lecture 8 MTS Extends COM to 3-tier Architecture

26 ECSE 6780- Software Engineering 1I - 26 - HO 8 © HY 2012 Lecture 8 Client-Server Architecture ClientServer

27 ECSE 6780- Software Engineering 1I - 27 - HO 8 © HY 2012 Lecture 8 2-tier Architecture with Basic Component Middleware ClientServer Component middleware

28 ECSE 6780- Software Engineering 1I - 28 - HO 8 © HY 2012 Lecture 8 3-Tier Architecture with Component Services Middleware Client Component services middleware Database Application logic components LDAP Document Storage

29 ECSE 6780- Software Engineering 1I - 29 - HO 8 © HY 2012 Lecture 8 Another View of 3-tiered Architecture Client Database Component middleware Application logic components Back-end tier Middle tier Front-end tier LDAPDatabase Client Database Component middleware Application logic components Back-end tier Middle tier Front-end tier LDAPDatabase

30 ECSE 6780- Software Engineering 1I - 30 - HO 8 © HY 2012 Lecture 8 COM+

31 ECSE 6780- Software Engineering 1I - 31 - HO 8 © HY 2012 Lecture 8 COM+ Adds More Services

32 ECSE 6780- Software Engineering 1I - 32 - HO 8 © HY 2012 Lecture 8 Load Balancing Scalability: network traffic and number of clients should not affect performance of an application (e.g., response time, throughput) Load balancing distributes client calls across a server cluster transparently to the application Components to be load-balanced configured on per-class basis at deployment

33 ECSE 6780- Software Engineering 1I - 33 - HO 8 © HY 2012 Lecture 8 COM+ Router When a client requests a specific component, it first connects to a load balancing router Router polls the cluster application servers for timing data (e.g., every 200ms) Router chooses a server based on lightest server load and availability

34 ECSE 6780- Software Engineering 1I - 34 - HO 8 © HY 2012 Lecture 8 Service Control Manager (SCM) Router’s SCM forwards the activation request to the selected server's SCM If the instantiation of the object fails, the router moves to the next server in a round-robin list Continues until a valid interface pointer is returned to the client From this point, all communication occurs directly between the client and the server that handled the request

35 ECSE 6780- Software Engineering 1I - 35 - HO 8 © HY 2012 Lecture 8 Microsoft Message Queue Server (MSMQ) Client can execute (asynchronous) method calls, even if the server component is offline MSMQ records and stores method calls automatically Useful for online applications that must be completed – but can be completed “later” (online banking, air reservation system, etc.)

36 ECSE 6780- Software Engineering 1I - 36 - HO 8 © HY 2012 Lecture 8 Disconnected Applications Increasing use of mobile devices has created a need for applications that service disconnected clients In a queued system, these users can continue to work when not connected to the application server, and later connect to the databases or servers to process their requests For example, a salesperson can take orders from customers and later connect to the shipping department to process those orders

37 ECSE 6780- Software Engineering 1I - 37 - HO 8 © HY 2012 Lecture 8 Component Availability In synchronous processing applications, if just one component of a compound activity is not available—perhaps because of server overload or networking problems—the entire process is blocked and cannot complete An application using the Queued Components service separates the activity into actions that must be completed now and those that can be completed at a later time

38 ECSE 6780- Software Engineering 1I - 38 - HO 8 © HY 2012 Lecture 8 Client/Server Decoupling

39 ECSE 6780- Software Engineering 1I - 39 - HO 8 © HY 2012 Lecture 8 Message Reliability Message Queuing uses database techniques to help protect data in a robust way Built-in support for transactions In the event of a server failure, Message Queuing ensures that transactions are rolled back so that messages are not lost and data is not corrupted

40 ECSE 6780- Software Engineering 1I - 40 - HO 8 © HY 2012 Lecture 8 Server Scheduling An application using queued components is well suited to time-shifted component execution, which defers non-critical work to an off-peak period Analogous to traditional batch mode processing Similar requests can be deferred for contiguous execution by the server rather than requiring the server to react immediately to a wide variety of requests

41 ECSE 6780- Software Engineering 1I - 41 - HO 8 © HY 2012 Lecture 8 COM+ Summary COM-based services and technologies first released in Windows 2000 Automatically handles difficult programming tasks such as resource pooling, disconnected applications, distributed transactions, event notification, etc., often administratively (manually or scripted) Also supports.NET developers and applications through.NET’s Enterprise Services

42 ECSE 6780- Software Engineering 1I - 42 - HO 8 © HY 2012 Lecture 8.NET

43 ECSE 6780- Software Engineering 1I - 43 - HO 8 © HY 2012 Lecture 8 What is.NET? An object-oriented software development platform, with –peer to peer multi-language interoperability –common intermediate language (CIL) –common language runtime (CLR) –common data representation based on XML The C# language is the most comfortable for.NET, but not the only one and not mandatory

44 ECSE 6780- Software Engineering 1I - 44 - HO 8 © HY 2012 Lecture 8 How Does Multi-Language Support Work? A compiler from any supported language compiles an application into CIL (also referred to as MS IL – Microsoft Intermediate Language) The compiler also generates metadata in XML – information on the types and named entities (classes, methods, fields, etc.) defined and used in the application At runtime, the CIL code is Just-in-Time (JIT) compiled into the target platform’s native code The CLR uses the metadata to perform runtime checks for type-safety and security (“managed code”)

45 ECSE 6780- Software Engineering 1I - 45 - HO 8 © HY 2012 Lecture 8 Attributes Metadata attributes attach some data to a class or method, which can be accessed via reflection, e.g., [serializable] Context attributes provide an interception mechanism whereby instance activation and method calls can be pre- and/or post- processed

46 ECSE 6780- Software Engineering 1I - 46 - HO 8 © HY 2012 Lecture 8 Common Language Runtime Execution Model CLR VB Source code Compiler C++C# Assembly Operating System Services MSIL Common Language Runtime JIT Compiler Compiler Native code Managed Code Managed Code Managed Code Unmanaged Code CLR Services Ngen

47 ECSE 6780- Software Engineering 1I - 47 - HO 8 © HY 2012 Lecture 8 What does “managed” mean? Managed code:.NET provides several core run-time services to the programs that run within it, e.g., exception handling and security - for these services to work, the code must provide a minimum level of information to the runtime Managed data: Data that is allocated and freed by the CLR’s garbage collector Managed classes: A C++ class can be marked with the __ gc keyword - then memory for instances of the class are managed by the garbage collector and the class can interoperate with classes written in other CLR languages, e.g., inherit from a VB class (also restrictions, e.g., a managed class can only inherit from one base class)

48 ECSE 6780- Software Engineering 1I - 48 - HO 8 © HY 2012 Lecture 8 What is an “assembly”? A logical.exe or.dll, can be an application (with a main entry point) or a library Consists of one or more files (dlls, exes, html files, etc.), and represents a group of resources, type definitions, implementations of those types, and references to other assemblies These resources, types and references are described in a block of data called a manifest - part of the assembly, making it self- describing Assemblies often referred to as “components”: CLR in a sense replaces COM

49 ECSE 6780- Software Engineering 1I - 49 - HO 8 © HY 2012 Lecture 8 Private vs. Shared Assemblies A private assembly is normally used by a single application, and is stored in the application's directory A shared assembly is intended to be used by multiple applications, and is normally stored in the global assembly cache (GAC) but can be stored elsewhere Assemblies find each other (outside the GAC) by searching directory paths

50 ECSE 6780- Software Engineering 1I - 50 - HO 8 © HY 2012 Lecture 8 Remoting When a client creates an instance of the remote type, the.NET infrastructure creates a proxy object that looks exactly like the remote type to the client. The client calls a method on that proxy, and the remoting system receives the call, routes it to the server process, invokes the server object, and returns the return value to the client proxy - which returns the result to the client.

51 ECSE 6780- Software Engineering 1I - 51 - HO 8 © HY 2012 Lecture 8 Remoting Send messages along channels, e.g., TCP or HTTP Multiple serialization formats, e.g., SOAP (for HTTP) or binary (for TCP, replacing DCOM) Distributed garbage collection of objects is managed by “leased based lifetime” – when that time expires the object is disconnected from the.NET runtime remoting infrastructure unless in the interim renewed by a successful call from the client to the object (or explicit renewal by client)

52 ECSE 6780- Software Engineering 1I - 52 - HO 8 © HY 2012 Lecture 8 Remote Invocations SingleCall: Each incoming request from a client is serviced by a new object Singleton: All incoming requests from clients are processed by a single server object Client-activated object: The client receives a reference to the remote object and holds that reference (thus keeping the remote object alive) until it is finished with it

53 ECSE 6780- Software Engineering 1I - 53 - HO 8 © HY 2012 Lecture 8 So Where’s the Component Services?

54 ECSE 6780- Software Engineering 1I - 54 - HO 8 © HY 2012 Lecture 8.NET Enterprise Services Classes in the System.EnterpriseServices namespace wrap COM+ and make it much easier to build COM components COM+ services can be used by.NET components derived from the ServicedComponent class using the System.EnterpriseServices namespace Must be registered with the COM+ catalog Can also use COM+ services outside components

55 ECSE 6780- Software Engineering 1I - 55 - HO 8 © HY 2012 Lecture 8 Example

56 ECSE 6780- Software Engineering 1I - 56 - HO 8 © HY 2012 Lecture 8.NET vs. COM/COM+ No IDL (Interface Definition Language) files, the compiler generates the assembly metadata and dependencies are captured during compilation (in manifests) Doesn’t rely on registry, reduces DLL Hell COM ~1993, DCOM ~1996, (D)COM + MTS ~1998, COM+ ~2000,.NET ~2002


Download ppt "ECSE 6780- Software Engineering 1I - 1 - HO 8 © HY 2012 Lecture 8 COM Limitations (Review) Like CORBA: No support for common programming idioms (other."

Similar presentations


Ads by Google