Object-Oriented Client-Server Internet
OCSI Environments as IT Infrastructure
Client Server Basics
Object-Oriented Client-Server Internet (OCSI) environments provide the IT infrastructure for supporting OCSI applications. For our purposes, infrastructure refers to operating systems, networks, middleware, and hardware. OCSI are distributed applications with three core technologies: Client-Server, in which parts of the application behave as clients (or service consumers) and others behave as servers (or service providers); object-oriented programming, which allows applications to be easily created, modified, reused and; the Internet, which provides access to application components, like business logic or databases, through web browsers.
The IT infrastructure platform begins with operating systems and hardware. Above this layer exist two side by side modules, the network services and the local services. On top of that is middleware and the final, top layer is the application itself. These are the building blocks. They can come from multiple vendors. Clients-server models contain functional modules with defined interfaces. Client-Server relationships exist between two functional modules, one is the ‘client’ and the other is the ‘server’.
However, thinking of them as modules neutralizes confusion, since one server can become a client for another server depending on the original request and the processing it requires. In other words, clients may make requests of servers that generate other requests making the server occupy the client position in the newly initiated communication. However, it will always remain a server to the original client. The ‘client’ requests a service from the ‘server’ who then processes the request and returns a response. Information exchange between clients and servers is performed through messages. Messaging is a crucial feature of Client-Server models. These messages are interactive.
Features like message queuing allow clients to store messages and pick them up asynchronously by servers later. Because in our discussion clients and servers are located on different machines, real-time messages pass between them over a network. This improves flexibility and scalability, but creates problems regarding interoperability, portability, performance, and security. Middleware addresses these technical issues.
Middleware is the software that provides the “glue” between separate programs, allowing them to understand and work for each other. Conceptually, it is located above the network and below the application. It provides business un-aware services (more technical than computing), where as the top application software is business aware. Middleware services are made available to applications through APIs (Application Programming Interfaces). They are accessible to humans through GUIs (Graphical User Interfaces).
Client-Server models are only one example of DCS (Distributed Computing System). Other examples of DCS are file transfer models and peer-to-peer models. These systems do not share memory with other nodes on the network and communication between the nodes only occurs through messaging.
Internet
The Internet, as a Client-Server system, has made all the information and services on the World Wide Web a household tool. It has accomplished this by making the system so user friendly. The Internet uses GUI clients also known as web browsers to search, navigate and share information on the web regardless of location. Documents and information is connected through hypermedia links.
A layered technical view of the Internet and the World Wide Web begins with the physical network and the machines on that network. Above that is the IP (Internet Protocol) stack. This includes an IP layer that contains the protocol or language of rules and formatting for delivering data over networks. On the layer above that located side by side are the Transmission Control Protocol (TCP) and the User Datagram Protocol (UDP). Working with IP, TCP is a protocol to send packets of data over networks.
While IP actually delivers the data, TCP keeps track of the data packets in a message to make sure they are routed correctly. TCP/IP is the backbone of the Internet. UDP works with IP as well. UDP/IP is protocol that is also primarily used to broadcast messages over networks. It sends and receives datagrams directly over IP networks. Datagrams are units that are transmitted between Internet modules. At the top of the IP stack are application protocols like File Transfer Protocol (FTP), Network File System Protocol, Simple Mail Transfer Protocol (SMTP), and Remote Procedure Call (RPC).
World Wide Web applications are the top layer. They interact directly with the IP stack or with middleware specific to the World Wide Web. This middleware is made up of different components like web browsers, web servers, and web gateways. It also contains all the necessary technology for the creation of dynamic web content, such as HTML and HTTP (Hypertext Transfer Protocol). World Wide Web applications communicate with the web middleware, which then communicates downward to the IP stack.
Object-Orientation and Distributed Objects
Object orientation has influenced many technologies. For example, its effects can be felt in programming languages, user interfaces, and databases.
The basic components of objects are class, object, message, and inheritance. These are the components that make object orientation flexible and reusable. There are three core object oriented technologies: object oriented user interfaces, object oriented programming, and object oriented databases.
Object Oriented User Interfaces (OOUI) are in contrast to GUIs. GUIs provide dialog boxes and all the tools for navigating and formatting as well as extracting input from the user in the form of their service request. They contain graphic dialog boxes, colors, menus, scroll bars, pull-down and pop-up windows. GUIs can only perform one function at a time, while OOUIs support multi-tasking and unpredictable sequencing. Mac uses OOUI.
Object Oriented Programming (OOP) is one of the dominant languages for building software. Java, C++, and C# are examples of object oriented programming languages. These languages specifically support the concept of inheritance in object orientation. Inheritance represents the active relationship between classes. Classes are categories of objects. Inheritance allows classes to behave like other classes and customize those behaviors according to request needs.
Object databases store and retrieve irregular objects like arrays, icons, sets, and lists, to name a few. These objects are varied as are their relationships to each other. They can be internally complex or simple. They can relate to each other through complex relationships and inherit properties from each other.
Reusable software components that can be assembled quickly to create new applications. These reusable software parts are called component parts or applets.
Distributed objects are objects that are dispersed across a network, but can communicate through that same network. They are applications that are “de-composed” into objects located in a network. Networks are understood as a collection of objects where an object on one machine can message an object in a different location. This concept of distributed objects is helping alleviate many IT problems around portability, interoperability, and re-use, for example. In distributed computing, applications can be constructed from re-usable component parts or applets. Re-usable components encapsulate internal details and function on a different platform improving their interoperability.
Distributed object models start at the bottom with object service. These communicate with the ORB (Object Request Broker) layer. The ORB has access to all object services. Client objects above the ORB layer communicate with it. The ORB the retrieves requested services from the object services layer and communicates it back to the client objects. This same process can be repeated by server objects, which conceptually exist on the same plane as client objects in relation to object services.
Object-Oriented Client Server Internet Environments
OCSI combines object-orientation, Client-Server models, and the Internet to improve business functionality. There are two multi-layered modules side by side. One is the client side and one is the server side. At the bottom of both of these modules are the operating system and hardware. These two communicate through an exchange protocol. The second layer of each contains local and network services side by side in the client and server modules.
The next layer consists of client middleware and server middleware, respectively. Client middleware in OCSI is a web browser. Server middleware in this model includes web servers, SQL (Standard Query Language) servers, or object servers. At the top layer on the client side are client processes like web-based user interfaces. On the server side are server processes like business objects. On both the client side and the server side are application programming interfaces (APIs).
By using the World Wide Web through the Internet, the Object Oriented Client Server Internet (OCSI) model is making user interfaces equivalent with web browsers. This means web users can access HTML documents directly from web servers or from private organizations through gateways. OCSI makes it possible for users to access remote databases through a combo of traditional Client-Server technology, like remote procedure call (RPC) and distributed object models (DOMs).
Client and server programs are both understood as objects being transmitted to the web browser that communicate using remote object oriented calls. This treats them like distributed object. Networks, like the Internet, contain routers so messages can find the most efficient paths and gateways to translate one kind of protocol into another. Database managers and transaction process monitors create interconnectivity between networks and client server environments.