Middleware

Last updated

Middleware is a computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue". [1]

Contents

Middleware makes it easier for software developers to implement communication and input/output, so they can focus on the specific purpose of their application. It gained popularity in the 1980s as a solution to the problem of how to link newer applications to older legacy systems, although the term had been in use since 1968. [2]

In distributed applications

Software architecture: Middleware Middleware Schema.svg
Software architecture: Middleware

The term is most commonly used for software that enables communication and management of data in distributed applications. An IETF workshop in 2000 defined middleware as "those services found above the transport (i.e. over TCP/IP) layer set of services but below the application environment" (i.e. below application-level APIs). [3] In this more specific sense middleware can be described as the dash ("-") in client-server , or the -to- in peer-to-peer . Middleware includes web servers, application servers, content management systems, and similar tools that support application development and delivery. [4]

ObjectWeb defines middleware as: "The software layer that lies between the operating system and applications on each side of a distributed computing system in a network." [5] Services that can be regarded as middleware include enterprise application integration, data integration, message oriented middleware (MOM), object request brokers (ORBs), and the enterprise service bus (ESB). [6]

Database access services are often characterised as middleware. Some of them are language specific implementations and support heterogeneous features and other related communication features. [7] Examples of database-oriented middleware include ODBC, JDBC and transaction processing monitors. [8]

Distributed computing system middleware can loosely be divided into two categories—those that provide human-time services (such as web request servicing) and those that perform in machine-time. This latter middleware is somewhat standardized through the Service Availability Forum [9] and is commonly used in complex, embedded systems within telecom, defence and aerospace industries. [10]

Other examples

The term middleware is used in other contexts as well. Middleware is sometimes used in a similar sense to a software driver, an abstraction layer that hides detail about hardware devices or other software from an application.

See also

Related Research Articles

In software engineering, multitier architecture or multilayered architecture is a client–server architecture in which presentation, application processing and data management functions are physically separated. The most widespread use of multitier architecture is the three-tier architecture.

Grid computing is the use of widely distributed computer resources to reach a common goal. A computing grid can be thought of as a distributed system with non-interactive workloads that involve many files. Grid computing is distinguished from conventional high-performance computing systems such as cluster computing in that grid computers have each node set to perform a different task/application. Grid computers also tend to be more heterogeneous and geographically dispersed than cluster computers. Although a single grid can be dedicated to a particular application, commonly a grid is used for a variety of purposes. Grids are often constructed with general-purpose grid middleware software libraries. Grid sizes can be quite large.

Middleware in the context of distributed applications is software that provides services beyond those provided by the operating system to enable the various components of a distributed system to communicate and manage data. Middleware supports and simplifies complex distributed applications. It includes web servers, application servers, messaging and similar tools that support application development and delivery. Middleware is especially integral to modern information technology based on XML, SOAP, Web services, and service-oriented architecture.

QNX

QNX is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems market. QNX was one of the first commercially successful microkernel operating systems. As of 2020, it is used in a variety of devices including cars and mobile phones.

A computing platform or digital platform is the environment in which a piece of software is executed. It may be the hardware or the operating system (OS), even a web browser and associated application programming interfaces, or other underlying software, as long as the program code is executed with it. Computing platforms have different abstraction levels, including a computer architecture, an OS, or runtime libraries. A computing platform is the stage on which computer programs can run.

The term Web service (WS) is either:

Inter-process communication

In computer science, inter-process communication or interprocess communication (IPC) refers specifically to the mechanisms an operating system provides to allow the processes to manage shared data. Typically, applications can use IPC, categorized as clients and servers, where the client requests data and the server responds to client requests. Many applications are both clients and servers, as commonly seen in distributed computing.

An application server is a server that hosts applications.

Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple operating systems and network protocols. The middleware creates a distributed communications layer that insulates the application developer from the details of the various operating systems and network interfaces. APIs that extend across diverse platforms and networks are typically provided by MOM.

The Globus Toolkit is an open-source toolkit for grid computing developed and provided by the Globus Alliance. On 25 May 2017 it was announced that the open source support for the project would be discontinued in January 2018, due to a lack of financial support for that work. The Globus service continues to be available to the research community under a freemium approach, designed to sustain the software, with most features freely available but some restricted to subscribers.

Wireless sensor network (WSN) refers to a group of spatially dispersed and dedicated sensors for monitoring and recording the physical conditions of the environment and organizing the collected data at a central location. WSNs measure environmental conditions like temperature, sound, pollution levels, humidity, wind, and so on.

In computer science, message passing is a technique for invoking behavior on a computer. The invoking program sends a message to a process and relies on that process and its supporting infrastructure to then select and run some appropriate code. Message passing differs from conventional programming where a process, subroutine, or function is directly invoked by name. Message passing is key to some models of concurrency and object-oriented programming.

In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to "run on" or "run on top of" the resulting platform.

The Internet Communications Engine, or Ice, is an open-source RPC framework developed by ZeroC. It provides SDKs for C++, C#, Java, JavaScript, MATLAB, Objective-C, PHP, Python, Ruby, Swift and TypeScript, and can run on various operating systems, including Linux, Windows, macOS, iOS and Android.

