Thursday, January 10, 2008

DISTRIBUTED OBJECT COMPUTING, REUSABLE SOFTWARE COMPONENTS

Distributed object computing is about building applications in a modular way with components. Components are typically designed for distribution across networks for use on multivendor, multiplatform computing systems. Because components are meant for distribution, standard interfaces and communication methods are important.
An interesting paper written by Simon Phipps of IBM (see the link on the related entries page) provides insight into how the Web and component technology fit together:
TCP/IP provide a network-independent transport layer.
Web clients and servers remove platform and operating system dependencies.
Component software (e.g., Java or ActiveX) eliminates the hassles associated with buying and installing software.
XML makes data independent of software.
XML has become a critical part of component technologies because it allows for the exchange of structured information among any type of systems. XML creates a framework for documents in which data has meaning as defined by tags. Any system or application that understands XML tags can access data in XML documents. The distributed object/XML relationship is discussed further in the next section.
In an enterprise environment, components developed for in-house use may reside on multiple servers in multiple departments. Some objects are used throughout the organization and may be the core components of an application. Other components may add special functionality or exist temporarily on user systems. The component approach lets network administrators and develops quickly update components as needed, without changing the whole system.
If multiple companies are involved in business-to-business relationships over private networks (or the Internet), object technologies can be used to integrate business processes. All that is necessary is a standard object interface that lets each company access common data or objects.
Some of the advantages of component technology are listed next. While component technology may be used to build custom in-house applications, such as accounting systems, Web browsers and browser add-ins provide the most immediate example of component technology.
If the application needs updating, only specific components need upgrading, not the entire application.
New components can be added at any time to expand the functionality of the program.
Users don't need to install every component that makes up an application, only the components they need.
Individual components can be sold on the commercial market to provide functions that developers need to build applications or that users need to expand programs they already use.
Software development time is reduced because existing components can be reused to build new applications.
Using standard interfaces and programming languages like Java, components from different developers and vendors can be combined.
Maintenance costs are reduced because individual components can be upgraded without having to change the entire application.
Component models provide the basis for inter-service communications and component integration. Web sites can offer sophisticated services for users by performing interactive tasks that involve calls by one server to multiple other servers. These multitiered environments allow tasks to be broken up into different services that run on different computers. Services such as application logic, information retrieval, transaction monitoring, data presentation, and management may run on different computers that communicate with one another to provide end users with a seamless application interface.
Distributed Component Architectures
A standard component model and inter-component communication architecture are critical in furthering the use of component technology on the open Web. The most common component models are CORBA, EJB (Enterprise Java Beans), and Microsoft COM, as discussed shortly.
Distributing applications over networks leads to some interesting problems. In a stand-alone system, components run as a unit in the memory space of the same computer. If a problem occurs, the components can easily communicate that problem with one another. But if components are running on different computers, they need a way to communicate the results of their work or problems that have occurred.
An ORB (object request broker) handles the plumbing that allows objects to communicate over a network. You can think of the ORB as a sort of software bus, or backbone, that provides a common interface through which many different kinds of objects can communicate in a peer- to-peer scheme. One such ORB is CORBA (Common Object Request Broker Architecture). CORBA is cross-platform and allows components written for different operating systems and environments to work together.
An object makes a request and sends it to the ORB. The ORB then locates the requested object or an object that can provide services, and establishes communication between the client and server. The receiving object then responds to the request and returns a response to the ORB, which formats and forwards the response to the requester.
In this model, objects simply specify a task to perform. The location of the object that can satisfy the request is not important. The end user sees applications as being seamless, even though services and data may be coming from many places on the network.
The ORB process is similar to a remote procedure call with the added benefit that the ORB itself is capable of locating other objects that can service requests. Actually, an ORB is an alternative to RPCs (remote procedure calls) and message-oriented middleware.
To run sophisticated applications and transactions over networks, there is a need to register components and coordinate their activities so that critical transactions can take place. For example, if data is being written to multiple databases at different locations, a transaction monitor is needed to make sure that all those writes take place. Otherwise, they must all be rolled back. Microsoft Transaction Server is an example. It coordinates the interaction of components and ensures that transactions are implemented safely. Because it provides these features in an object-based environment, it is essentially a transaction-based object request broker. See "Transaction Processing" for more information.
The most important object models are described here:
CORBA (Common Object Request Broker Architecture) The basic messaging technology specification defined by the OMG (Object Management Group) in its OMA (Object Management Architecture). CORBA has been implemented by a number of companies and is becoming an important standard for implementing distributed applications on the Internet. See "CORBA (Common Object Request Broker Architecture)."
COM/DCOM (Component Object Model/Distributed COM) COM is Microsoft's basic object model. An early implementation was OLE (Object Linking and Embedding), which gave Windows applications their basic container and object-linking capabilities (within a single computer). DCOM is the network version of COM that allows objects running in different computers attached to a network to interact. The latest version of COM is COM+ for Windows 2000, which adds many new features and works by way of an XML-based message-passing approach. In 1999, Microsoft announced a DCOM replacement called SOAP (Simple Object Access Protocol) that uses XML as a universal data exchange mechanism. See "COM (Component Object Model)."
EJB (Enterprise Java Beans) JavaBeans are software components that are based on the Java platform. EJB is contained within Sun's J2EE (Java2 Platform, Enterprise Edition). JavaBeans can be combined to build larger applications, in the same way that OLE objects can be combined into compound documents. Enterprise JavaBeans are components for enterprise networks. Recently, the best features of CORBA and EJB are merging into a model that can compete against the entrenched COM/DCOM model. See "Java."
DCOM is the most common of the technologies at this point, mainly because of existing support, developer knowledge, and the pervasiveness of Windows clients. CORBA has better multivendor, multiplatform support and is best for heterogeneous environments. CORBA was originally designed for tightly controlled enterprise network environments and well-managed inter-company connections. Both DCOM and CORBA are considered enterprise application development technologies, although both have been extended to work over the Internet. But they are considered too complex for most Web applications. EJB has gained the widespread support of Web developers. It is implemented in application servers from IBM, BEA Systems, and iPlanet (the Sun and Netscape Alliance). The CORBA 3.0 specification defines CORBA Beans, which combines features of CORBA and EJB with additional support for XML.
Microsoft's SOAP is important because it represents a move from the traditional remote procedure call method for exchanging information among objects to a message-passing scheme that uses XML. Microsoft now believes that messaging model best for the Web, as opposed to connection-oriented models such as RPC (remote procedure call) and Java's RMI (remote method invocation). By allowing objects to interact via XML, data interoperability is enhanced. SOAP carries XML messages across the Web via HTTP, which is pretty much a bottom line for interoperability.
The Object Management Group that managed CORBA standards has been working with OASIS (Organization for the Advancement of Structured Information Standards) to define how XML can be used to support CORBA services. EJB uses XML to provide information about Bean's interfaces, data types, and structure.

Distributed object computing uses resuable software components


Reusable Software component:
Reusable software components are designed to apply the power and benefit of reusable, interchangeable parts from other industries to the field of software construction. Other industries have long profited from reusable components. Reusable electronic components are found on circuit boards. A typical part in your car can be replaced by a component made from one of many different competing manufactuers. Lucrative industries are built around parts construction and supply in most competitive fields..

Example of Reusable Software component:

JAVA BEANS:

A Java Bean is a reusable software component...

JavaBeans technology is the component architecture for the Java 2 Platform, Standard Edition (J2SE). Components (JavaBeans) are reusable software programs that you can develop and assemble easily to create sophisticated applications...

No comments: