From Distributed Systems by Coulours, a distributed system is partitioned into layers

enter image description here

Middleware is defined as

Middleware was defined in Section 1.5.1 as a layer of software whose purpose is to mask heterogeneity and to provide a convenient programming model to application programmers. Middleware is represented by processes or objects in a set of computers that interact with each other to implement communication and resource-sharing support for distributed applications. It is concerned with providing useful building blocks for the construction of software components that can work with one another in a distributed system. In particular, it raises the level of the communication activities of application programs through the support of abstractions such as remote method invocation; communication between a group of processes; notification of events; the partitioning, placement and retrieval of shared data objects amongst cooperating computers; the replication of shared data objects; and the transmission of multimedia data in real time.

Distributed file systems are defined as

A distributed file system enables programs to store and access remote files exactly as they do local ones, allowing users to access files from any computer on a network. The performance and reliability experienced for access to files stored at a server should be comparable to that for files stored on local disks. In this chapter we define a simple architecture for file systems and describe two basic distributed file service implementations with contrasting designs that have been in widespread use for over two decades: the Sun Network File System, NFS, and the Andrew File System, AFS.

Naming services are defined as

This chapter introduces the name service as a distinct service that is used by client processes to obtain attributes such as the addresses of resources or objects when given their names. The entities named can be of many types, and they may be managed by different services. For example, name services are often used to hold the addresses and other details of users, computers, network domains, services and remote objects. As well as name services, we describe directory services, which look up services when given some of their attributes. Examples are DNS, GNS, and LDAP

Which layer(s) in a distributed system do distributed file systems and naming services belong to?

Are distributed file systems and naming services middleware? Are distributed file systems and naming services not considered as middleware according to the following two from the book?

Distributed file systems (Ch12) and naming services (Ch 13) are missing in categories of middleware:

enter image description here

Distributed file systems (Ch12) and naming services (Ch 13) are specified outside middleware:

enter image description here


  • "Masking Heterogeneity" is a good way to describe middleware. Ask yourself which components do this. Dec 3, 2019 at 15:10
  • Can I ask you if distributed file systems and naming services mask heterogeneity so as to belong to middleware or to application and service layer or OS layer?
    – Tim
    Dec 3, 2019 at 15:12
  • In the sense that they can be used in a homogeneous way, yes. I consider middleware more like the software that connects together disparate, otherwise incompatible systems. Dec 3, 2019 at 15:15
  • Do database systems belong to middleware?
    – Tim
    Dec 5, 2019 at 19:47
  • Do database systems connect two heterogenous systems together? Dec 5, 2019 at 19:51

1 Answer 1


There is no authoritative definition of middleware. The term emerged to coin the additional software components that you need to get the application communicate with other components that may be distributed on the network. It is difficult to define it properly, since it addresses a large spectrum of needs.

For example, for your data, you'll probably rely on some vendor specific middleware that is not included in the OS, which is on the client side and on the server side to organize the communications. The communication component is a middleware. The database server itself is not: it's at the other end (endware?)

In this perspective, the definition of Coulours might be ambiguous or too broad, since it could give the impression that the whole DBMS could be middleware ( it shares data resources with applications and hide the details). But it is not, and Coulours has a separate chapter about sharing data.

The same applies to distributed file systems and name services. Although they would fall under Coulour's middleware definition, these services are in reality deeply intertwined with the operating system and difficult to put in a layer above the OS. This is why Coulours put them in a separate chapter on system services and does not categorize them as middleware.

  • Thanks. Why are distributed file systems and naming services not above middleware, but below middleware, if not middleware
    – Tim
    Dec 3, 2019 at 14:04
  • @Tim because they are closer to the OS. Example of active directory: it’s used at OS level to grand access to files. Take DNS: as soon as you’re using TCP/IP you’ll use web addresses and Tcp/Ip stack delivered with the os will resolve the names. So for application programmer, this is transparently hidden by OS functions.
    – Christophe
    Dec 3, 2019 at 14:12
  • Do database systems belong to middleware? Applications usually don't contain databases, but have data access sublayers to access database systems. So I guess database systems don't belong to application layer, so they belong to middleware layer
    – Tim
    Dec 5, 2019 at 19:57
  • @Tim Is there any database mentioned in your list of middleware? I don’t think so: database is not a middleware, but an end-ware. Database drivers may belong ho the middleware. Because middleware is about communication between components.
    – Christophe
    Dec 5, 2019 at 20:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.