Table of Contents
What is Enterprise?
- A business Organization
- In computer industry, the term is often described as the large organization that utilized computers
- E.g. Intranet example of an enterprise computing system
Enterprise Application: –
- A business Application
- Business application are complex, scalable ,distributed, component based and mission critical.
Trend (better tools, greater impact, powerful option)
- Growth of User Experience (UX)
- Explosion of Development Tools
- Decline of Native Development
- Growing business focus on user experience
- Growing need for integration and web service
Enterprise Integration Application
Enterprise application integration (EAI) is the use of technologies and services across an enterprise to enable the integration of software applications and hardware systems. Many proprietary and open projects provide EAI solution support.EAI is related to middleware technologies. Other developing EAI technologies involve Web service integration, service-oriented architecture, content integration, and business processes. Intercommunication between enterprise applications (EA), such as customer relations management (CRM), supply chain management (SCM) and business intelligence is not automated. Thus, EAs do not share common data or business rules. EAI links EA applications to simplify and automate business processes without applying the excessive application or data structure changes.
However, EAI is challenged by different operating systems, database architectures and/or computer languages, as well as other situations where legacy systems are no longer supported by the original manufacturers.
Keyword Web services and business integration
How does enterprise System work?
Enterprise systems feature a set of integrated software modules and a central database that enables data to be shared by many different business processes and functional areas throughout the enterprise.
What is EAI?
- An application coupling mechanism, to integrate individual applications into the enterprise
- Provides a unified interface to legacy systems
- Defined as the uses of software and computer systems architectural principles to integrate a set of enterprise computer applications
- The real beauty of Enterprise Application Integration is making various separate applications work together to produce a unified set of functionality
- System development over the last 20 years has tended to emphasize core functionality as opposed to integration
- Many systems are highly stovepiped and difficult to integrate with other similar systems
- Ultimately, it comes down to a cost issue. Building a system with integration in mind reduces the amount of money spent on further system development
- Integration typically costs Fortune 1000 companies over $100 billion a year
- 30% of the IT budget is spent on linking/merging of databases and sources
- Wouldn’t it be great if everyone used the same servers with the same operating system with the same clients, etc?
- Reality is very diverse. We can expect a mix of mainframes, Windows, UNIX, Linux, VMS, as well as many other systems
- Getting them to work/share data together is the issue!
- It’s NOT just a buzz-word!
- EAI is defined as “the unrestricted sharing of data and business processes among any connected applications and data sources in the enterprise.”
- Using EAI effectively will allow us to integrate without having to make major changes to our current infrastructure
- The market is stocked with legacy systems designed to support single users without thought of integrating them into a larger whole.
- Many of these systems still provide value to the organization.
- Packaged applications often create their own set of issues and problems
- The traditional solution to integration issues has been the introduction of ‘middle-ware’.
- Middle-ware acts as a transport mechanism to perform integration typically on client/server-based systems.
- Many flavors/standards of middle-ware exist:
- Remote Procedure Calls (RPC)
- Sockets Common Object Reuse Broker Architecture (CORBA)
- Distributed Computing Environment (DCE)
- Java’s Remote Method Invocation (RMI)
- While middle-ware can be a solution, problems exist:
- Changes are typically required to existing systems to incorporate middle-ware
- No centralized management typically exists, so complex systems rapidly grow unmanageable
- Technological advances tend to make middle-ware based systems look like an ill-planned highway system composed of small integration projects instead of a single over-reaching standard
- Applying Technology
- EAI focuses on the integration of both processes AND data while middle-ware is data-oriented
How Did Things Get This Bad?
- Most organizations lacked architectural foresight.
- As they upgraded from legacy systems, they moved to newer ‘open’ systems without consideration of how well these new systems would fit into their current structure and integrate with existing legacy systems.
How is EAI different?
- EAI focuses on the integration of both business-level processes and data whereas the traditional middleware approach is data-oriented.
- EAI includes the notion of reuse as well as distribution of business processes and data.
- EAI allows users who understand very little about the details of the applications to integrate them
EAI Brings Order to the Enterprise
PURPOSES OF EAI
- Data (information) integration: Ensuring that information in multiple systems is kept consistent. This is also known as EII (Enterprise Information Integration).
- Process integration: linking business processes across applications.
- Vendor independence: Extracting business policies or rules from applications and implementing them in the EAI system, so that even if one of the business applications is replaced with a different vendor’s application, the business rules do not have to be re-implemented.
- Common facade: An EAI system could front-end a cluster of applications, providing a single consistent access interface to these applications and shielding users from having to learn to interact with different applications.
Multitier architecture :
In software engineering, multi-tier architecture (often referred to as n-tier architecture) is a client-server architecture in which presentation, application processing, and data management functions are logically separated. For example, an application that uses middleware to service data requests between a user and a database employs multi-tier architecture. The most widespread use of multi-tier architecture is the three-tier architecture.
N-tier application architecture provides a model by which developers can create flexible and reusable applications. By segregating an application into tiers, developers acquire the option of modifying or adding a specific layer, instead of reworking the entire application. Three-tier architectures typically comprise a presentation tier, a business or data access [logic] tier, and a data tier.
(Wikipedia: Multitier Architecture)
3-tier architecture (application view)
Advantages of the 3-tier architecture approach :
- The ability to separate logical components of an application ensures that applications are easy to manage and understand. i.e. experts can be employed that specialize in one of the layers e.g. user interface design
- Because communication can be controlled between each logical tier of an application, changes in one tier, for example, the database access tier, do not have to affect the client component. i.e. a change from one DBMS to another would only require a change to the component in the data access layer with little or no effect on the business/logic (middle) or UI layer.
- Specific tools and technologies suited to each layer can be deployed (and may evolve at a different pace).
Typical web-oriented 3-tier architecture
Web-oriented 3-tier architecture: tools & technologies
- Logical Tier – Web Server (Apache, IIS, Websphere, etc.); Scripting Languages (PHP, Perl, etc.), Programming Languages (Java, C, C#, etc), Application Frameworks (Ruby on Rails, etc.)
- Data Tier – Database Management System (DBMS) (Oracle, MySQL, SQL Server, DB2 etc.), XMLDB
N-Tier Architecture – Advantages
- Scalable: this is due to its capability of multiple tier deployment and the tier decoupling it brought. For example
- The data tier can be scaled up by database clustering without other tiers involving.
- The web client side can be scaled up by load-balancer easily without affecting other tiers.
- Windows server can be clustered easily for load balancing and failover.
- In addition, business tier server can also be clustered to scale up the application, such as Weblogic cluster in J2EE.
2. Better and finer security control to the whole system: We can enforce the security differently for each tier if the security requirement is different for each tier. For example
- Business tier and data tier usually need higher security levels than presentation tier does, then we can put these two high-security tiers behind firewall for protection.
- 1 or 2 tiers architecture cannot fully achieve this purpose because of a limited number of tiers.
- Also, for N-Tier architecture, users cannot access the business layer and data layer directly, all requests from users are routed by the client presenter layer to the business layer, then to the data layer. Therefore, the client presenter layer also serves as a proxy-like layer for the business layer, and the business layer serves as a proxy-like layer for the data layer. These proxy-like layers provide further protection for their layers below.
3. Better fault tolerance ability: for example
- The databases in the data layer can be clustered for failover or load balance purposes without affecting other layers.
4. Independent tier upgrading and changing without affecting other tiers:
- In the object-oriented world, Interface-dependency implementation can decouple all layers very well so that each layer can change individually without affecting other layers too much.
- Interface-dependency means a layer depends on another layer by interfaces only, not concrete classes.
- Also, the dependency of a layer only on its directly-below layer also minimizes the side effect of a layer’s change on the whole system. For example,
- If we keep the interfaces unchanged, we can update or replace the implementation of any layer independently without affecting the whole system.
- Due to the changing of business requirements and technology, changing the implementation of a layer to another totally different one does happen often.
5. Friendly and efficient for development: the decoupled layers
- Are logic software component groups mainly by functionality,
- Is very software development-friendly and efficient?
6. Each layer
- It can be assigned individually to a team that specializes in a specific functional area; a specialized team can handle the relevant task better and more efficiently.
7. Friendly for maintenance:
- N-Tier architecture groups different things together mainly by functionality and then makes things clear, easily understandable and manageable.
8. Friendly for new feature addition:
- Due to the logical grouped components and the decoupling brought by N-Tier architecture, new features can be added easily without affecting too much on the whole system.
9. Better reusability: Due to the logically grouped components and the loose couplings among layers.
- Loosely-coupled component groups are usually implemented in more general ways, so they can be reused by more other applications.
The Disadvantages of the N-Tier Deployment
- The performance of the whole application: may be slow if the hardware and network bandwidth aren’t good enough because more networks, computers, and processes are involved.
- More cost for hardware, network, maintenance, and deployment: because more hardware and better network bandwidth are needed.
Tier and Layer
- Tier: the physical deployment computer.
- Usually an individual running server is one tier.
- Several servers may also be counted as one tier, such as server failover clustering.
- logic software component group mainly by functionality;
- It is used for software development purposes.
3. Tier and Layer
- Layer software implementation has many advantages and is a good way to achieve N-Tier architecture.
- Layer and tier may or may not exactly match each other.
- Each layer may run in an individual tier. Multiple layers may also be able to run in one tier. A layer may also be able to run in multiple tiers.
- For example, in Diagram 2 below, the persistence layer in .NET can include two parts: persistence Lib and WCF data service, the persistence lib in the persistence layer always runs in the same process as business layer to adapt the business layer to the WCF data service. However, the WCF data service in persistence layer can run in a separate individual tier.
- Here is another example: we may extract the data validation in business layer into a separate library (but still kept in business layer), which can be called by client presenter layer directly for a better client-side interactive performance. If this occurs, then data validation part of the business layer runs in the same process of the client presenter layer, the rest of business layer runs in a separate tier.
Model View Controller (MVC)
- In the MVC paradigm, the user input, the modeling of the external world, and the visual feedback to the user are explicitly separated and handled by three types of objects, each specialized for its task.
- The view manages the graphical and/or textual output to the portion of the bitmapped display that is allocated to its application.
- The controller interprets the mouse and keyboard inputs from the user, commanding the model and/or the view to change as appropriate.
- The model manages the behavior and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller).
- The formal separation of these three tasks is an important notion that is particularly suited to Smalltalk-80 where the basic behavior can be embodied in abstract objects: View, Controller, Model and Object.
- Model-View-Controller (“MVC”) is the recommended architectural design pattern for interactive applications
- MVC organizes an interactive application into three separate modules:
- one for the application model with its data representation and business logic,
- the second for views that provide data presentation and user input, and
- the third for a controller to dispatch requests and control flow.
3. Most Web-tier application frameworks use some variation of the MVC design pattern
4. The MVC (architectural) design pattern provides a host of design benefits
Java Server Pages
- Model 2 Architecture to serve dynamic content
- Model: Enterprise Beans with data in the DBMS
- JavaBean: a class that encapsulates objects and can be displayed graphically
- Controller: Servlets create beans, decide which JSP to return, do the bulk of the processing
- View: The JSPs generated in the presentation layer (the browser)
- The MVC paradigm is a way of breaking an application, or even just a piece of an application’s interface, into three parts: the model, the view, and the controller.
- MVC was originally developed to map the traditional input, processing, output roles into the GUI realm: Input –> Processing –> Output Controller –> Model –> View
- Model-View-Controller (MVC) is a software architecture that separates an application’s data model, user interface, and control logic into three distinct components so that modifications to one component can be made with minimal impact to the others.
- MVC is often thought of as a software design pattern. However, MVC encompasses more of the architecture of an application than is typical for a design pattern. Hence the term architectural pattern may be useful (Buschmann, et al 1996), or perhaps an aggregate design pattern.
- Clarity of design: easier to implement and maintain
- Modularity: changes to one don’t affect the others, Can develop in parallel once you have the interfaces:
- Multiple views: games, spreadsheets, powerpoint, Eclipse, UML reverse engineering, ….
- Simple MVC given in section this week
- Spreadsheet (with 3 charts and 1 column of numbers
- Actual data 26 As, 26 Bs, 7Cs, 2Ds Use observer
- The intent of MVC is to keep neatly separate objects into one of three categories
- Model: The data, the business logic, rules, strategies, and so on
- View: Displays the model and usually has components that allow the user to edit change the model
- Controller: Allows data to flow between the view and the model, The controller mediates between the view and model
- The Model’s responsibilities
- Provide access to the state of the system
- Provide access to the system’s functionality
- Can notify the view(s) that its state has changed
- The view’s responsibilities: Display the state of the model to the user
- At some point, the model (a.k.a. the observable) must register the views (a.k.a. observers) so the model can notify the observers that its state has changed.
- The controller’s responsibilities
- Accept user input: Button clicks, key presses, mouse movements, slider bar changes
- Send messages to the model, which may in turn notify it observers
- Send appropriate messages to the view
- In Java, listeners are controllers
- Whack a mole game adds 1 point every time you click a button (see Code Demos page)
- All code in one file: WhackAMoleWithButton.java
- The customer wants to deduct a point each time the user misses the mole (or Sponge Bob)
Model? ________ View? _________ Controller? ________
Do one simple Project on MVC..
- IOM 2068 Past Question With Answers
- UNIT-1 BBA III Year Notes – Logistics Management (Osmania University)
- Attitude BBA Notes
- The Library Card – Four Levels of Interactions | BBA English
- Globalization Complete Note
- Introduction to Hospitality Sales and Marketing