Distributed Enterprise Software Technologies Diya Ajith Saira Kazmi Sumit Narayan {diya,saira,sumit}@engr.uconn.edu CSE 333 : Distributed Component Systems Prof. Steve Demurjian Distributed Systems Extends OOP Reasons: Data used is distributed Computation is distributed Users of application are distributed 2 Key things to look for Platform-independent models and abstraction that one can apply Hide as much of low-level complexity as possible, without sacrificing too much performance Shared Objects • Easy to Re-use • Easy to distribute • Easy to maintain Distributed Systems Fundamental Realities of Distributed Systems Co-located Distributed Communication Fast Slow Failures Objects fail together Objects fail separately, Network can partition Concurrent Access Only with multiple threads Yes Secure Yes No Focus of Project Investigate the technology from architecture, security, remoting and inter-operability perspective Build example that demonstrate the use of related APIs Compare with other technologies Our area of concentration Distributed Object Components CORBA J2EE .Net Distributed Enterprise Software Technologies CORBA Major Contributor: Sumit Narayan CORBA: A Specification OMG (Object Management Group) supplies a balanced set of flexible abstraction and concrete services CORBA Language Mappings Ada C C++ COBOL Java to IDL Lisp CORBA Scripting Language Smalltalk Others Perl Haskell Python Eiffel PHP/ORBit Tcl CORBA: A Specification Differ from typical programming languages Objects can be located anywhere on the network Objects can inter-operate with objects on other platform Objects can be written in any programming language for which there is mapping from IDL to that language Application Interfaces Domain Interfaces Object Request Broker Object Services CORBA It is a specification, just like EJB Allows various platforms, programming language and vendors to interoperate CORBA as Standard for Distributed Objects Portable Defines application programming interface (API) for both server and client object implementation Inter-operability Defines network protocol IIOP (Internet Inter-ORB Protocol); allows clients using CORBA product from any vendor to communicate with objects using CORBA product from any other vendor CORBA CORBA Services (COS) Services to support integration and inter-operation of distributed objects They are defined on top of ORB – defined as standard CORBA Objects with IDL interfaces Factory Naming Context Object Request Broker Event Channel Object Life Cycle Naming Events Relationships Externalization Transactions Trader Query Property CORBA: Features Client Application Static Stub DII Server Application ORB Interface ORB Interface Skel eton DSI Object Adapter Client ORB Core Network IDL - Independent Same for all applications Server ORB Core There may be multiple object adapters CORBA: Architectural Goals Simplicity Consistency Scalability Usability for end users Usability for administrators Usability for implementers Flexibility of security policy Independence of security technology CORBA: Architectural Goals Application Portability Interoperability Performance Object Orientation CORBA: IDL IDL – Advantages? Modification of client code without the impact of server code, vice-versa IDL – Disadvantage? A complete new language with C++ syntax; programmer need to know to prepare IDL module CORBA Basic Object Adapter (BOA) Provides basic services to allow variety of CORBA Objects to be created – ambiguous Portable Object Adapter (POA) Allow developers to construct object implementations that are portable between different ORB Mediator between ORB and Server Server Applications Servants Client ORB Incoming Request POA CORBA: POA Policies Provided to the programmer to have control over the object’s identity, state, storage and life-cycle 7 different policies Thread Policy Depends on the number of objects the application will have Depends on the operating system Expected load on the system ORB_CTRL_MODEL / SINGLE_THREAD_MODEL CORBA: POA Policies Life Span Policy Object ID Uniqueness Policy Transient object cannot live beyond the process which created it Persistent object can live beyond the process which created it TRANSIENT / PERSISTENT UNIQUE_ID / MULTIPLE_ID ID Assignment Policy To specify whether the Object ID was generated by the application or ORB USER_ID / SYSTEM_ID CORBA: POA Policies Servant Retention Policy Request Processing Policy Whether POA retains active servants in object map RETAIN / NON_RETAIN How the request should be processed by the POA USE_ACTIVE_OBJECT_MAP_ONLY / USE_DEFAULT_SERVANT / USE_SERVANT_MANAGER Implicit Activation Policy Whether implicit activation of servants is supported by POA IMPLICIT_ACTIVATION / NO_IMPLICIT_ACTIVATION CORBA: Remoting Relies on protocol called Internet Inter-ORB Protocol (IIOP) The service provided by the remote object is described as Interface Definition Language (IDL) Modularized object interfaces Exceptions raised by an operation Data types of an operation return value, its parameters IDL supports multiple inheritance, depends on the language to which it is mapped IDL generates type information for each method in an interface, and stores it in the Interface Repository (IR). The client can hence query IR, and invoke the method through Dynamic Invocation Interface (DII) CORBA: Remoting On server side, Dynamic Skeleton Interface (DSI) will accept these requests CORBA’s language independence - major advantage Requires fluency in IDL Programming CORBA: Repositories Interface Repository Client access to definitions Type checking for signatures Traversal of inheritance graphs Implementation repository Location of implementation Access Activation information Administration control Security Resource allocation IDL Interface Definitions Interface Repository Implementation Installation Client Stubs Includes Client Implementation Skeletons Implementation Repository Describes Includes Object Implementation CORBA: Inter-operability Achieved by Interface Definition Language (IDL) Programming language neutral Declarative, descriptive, C++ syntax like Allows applications written in different programming languages to inter-operate Representation for minimum of following must be present in the target language: literals, identifiers, basic and constructed data types, modules and interfaces CORBA: Inter-operability Mapped by a stub-compiler; to stubs in component’s programming language - compiled and linked to component code Handles communication with remote machine via ORB For inter-operability between different vendors, use of GIOP/IIOP CORBA: Security Considerations Threat to CORBA System Authorized user gaining access to data that should be hidden from him User masquerading as someone else; so that actions are attributed to the wrong person Security controls being by-passed Eaves-dropping on communication line – gaining access to confidential data Tampering with objects Lack of accountability CORBA: Security Considerations Security Reference Model (SRM) Security Specification is meta-model Specification that is comprehensive (MAC, Encryption) Language Independent (C++, Java….) CORBA: Security Encapsulated within IDL modules: Security: basic interface and data types SecurityLevel1: most basic, provides security feature to all app. SecurityLevel2: permits access to credentials & policies SecurityAdmin: permits manipulation of administrative features API Which implements abstraction defined in the reference model Security Technology Constitutes mechanisms like encryption, validation CORBA: Security Specifications 4 key aspects of security Confidentiality Authenticate – use principal authentication Object Integrity Prevents undetected, unauthorized modification of messages Detects message addition, deletion or change of order Accountability Availability User Sponsor Client Application Security Service ORB Core Security Technology User Sponsor Principal Authenticator Object Client Application Security Current Object ORB Credentials Object CORBA: Security Specifications Security Conformance Level User Sponsor Applications unaware Applications aware Policy controlling Policy enforcing Client Application Security Service ORB Core Security Technology User Sponsor Principal Authenticator Object Client Application Security Current Object ORB Credentials Object CORBA: Security Client Application Target Object (Message Sender) Execution Context Credential Identity Privileges Message Domain Policy Enforcement Code Security Enforcement Subsystem ORB Domain Policy CORBA: Understanding Will run on any platform as long as ORB implementation exist. Provides extensibility, but is difficult Does not provide cross-language inheritance and exception capabilities Responsibility of locating an object implementation is on ORB Parameters between client and remote objects: interface types are passed by reference; others by value CORBA: Understanding Does not attempt to perform general-purpose distributed garbage collection Exception handling is taken care by the Exception object Provides location independence Distributed Enterprise Software Technologies J2EE Major Contributor: Saira Kazmi J2EE Introduction A component-based approach for design, development, assembly, and deployment of software. The J2EE platform offers a multi-tiered distributed application model reusable components a unified security model flexible transaction control web services support using XML based open standards and protocols. The Sun Java System Application Server is a build and runtime environment that lets you build, deploy, and run enterprise applications. Distributed Multi-tiered Applications Components J2EE applications are made up of components that are selfcontained functional software units that may communicate with other components. The J2EE specification defines the following components: • Application clients and applets that run on the client. • Java Servlet and JavaServer Pages™ (JSP™) are Web based components that run on the server. • Enterprise JavaBeans™ (EJB™) are business logic components that run on the server. J2EE components are written in Java. Different from “standard” Java classes because J2EE components are assembled into a J2EE application and are run and managed by the J2EE server where they are deployed. Enterprise Information System Tier Business logic and functionality can organized into various components. J2EE server provides underlying services in the form of a container for every component type. The programmer does not develop these services and is free to concentrate on solving the business problem at hand. Container Services Containers provide interface between a component and the low-level platform specific functionality supporting the component. Before a component can be executed, it must be assembled into a J2EE module and deployed into its container. Container Services include: Security (configurable) System resources can only be used by authorized users/components. Transaction management Relationships among methods that make up a single transaction can be specified. Java Naming and Directory Interface™ (JNDI) lookups JNDI lookup service provides naming and directory services to lookup distributed components. Remote connectivity The J2EE remote connectivity model manages low-level communications between clients and enterprise beans. J2EE server A J2EE server provides EJB and Web containers. Enterprise JavaBeans (EJB) container Manages the execution of enterprise beans. Web container Manages the execution of JSP pages and Servlet components. Application client container Manages the execution of application client components. Applet container Manages the execution of applets. Packaging A J2EE application is delivered in an Enterprise Archive (EAR) file. Forms a J2EE application using components. The .EAR file contains J2EE modules and deployment descriptors. A deployment descriptor is an XML document describing the deployment settings of an application, a module, or a component. (for example security settings) It can be changed without the need to modify the source code. At runtime, the J2EE server uses the deployment descriptor to deploy/run a component. Remoting Java Message Service API (JMS) A messaging standard that allows J2EE application components to create, send, receive, and read messages. It enables loosely coupled, reliable, and asynchronous communication between distributed components. Remoting Java API for XML-Based RPC JAX-RPC enables the development of Web services using XMLbased remote procedural calls over the internet. Uses SOAP and HTTP standards Developer does not directly create SOAP messages. WSDL is supported allowing for easy operability with non-Java platforms like .NET Can combine HTTP with a Java version of the Secure Socket Layer (SSL) and Transport Layer Security (TLS) protocols to establish basic or mutual authentication. SSL and TLS ensure message integrity by providing data encryption with client and server authentication capabilities. Details of JAX-RPC Basic Idea A client creates a proxy and then simply invokes methods on the proxy. A service endpoint interface (SEI) is a Java interface that declares the methods that a client can invoke on the service. Procedure First Define the SEI and implementation class and interface configuration files (service). Compile the SEI and implementation class. Use wscompile to generate the WSDL compliant files needed to deploy service. Use deploytool to package the files into a WAR file. Deploy the WAR file. The tie classes (which are used to communicate with clients) are automatically generated by the Application Server during deployment. Define the client class and configuration file. Use wscompile to generate and compile the stub files. Compile and run the client class. (final report includes an example of this) Java RMI Both Java/RMI and RMI – IIOP are provided as middleware options. Java Remote Method Invocation (RMI) is an Inter-process protocol RMI enables object-oriented distributed computing. The server object makes methods available for remote invocation by binding to a Name in the RMI Registry. The client object, can check availability by looking up the name in the RMI Registry. RMI Registry thus acts as a central management point It is a name repository and does not actually invoke the objects. The RMI Registry holds onto the remote object stubs which it can give to clients. Java RMI The application layer sits on top of the RMI system. A client invoking a method on a remote server object actually makes use of a stub or proxy. Stubs are generated using the rmic compiler. The remote reference layer is responsible for carrying out the semantics of the invocation. Security Authentication, limiting access for different users/roles, and secure transfer of data across network software components is a major concern for enterprise applications. Security for J2EE components is provided by their containers. A container provides two kinds of security: Declarative security expresses an application’s security structure, including security roles, access control, and authentication requirements, in a deployment descriptor for the component. Programmatic security is embedded in an application and is used to make security decisions. It is useful when declarative security alone is not sufficient to express the security model of an application. Security The J2EE server’s authentication service includes and interacts with the following components: Realm: A collection of users and groups that are controlled by the same authentication policy. User: An individual (or application program) identity that has been defined in the Sun Java System Application Server. Users can be associated with a group. Group: A set of authenticated users, classified by common traits, defined in the Application Server. Role: An abstract name for the permission to access a particular set of resources in an application. Security in Web Applications For any WAR created, security options can be specified for: User authentication method Security constraints (access privileges) Web resource collections Network security requirement (basic or SSL) Authorized roles Interoperability All Java interoperability features are includes in J2EE. In addition J2EE provides the following integration tools: Unified application model across tiers with enterprise beans (less complex modules enhance interoperability). Simplified interoperability with the Java Connector Architecture (JCA) for legacy components. Easy database connectivity with the JDBC API Enterprise application integration with message-driven beans and JMS(Java Message Service), JTA(Java Transaction API), and JNDI(Java Naming and Directory Interface) Interoperability The EJB/CORBA mapping specification and RMI-IIOP enables EJB components to be exposed as CORBA objects making them well suited for cross-language interoperability. Multiple operating systems supported. XML-based data interchange integration with JAXP(Java API for XML Processing), SAAJ (SOAP with Attachments API for Java), and JAX-RPC (Java API for XML-based RPC) A JAX-RPC Service provider can interoperate with any SOAP/WSDL compliant system Distributed Enterprise Software Technologies .Net Major Contributor: Diya Ajith .NET Framework Architecture .Net CTS (Common Type System) CLR (Common Language Runtime) Manages the execution of a .Net application, provides cross platform support by ensuring type safety, code verification, exception handling, garbage collection and memory management ASP.NET This component provides a layer of classes for Web services Defines Common standard that languages should adhere to. .Net Windows Forms ADO.NET Provides a layer of classes for the windows user interface Provides classes for data access including database and XML Base Class Library Provides the low level classes on which most of the .Net functionality and other >net Framework classes are built Remoting Remoting makes an object in one process available to an application in another process Marshalling enables a controlled data communication between the 2 processes Marshalling an object can be done in 2 ways Marshall by value:Server creates a copy of the object and passes the copy to the client Marshall by reference: The server creates a reference of the object ans send this reference to the client Remoting When a client calls an object marshalled by reference of the object in the client’s application domain and the client uses that proxy to access that original object on the server Remoting When a client calls an object marshaled by value the server creates and exact copy and sends that copy to the client. The client then uses the data of the object and executes the required functionality directly within the client’s own process without making any additional calls to the server Web Services ASP.NET Communication based on open protocols - Data XML -Schema XSD UDDI DISCO WSDL SOAP Security ADO.NET Security Code Based Access Control Gives Permissions at the code level to access resources depending on evidence permission and security policy Role Base Access Control Gives permission to user to access the resources based on the role Secure Code Verification and Execution Ensures that the executing code stays in it’s domain Secure Communication Ability to pass messages locally or remotely in a secure manner to avoid data modification Secure Code and Data Protection Ensures that code hasn’t been modified without authorization using cryptographic and signed distribution files Comparison Security J2EE and .NET provide easy to use Security models. J2EE provides tools to specify roles for users/code J2EE provides security management for its componets In CORBA, the security can be defined at various levels, varying from basic interface to system administration level. Comparison Database connectivity Java uses JDBC and .Net uses Ado.net or ODBC.NET. ADO.net is not flexible and ODBC is very slow, JDBC is more flexible because of the data source object. Comparison Cross platform interoperability J2EE and CORBA supports cross platform interoperability, whereas .Net only supports windows. Cross language interoperability .Net and CORBA supports a number of languages whereas J2EE RMI only supports only Java Cross vendor interoperability J2EE and CORBA cross vendor interoperability is guaranteed by specifications, where as Microsoft is the only vendor for .Net Remoting Remote Objects Written in Java RMI Interact Approximately in Much the Same Way CORBA Objects do. Server Objects Publish Their Interfaces to Make Them Available to RMI Clients. Stub Classes Deal With Binding to the Remote Objects and Do the Client-side Data Marshaling. Skeleton Classes on the Serverside Handle Incoming Calls. This Looks Very Much Like the Elementary ORB Structure of CORBA. Remoting Since Java-RMI Is Tightly Coupled With the Java Language, Java-RMI Can Work With True Sub-classes. Parameters Passed During Method Calls Between Machines Can Be True Java Objects. This Is Impossible in DCOM or CORBA at Present. Over and Above All This, J2EE Supports Distributed Garbage Collection That Ties Into the Local Garbage Collectors. Remoting Differences RMI emphasis on JAVA only development whereas .NET emphasizes flexibility and extensibility. CORBA is language independent. .Net does not have a standard protocol, it uses channels, formatter and message sinks. The standard channels are Httpchannel and TCPchannel. .Net has the ability to configure remote objects using only external configuration files, this simplifies the server code. CORBA separates the implementation from the server program, thus making it simpler to modify Remoting In Corba Remote object Interface is defined using IDL which provides a separation between interface and implementation. IDL is language independent. But in java the interface is implemented in java and in .NET there is no separation between the interface and implementation. Distributed Enterprise Software Technologies Thank You !!