Middleware: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m →‎In distributed applications: remove "citation needed" - The sentence only explains what is already stated before and after, it does not add any claims that would need citation.
Added many new references, removed refimprove template.
Line 1: Line 1:
{{Refimprove|date=August 2013}}
[[File:Linux kernel and gaming input-output latency.svg|thumb|Anything between the [[Kernel (computing)|kernel]] and user applications is considered middleware.]]
[[File:Linux kernel and gaming input-output latency.svg|thumb|Anything between the [[Kernel (computing)|kernel]] and user applications is considered middleware.]]


Line 10: Line 9:
[[File:Middleware Schema.svg|thumb|Software architecture: Middleware]]
[[File:Middleware Schema.svg|thumb|Software architecture: Middleware]]


The term is most commonly used for software that enables communication and management of data in [[distributed application]]s. An [[IETF]] workshop in 2000 defined middleware as "those services found above the [[transport layer|transport]] (i.e. over TCP/IP) layer set of services but below the application environment" (i.e. below application-level [[application programming interface|APIs]]).<ref>http://www.ietf.org/rfc/rfc2768.txt</ref> 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 server]]s, [[application server]]s, [[content management system]]s, and similar tools that support application development and delivery.
The term is most commonly used for software that enables communication and management of data in [[distributed application]]s. An [[IETF]] workshop in 2000 defined middleware as "those services found above the [[transport layer|transport]] (i.e. over TCP/IP) layer set of services but below the application environment" (i.e. below application-level [[application programming interface|APIs]]).<ref>http://www.ietf.org/rfc/rfc2768.txt</ref> 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 server]]s, [[application server]]s, [[content management system]]s, and similar tools that support application development and delivery.<ref name="EtzkornIntro17">{{cite book |url=https://books.google.com/books?id=AZgnDwAAQBAJ&pg=PT45 |title=Introduction to Middleware: Web Services, Object Components, and Cloud Computing |author=Etzkorn, L.H. |publisher=CRC Press |pages=4–5 |year=2017 |isbn=9781498754101}}</ref>


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."<ref>{{Cite web|first=Sacha|last=Krakowiak|url=http://middleware.objectweb.org/|title=What's middleware?|accessdate=2005-05-06|publisher=ObjectWeb.org|deadurl=yes|archiveurl=https://web.archive.org/web/20050507151935/http://middleware.objectweb.org/|archivedate=2005-05-07|df=}}</ref> Services that can be regarded as middleware include [[enterprise application integration]], [[data integration]], [[message oriented middleware]] (MOM), [[object request broker]]s (ORBs), and the [[enterprise service bus]] (ESB).
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."<ref>{{Cite web|first=Sacha|last=Krakowiak|url=http://middleware.objectweb.org/|title=What's middleware?|accessdate=2005-05-06|publisher=ObjectWeb.org|deadurl=yes|archiveurl=https://web.archive.org/web/20050507151935/http://middleware.objectweb.org/|archivedate=2005-05-07|df=}}</ref> Services that can be regarded as middleware include [[enterprise application integration]], [[data integration]], [[message oriented middleware]] (MOM), [[object request broker]]s (ORBs), and the [[enterprise service bus]] (ESB).<ref name="LuckhamEvent11">{{cite book |url=https://books.google.com/books?id=dqWxewxhyq8C&pg=PA27 |title=Event Processing for Business: Organizing the Real-Time Enterprise |author=Luckham, D.C. |publisher=John Wiley & Sons |pages=27–8 |year=2011 |isbn=9781118171851}}</ref>


