Common layers in an information system logical architecture
From Wikipedia, the free encyclopedia
The following four layers are maybe the most common layers in a logical multilayered architecture for an information system with an Object-oriented design.
- User Interface Layer (aka View Layer or GUI layer)
- Domain Layer (aka Business Layer, Business logic Layer or Model Layer)
- Infrastructure Layer (data access or other persistence, logging, network I/O e.g. sending emails, and other kind of technical services)
Some common purposes of the above four layers are for example described in the book about Domain-driven design [4] at page 68-74, which is a book that otherwise is focused on describing the Domain layer
Sometimes there is no explicit distinction between the Domain Layer and the Application Layer, e.g. the Application Layer is considered as being a part of the Domain Layer. On the other hand, it is also possible to even further divide the Application/Domain Layers into more layers. For example, if the Model View Presenter pattern is used, then you can consider the Presenter Layer as being a layer between the User Interface Layer and the Application Layer.
The Domain Layer can also use a Business Infrastructure Layer (aka Low-level business services layer) between the Domain Layer and the Infrastructure Layer(s). That layer (BI) is very general and can be used in may different application domains, e.g. a CurrencyConverter.[5]
The Infrastructure Layer may be partitioned into different levels (high-level or low-level technical services)[6]. Though, it is not unusual that developers only consider the persistence (data access) and therefore only talk about the Persistence Layer or the Data Access Layer (instead of an Infrastructure Layer or Technical services Layer). In other words, the other kind of technical services are not always being explicitly thought of as being part of any particular layer.
[edit] Notes
- ^ Martin Fowler's Service Layer
- ^ Martin Fowler's explains that Service Layer is the same as Application Layer
- ^ Comparison/discussion of the GRASP Controller Layer vs. Application/Service Layer
- ^ Domain-Driven Design, the Book
- ^ Applying UML and Patterns, 3rd edition, page 203, ISBN-10: 0131489062
- ^ Applying UML and Patterns, 3rd edition, page 203, ISBN-10: 0131489062