Common Web Application Architecture



Web application can be accessed by the users in a web browser through the internet. When the process initialized HTTP requests will be send to the web server and the server render the web pages, return the HTML pages to the client. These pages can be display in the 
browser.


 




As I identified these are the key components in the architecture. Let’s consider each part of 
the diagram.
 

When describing the components, I’ve identified two major parts. They are web Server and client

Web server:
Presentation layer
This provide the bridge into the core business logic encapsulated in the business services. Presentation layer is responsible to translate the tasks and also the results to the users in an understandable version. When we consider the web application, this layer will consists of a server side component and a client side components. If we use the techniques called AJAX with the client side, it will help to increase the user experience as well. There are two main components in the presentation layer. They are UI Components, UI process Components.

i). JavaScript
Let’s consider some functionalities of JavaScript
  1. Validate the user inputs
  2. Browser detection
  3. Creating cookies

Why we should use JavaScript?

Since most of the time this layer should be activated directly in to the web browser. Therefore JavaScript is always the choice. We use this layer to interact directly with the Document Object Model.

Some of the major applications that using JavaScript are
  1. The trip
  2. Here is today
  3. Multeor
  4. IBM Design

ii). CSS
Let’s consider some functionalities of CSS
Animations and Transitions

  1. Advanced Selectors: These selectors will help to make the style sheet cleaner.
  2. Generated content and counters: These features lets to use less HTML to get the same layout
Why we use CSS?

Since it gives many rich functionalities including defining the appearance of the HTML pages when they are printed. Also it’s much easier to maintain the appearance of the web pages using the CSS.

Some of the major applications that using CSS are
  1. Titan framework
  2. Less framework 4
  3. Kube framework
Except those mentioned technologies / Frameworks / Libraries Can be used in the implementation in the presentation layer.


HTML (HyperText Markup Language)
Ajax (Asynchronous JavaScript and XML)
jQuery (JavaScript Framework Library - commonly used in Ajax development)



Business Layer:
Implement the business logic and long-running workflows are considered in designing the business layer. It improves the maintainability and test-ability of your application.
The technologies / tools / Frameworks can be used in the business architecture layer are

i). Enterprise Java Beans (EJB):
It provides most of the system level services: for example persistence mechanism, exception handling.

Why to use EJB:

The EJB architecture allows enterprise applications to be portable by running on a J2EE-compliant application server. An EJB application can be partitioned in a more usable, flexible, and expandable fashion.

ii). Laravel:
Laravel is a MVC framework and it is built with the focus of writing code syntax that is simple and expressive. This will provide the advantage of having a Web Application that is developer friendly and code that is maintainable.

Why to use Laravel:
  1. Excellent Documentation
  2. The template Engine 
  3. RESTful Routing
  4. Unit Testing feature
  5. Authentication 
  6. Automatic Pagination
iii). Symfony:
Symfony is a set of PHP Components, a Web Application framework, and it helps to shortening the development time of the complex web application. It makes the code flexible to use and easy to adapt with the complex cases.

Why to use Symfony:

1. Faster and less greedy

2. Unlimited flexibility: Whatever your needs are, Symfony will be adaptable. Its dependency injector and the Event Dispatcher make it entirely configurable, with each of the bricks being fully independent.

3. Expandable: From the smallest brick to the complete core itself, everything is presented as a “bundle” (or plug-in in Symfony language) in Symfony.

4. Stable and Sustainable

Data Layer:
Using the separate data layer allows to configure and maintain the application easily. It also allows to hides the details of the database from the other layers of the application.

Design entity objects that the data layer can populate or use to update the data source, and use data transfer objects when interacting with other layers and to pass the data between layers.

RabbitMQ:
RabbitMQ supports huge number of development platforms and it runs on all major operating systems as well. It’s an open source tool and commercially supported as well.

Why you should use RabbitMQ
  1. Reliability
  2. Flexible Routing
  3. Clustering
  4. Federation
  5. Highly Available Queues