[[DBMS|Database]] access services are often characterised as middleware. Some of them are language specific implementations and support heterogeneous features and other related communication features. Examples of database-oriented middleware include [[ODBC]], [[JDBC]] and [[transaction processing]] monitors.
[[DBMS|Database]] access services are often characterised as middleware. Some of them are language specific implementations and support heterogeneous features and other related communication features.<ref name="SimonOpen14">{{cite book |url=https://books.google.com/books?id=jyOjBQAAQBAJ&pg=PA43 |title=Open Client/Server Computing and Middleware |author=Simon, A.R.; Wheeler, T. |publisher=Academic Press |pages=43–9 |year=2014 |isbn=9781483214276}}</ref> Examples of database-oriented middleware include [[ODBC]], [[JDBC]] and [[transaction processing]] monitors.<ref name="ArregocesData03">{{cite book |url=https://books.google.com/books?id=IcoqBXbG9IsC&pg=PA92 |title=Data Center Fundamentals |author=Arregoces, M.; Portolani, M. |publisher=Cisco Press |pages=92–93 |year=2003 |isbn=9781587140747}}</ref>


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 [[SA Forum|Service Availability Forum]] and is commonly used in complex, [[embedded systems]] within telecom, defense and [[aerospace]] industries.
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 [[SA Forum|Service Availability Forum]]<ref name="SAFService11">{{cite web |url=http://devel.opensaf.org/SAI-Overview-B.05.03.AL.pdf |format=PDF |title=Service Availability Interface Specification |publisher=Service Availability Forum |date=30 September 2011 |accessdate=26 July 2018}}</ref> and is commonly used in complex, [[embedded systems]] within telecom, defense and [[aerospace]] industries.<ref name="JokiahoService12">{{cite book |url=https://books.google.com/books?id=Ql1oHlKkHOsC&pg=PT9&lpg=PT9 |title=Service Availability: Principles and Practice |chapter=Foreward |author=Jokiaho, T.; Fryer, J. |publisher=John Wiley & Sons |page=xv |year=2012 |isbn=9781119941675}}</ref>


==Other examples==
==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.
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.
* The [[Android (operating system)|Android]] operating system uses the [[Linux]] kernel at its core, and also provides an [[application framework]] that developers incorporate into their applications. In addition, [[Android (operating system)#Design|Android]] provides a middleware layer including [[software library|libraries]] that provide services such as data storage, screen display, [[multimedia]], and web browsing. Because the middleware libraries are [[Compiler|compiled]] to [[machine language]], services execute quickly. Middleware libraries also implement device-specific functions, so applications and the application framework need not concern themselves with variations between various Android devices. Android's middleware layer also contains the [[Dalvik (software)|Dalvik]] [[virtual machine]] and its core [[Java (programming language)|Java]] application libraries.<ref>Charlie Collins, Michael Galpin and Matthias Kaeppler, Android in Practice, Manning Publications, 2011</ref>
* The [[Android (operating system)|Android]] operating system uses the [[Linux]] kernel at its core, and also provides an [[application framework]] that developers incorporate into their applications. In addition, [[Android (operating system)#Design|Android]] provides a middleware layer including [[software library|libraries]] that provide services such as data storage, screen display, [[multimedia]], and web browsing. Because the middleware libraries are [[Compiler|compiled]] to [[machine language]], services execute quickly. Middleware libraries also implement device-specific functions, so applications and the application framework need not concern themselves with variations between various Android devices. Android's middleware layer also contains the [[Dalvik (software)|Dalvik]] [[virtual machine]] and its core [[Java (programming language)|Java]] application libraries.<ref>Charlie Collins, Michael Galpin and Matthias Kaeppler, Android in Practice, Manning Publications, 2011</ref>
* [[Game engine]] software such as [[Gamebryo]] and [[Renderware]] are sometimes described as middleware, because they provide many services to simplify game development.
* [[Game engine]] software such as [[Gamebryo]] and [[Renderware]] are sometimes described as middleware, because they provide many services to simplify game development.<ref name="MooreIntro06">{{cite book |title=Introduction to the Game Industry |author=Moore, M.E. |publisher=Pearson Prentice Hall |page=169 |year=2006 |isbn=9780131687431}}</ref>
* In simulation technology, ''middleware'' is generally used in the context of the [[high level architecture (simulation)|high level architecture]] (HLA) that applies to many distributed simulations. It is a layer of software that lies between the [[application code]] and the [[Run-Time Infrastructure (simulation)|run-time infrastructure]]. Middleware generally consists of a library of functions, and enables a number of applications—simulations or federates in HLA terminology—to [[paging|page]] these functions from the common library rather than re-create them for each application.
* In simulation technology, ''middleware'' is generally used in the context of the [[high level architecture (simulation)|high level architecture]] (HLA) that applies to many distributed simulations. It is a layer of software that lies between the [[application code]] and the [[Run-Time Infrastructure (simulation)|run-time infrastructure]]. Middleware generally consists of a library of functions, and enables a number of applications—simulations or federates in HLA terminology—to [[paging|page]] these functions from the common library rather than re-create them for each application.<ref name="DriraCoop03">{{cite book |url=https://books.google.com/books?id=2clrCQAAQBAJ&pg=PA41 |chapter=Chapter 4: Middleware |title=Cooperative Environments for Distributed Systems Engineering: The Distributed Systems Environment Report |author=Becchini, R.; Chilaev, P.; Krivtsov, V. et al. |editor=Drira, K.; Martelli, A.; Villemur, T. |publisher=Springer |pages=41–4 |year=2003 |isbn=9783540455820}}</ref>
* Wireless networking developers can use middleware to meet the challenges associated with a [[wireless sensor network]] (WSN). Implementing a middleware application allows WSN [[Middleware Analysts|developers]] to integrate operating systems and hardware with the wide variety of various applications that are currently available.<ref>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
* Wireless networking developers can use middleware to meet the challenges associated with a [[wireless sensor network]] (WSN). Implementing a middleware application allows WSN [[Middleware Analysts|developers]] to integrate operating systems and hardware with the wide variety of various applications that are currently available.<ref>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
[http://dsonline.computer.org/portal/site/dsonline/menuitem.3a529f3832e8f1e13587e0606bcd45f3/index.jsp iEEE Distributed Systems Online]</ref>
[http://dsonline.computer.org/portal/site/dsonline/menuitem.3a529f3832e8f1e13587e0606bcd45f3/index.jsp iEEE Distributed Systems Online]</ref>
* The [[QNX]] operating system offers middleware for providing multimedia services for use in [[automobile]]s, [[aircraft]] and other environments.
* The [[QNX]] operating system offers middleware for providing multimedia services for use in [[automobile]]s, [[aircraft]] and other environments.<ref name="QNX08">{{cite web |url=http://www.qnx.com/news/pr_2901_1.html |title=QNX Software Joins Internet ITS Consortium of Japan |work=QNX News Releases |publisher=QNX |date=6 May 2008 |accessdate=26 July 2018}}</ref>
* [[Radio-frequency identification]] software toolkits provide middleware to filter noisy and redundant raw data.
* [[Radio-frequency identification]] (RFID) software toolkits provide middleware to filter noisy and redundant raw data.<ref name="GloverRFID06">{{cite book |url=https://books.google.com/books?id=cKKZoH48D4cC&pg=PA38 |title=RFID Essentials |author=Glover, B.; Bhatt, H. |publisher=O'Reilly Media |pages=38–44 |year=2006 |isbn=9780596009441}}</ref>


==See also==
==See also==

Revision as of 00:25, 27 July 2018

Anything between the kernel and user applications is considered middleware.

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

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

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, defense 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.

  • The Android operating system uses the Linux kernel at its core, and also provides an application framework that developers incorporate into their applications. In addition, Android provides a middleware layer including libraries that provide services such as data storage, screen display, multimedia, and web browsing. Because the middleware libraries are compiled to machine language, services execute quickly. Middleware libraries also implement device-specific functions, so applications and the application framework need not concern themselves with variations between various Android devices. Android's middleware layer also contains the Dalvik virtual machine and its core Java application libraries.[11]
  • Game engine software such as Gamebryo and Renderware are sometimes described as middleware, because they provide many services to simplify game development.[12]
  • In simulation technology, middleware is generally used in the context of the high level architecture (HLA) that applies to many distributed simulations. It is a layer of software that lies between the application code and the run-time infrastructure. Middleware generally consists of a library of functions, and enables a number of applications—simulations or federates in HLA terminology—to page these functions from the common library rather than re-create them for each application.[13]
  • Wireless networking developers can use middleware to meet the challenges associated with a wireless sensor network (WSN). Implementing a middleware application allows WSN developers to integrate operating systems and hardware with the wide variety of various applications that are currently available.[14]
  • The QNX operating system offers middleware for providing multimedia services for use in automobiles, aircraft and other environments.[15]
  • Radio-frequency identification (RFID) software toolkits provide middleware to filter noisy and redundant raw data.[16]

See also

References

  1. ^ "What is Middleware?". Middleware.org. Defining Technology. 2008. Archived from the original on June 29, 2012. Retrieved 2013-08-11. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  2. ^ Gall, Nick (July 30, 2005). "Origin of the term middleware".
  3. ^ http://www.ietf.org/rfc/rfc2768.txt
  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. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  6. ^ Luckham, D.C. (2011). Event Processing for Business: Organizing the Real-Time Enterprise. John Wiley & Sons. pp. 27–8. ISBN 9781118171851.
  7. ^ Simon, A.R.; Wheeler, T. (2014). Open Client/Server Computing and Middleware. Academic Press. pp. 43–9. ISBN 9781483214276.{{cite book}}: CS1 maint: multiple names: authors list (link)
  8. ^ Arregoces, M.; Portolani, M. (2003). Data Center Fundamentals. Cisco Press. pp. 92–93. ISBN 9781587140747.{{cite book}}: CS1 maint: multiple names: authors list (link)
  9. ^ "Service Availability Interface Specification" (PDF). Service Availability Forum. 30 September 2011. Retrieved 26 July 2018.
  10. ^ Jokiaho, T.; Fryer, J. (2012). "Foreward". Service Availability: Principles and Practice. John Wiley & Sons. p. xv. ISBN 9781119941675.{{cite book}}: CS1 maint: multiple names: authors list (link)
  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. (ed.). Cooperative Environments for Distributed Systems Engineering: The Distributed Systems Environment Report. Springer. pp. 41–4. ISBN 9783540455820. {{cite book}}: Explicit use of et al. in: |author= (help)CS1 maint: multiple names: authors list (link)
  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
  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.{{cite book}}: CS1 maint: multiple names: authors list (link)