What is Nucleus in ATG?
- Nucleus is is ATG Commerce Component Model that helps to assemble application components using configuration file.
- A configuration file specifies the name of components and required parameters by components
- Nucleus doesn't provide any application-specific functionality
- Application functionality is provided by JavaBean Components
- Nucleus helps to create components and helps to find components each other
- To do this, nucleus organizes application components into a hierarchy, and assigns a name to each component, based on its position in the hierarchy
- For example, a component named
/services/logs/FileLoggerrepresents a component calledFileLogger, contained by the container component calledlogs, which is itself contained bcalledservices. Theservicescomponent is contained by the root component of the hierarchy, which is Nucleus. Components in the hierarchy can refer to each other by name
- Application doesn't need code to create its components. It is done by configuration file that specifies initial class responsible for component and its initial values
- Nucleus looks for the configuration file to initialize and load component
- So in simple words, we create a JavaBean which must have empty constructor to create a component for an application
- Usually an internet application begins with an architectural diagram like database connection component, search engine and several rule to follow
- To deliver this solution, we may use existing component if available and breakdown our large component into sub components as much as possible.
Nucleus is able to handle large number of components.
- Use existing components where appropriate. If no component exists to do the job, try subclassing an existing component.
- Break down large components into smaller components. Smaller components are easier to test, reuse, and inspect at runtime. This might result in a larger number of components, but Nucleus is designed to handle large numbers of components. Large monolithic components are sometimes difficult to spot, so always be on the lookout. It is generally good practice to design each component to perform a single function that can be described in a short paragraph.
- Centralize functions that are shared by multiple components. For example, one component might spin off a thread that causes email to be sent every hour, while another component might spin off another thread that archives a log file each day. Both timing threads can be eliminated if the components take advantage of a centralized Scheduler component.
- If a component is not completely self-contained—usually the result of following the previous point—be sure that its dependencies on other components are clearly enumerated. These dependencies are usually listed as properties of the component (see below). For example, a component might require a pointer to a Scheduler component and a
DatabaseConnectioncomponent, so the component has properties of those types. A component should never need to know about its position in the grand scheme of the architecture—it only needs to know its most immediate dependencies. - When the architectural plan is complete, you can implement it with Nucleus and JavaBeans. If you design each component as a JavaBean, you can rely on Nucleus to create, initialize, and establish the relationship between Beans. You can build the components without regard for their initialization values or how their dependencies on other components are satisfied. These application-specific concerns are contained in configuration files that are read and interpreted by Nucleus.
Comments
Post a Comment