Some of the product/solution/ service developed using this technology are Google Cloud Platform, Instagram, Huffington Post website and Nokia.
Hibernate framework:
This is open source and it has object - relational mapping framework for the java language as well. It provides data query and retrieval facilities too. Hibernate provides transparent persistence and developer does not need to write code explicitly to map database tables tuples to application objects during interaction with RDBMS.

Why you should use Hibernate framework?
Persistence: Data that can be stored to some permanent medium and can be seen at any point of time even after the application that created data has ended.

Object Relational Mapping: As mentioned in the introductory part, ORM software greatly simplifies the transformation of the business data between an application and a relational - database.

Effective Cross-Database Portability:
Hibernates portability across the relational databases is amazing.


Cross Cutting:
Cross cutting layer can be used to communicate between other web applications with our web Application. When doing so some of the aspects needed to be considered such as security, better communication management etc. With all these concerns I believe Open ID is better than other authentication forms such as OAuth or spring security.

Some of the technologies can be used for the cross cutting are OAuth, Spring Security, OpenID. Some of the major products / Organizations that using these technologies are Google APIs, Blogger, Flickr, France Telecom

● Security

Security threats are often easier to address and combat with OpenID, whereas traditional
Authentication methods are at the mercy of individual people and websites which may or may not be capable of reducing security risks. Furthermore, large OpenID OPs such as Google and Yahoo place paramount emphasis on security which equates to peace of mind for many end users and relying websites.


● Easy to implement

One of the most important benefits of OpenID is the ease of which it is to implement. There are libraries available in virtually every language so you can implement on a custom website.


● Open­Source

MySQL server can be downloaded and employed free of charge and if your project is a low
budgeting project then this become a highly suitable candidate for the web application


● High Performance

A unique storage engine architecture of MySQL allows you to configure it specifically for
particular applications, with the end result being amazing performance results. With high speed load utilities, distinctive memory caches, full text indexes, and other performance enhancing mechanisms, MySQL offers all the right performance needed.

Client side:
Several web browsers can be used to view content of the web applications. But using the presentation layer aspects we can choose a web browser application which would best support our application features.

When comparing the google chrome and Firefox both support many technologies such as HTML5 and JavaScript. Most importantly both of the browsers are open sourced.

Google chrome uses java script engine, V8 and Firefox uses TraceMonkey. Therefore these both browsers are best to show your web site content.

Google Chrome:
 When consider this browser there are some specific, unique features for Chrome browser. They are 

Task manager for websites: While you are inside Google Chrome, press Shift+Escape and it will open up a ‘task manager’ with a list of all websites currently open inside Chrome.

Visual Browser History:
This is a feature Chrome borrowed from Google Desktop / Google Web History. Type Ctrl+H to open your browser history and search for a term.
Super Clean Contextual Menus: You right click an hyperlink on a web page and you get only five relevant options to deal with that link.

Mozilla Firefox: 
When consider this browser there are some specific, unique features for Firefox browser. They are

Add-ons and Personas:
Firefox is one of the most easily customized browsers thanks to its extensive library of add-ons and personas.
Open Source: Firefox is the only open source Web browser among the most used browsers on the Web as of March 2013. 

Tab Management: Firefox was on the forefront of the tabbed browsing revolution and it remains ahead of the curve in many ways.

Internet Explorer Cleaner Interface: IE9 does away with a lot of the clutter, moving the address bar, tabs, and navigation buttons onto a single row.

Tab Pinning: In Internet Explorer 9, tabs can be pinned to the Windows 7 task bar, just like programs. Better yet, right clicking on the task bar icon brings up a jumplist for quick navigation around the website (if that feature is supported).






References:

https://www.quora.com/Are-Spring-and-Hibernate-still-popular
http://www.mkyong.com/hibernate/why-i-choose-hibernate-for-my-project/
http://www.slideshare.net/agoncal/50-new-features-of-java-ee-7-in-50-minutes
http://openidexplained.com/
http://stackoverflow.com/questions/23700540/cross-cutting-concern-example






Comments

Popular posts from this blog

CAP THEOREM

Quality Assurance in Agile Software Development

Hash Functions