Technology Layers
Every NS applicationNS Application (NSApplication). A pre-built software stack that provides common enterprise application functionality such as CRUD, search, authentication, and business process modeling out of the box. is organized into 6 layersLayerLogical separation of functionality within a single system/application, focused on code organization.. Each layerLayerLogical separation of functionality within a single system/application, focused on code organization. encapsulates a distinct responsibility, and each is built using its own set of technologies.
Shared Layer
technologies: Java
Contains common classes used by all layersLayerLogical separation of functionality within a single system/application, focused on code organization.. Typically simple Java objects used to pass data in a transparent way.
View Layer
technologies: JavaScript, HTML
Contains HTML and JS resources for the user interface.
Control Layer
technologies: Java, Struts2
Contains server side logic for the View LayerLayerLogical separation of functionality within a single system/application, focused on code organization.. It exposes an HTTP interface.
Proxy Layer
technologies: Java, RMI
Contains Agent classes, which provide a technology-independent interface to access resources in the backend.
Logic Layer
technologies: Java, EJB3
Contains Bean classes, which provide transactions and implementations of tasks and commands.
Data Layer
technologies: Java, JPA
Contains Cruds classes, which provide data access.
The Shared LayerLayerLogical separation of functionality within a single system/application, focused on code organization. is used by all other layersLayerLogical separation of functionality within a single system/application, focused on code organization. (except the View LayerLayerLogical separation of functionality within a single system/application, focused on code organization.) to communicate and pass data between without directly depending on each other.
The View, Control, and Proxy layersLayerLogical separation of functionality within a single system/application, focused on code organization. together handle getting a request from the user interface to the backend, while the Proxy, Logic, and Data layersLayerLogical separation of functionality within a single system/application, focused on code organization. handle getting that request from the backend interface down to the database. Splitting responsibilities this way means each layerLayerLogical separation of functionality within a single system/application, focused on code organization. only needs to know about its direct neighbors, not the whole chain.
Why multiple application instances?
An ApplicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. doesn't commit to one technology per layerLayerLogical separation of functionality within a single system/application, focused on code organization.. That choice is made by its ApplicationInstance, and you can define more than one. This matters whenever your technology needs differ by deployment target or environment: a production deployment might rely on proprietary infrastructure you can't (or don't want to) run on a local development machine, so you'd define one instance for each, sharing the same underlying model.
For the exact class conventions each layerLayerLogical separation of functionality within a single system/application, focused on code organization. generates, and how they interact between components, see the Layers reference.