OPC Unified Architecture is a machine to machine communication protocol for industrial automation developed by the OPC Foundation. Distinguishing characteristics are:

Configurable Network Computing or CNC is JD Edwards's (JDE) client–server proprietary architecture and methodology that implements its highly-scalable enterprise-wide business solutions software that can run on a wide variety of hardware, operating systems (OS) and hardware platforms. Now a division of the Oracle Corporation, Oracle continues to sponsor ongoing development of the JD Edwards Enterprise Resource Planning (ERP) system. While highly flexible, the CNC architecture is proprietary and, as such, it cannot be exported to any other systems. While the CNC architecture's chief claim to fame, insulation of applications from the underlying database and operating systems, was largely superseded by modern web-based technology, nevertheless CNC technology continues to be at the heart of both JD Edwards' OneWorld and EnterpriseOne architecture and will play a significant role Oracle's developing fusion architecture initiative. While a proprietary architecture, CNC is neither an Oracle nor JDE product offering. The term CNC also refers to the systems analysts who install, maintain, manage and enhance this architecture. CNCs are also one of the three technical areas of expertise in the JD Edwards Enterprise Resource Planning ERP which include developer/report writer and functional/business analysts.

Computer cluster

A computer cluster is a set of loosely or tightly connected computers that work together so that, in many aspects, they can be viewed as a single system. Unlike grid computers, computer clusters have each node set to perform the same task, controlled and scheduled by software.

An application programming interface (API) is a computing interface that defines interactions between multiple software intermediaries. It defines the kinds of calls or requests that can be made, how to make them, the data formats that should be used, the conventions to follow, etc. It can also provide extension mechanisms so that users can extend existing functionality in various ways and to varying degrees. An API can be entirely custom, specific to a component, or designed based on an industry-standard to ensure interoperability. Through information hiding, APIs enable modular programming, allowing users to use the interface independently of the implementation.

The JAUS Tool Set (JTS) is a software engineering tool for the design of software services used in a distributed computing environment. JTS provides a Graphical User Interface (GUI) and supporting tools for the rapid design, documentation, and implementation of service interfaces that adhere to the Society of Automotive Engineers' standard AS5684A, the JAUS Service Interface Design Language (JSIDL). JTS is designed to support the modeling, analysis, implementation, and testing of the protocol for an entire distributed system.

References

  1. "What is Middleware?". Middleware.org. Defining Technology. 2008. Archived from the original on June 29, 2012. Retrieved 2013-08-11.CS1 maint: unfit URL (link)
  2. Gall, Nick (July 30, 2005). "Origin of the term middleware".
  3. "Home". IETF.
  4. Etzkorn, L. H. (2017). Introduction to Middleware: Web Services, Object Components, and Cloud Computing. CRC Press. pp. 4–5. ISBN   9781498754101.
  5. Krakowiak, Sacha. "What's middleware?". ObjectWeb.org. Archived from the original on 2005-05-07. Retrieved 2005-05-06.
  6. Luckham, D. C. (2011). Event Processing for Business: Organizing the Real-Time Enterprise. John Wiley & Sons. pp. 27–28. ISBN   9781118171851.
  7. Simon, A. R.; Wheeler, T. (2014). Open Client/Server Computing and Middleware. Academic Press. pp. 43–49. ISBN   9781483214276.
  8. Arregoces, M.; Portolani, M. (2003). Data Center Fundamentals. Cisco Press. pp. 92–93. ISBN   9781587140747.
  9. "Service Availability Interface Specification" (PDF). Service Availability Forum. 30 September 2011. Retrieved 26 July 2018.
  10. Jokiaho, T.; Fryer, J. (2012). "Foreword". Service Availability: Principles and Practice. John Wiley & Sons. p. xv. ISBN   9781119941675.
  11. Charlie Collins, Michael Galpin and Matthias Kaeppler, Android in Practice, Manning Publications, 2011
  12. Moore, M. E. (2006). Introduction to the Game Industry. Pearson Prentice Hall. p. 169. ISBN   9780131687431.
  13. Becchini, R.; Chilaev, P.; Krivtsov, V.; et al. (2003). "Chapter 4: Middleware". In Drira, K.; Martelli, A.; Villemur, T. (eds.). Cooperative Environments for Distributed Systems Engineering: The Distributed Systems Environment Report. Springer. pp. 41–4. ISBN   9783540455820.
  14. Hadim, S. and Mohamed, N. (2006). Middleware challenges and approaches for wireless sensor networks. IEEE Distributed Systems Online vol 7. Issue 3. Retrieved March 4, 2009 from iEEE Distributed Systems Online Archived 2011-09-28 at the Wayback Machine
  15. "QNX Software Joins Internet ITS Consortium of Japan". QNX News Releases. QNX. 6 May 2008. Retrieved 26 July 2018.
  16. Glover, B.; Bhatt, H. (2006). RFID Essentials. O'Reilly Media. pp. 38–44. ISBN   9780596009441.