wEngine - Architecture

Subsystems

Web application

Application running on a server with Microsoft .NET Core

Server requirements
  • .NET runtime
  • IIS (Windows)
  • Apache or Nginx (Linux)
Content Delivery Network (CDN)

A web application, serving the web application as a CDN, uses .NET Core Web API

Server requirements
  • .NET runtime
  • IIS (Windows)
  • Apache or Nginx (Linux)
Search engine

Is based on Solr, an enterprise search platform. The web application uses the search engine for searching, sorting and retrieving information. A separate service – DatabaseSync will keep the search engine index updated and synchronized with the web application database.

Server requirements
  • JAVA runtime
  • Solr
  • DatabaseSync, Port 8983 (or other) must be opened in firewall
Design philosophy
Eric Raymond’s recommendations - en.wikipedia.org/wiki/Unix_philosophy

Layers (in web application)

Presentation Description and Responsibility
MVC View Contains presentation logic, Creates the GUI based on the MVC model provided by the MVC controller
jQuery Javascript library that improves compability between browser implementation of the DOM. Is also used by many javascript frameworks like Bootstrap (see below)
Bootstrap Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web
Business logic Description and Responsibility
MVC Controller Receives notification from the system to
  • Create new Page(html) by http get/post
  • Update Part of a Page(html) by asynchronous http get/post
The controller will do this by routing and creating model(s) and views from business rules
Web API Receives notification from the system to
  • Send/recive data(JSON) to/from Web-browser by asynchronous http get/post
The Web API specific controllers will create these data structures by business rules and repositories
MVC Model Creates the state of the application from input received from MVC controller. A singleton pattern, a static function Load(controller parameters...) is used for both creating the model and passing input from MVC controller. Singleton load function initialize the model by using parameters passed by controller, applying business rules and fetching domain model data in the form of Data Transfer Objects from the repositories of the Data layer
Data Access Layer Description and Responsibility
Repositories Repositories are responsible for
  • CRUD operations on database
  • Transforming the data (DTO), received from the Assembler, by business rules
Assembler Our highly optimized technology for database access. Is responsible for
  • Fetching the data requested by the repositories from a Microsoft SQL Server/PostgreSQL database by optimized stored procedures
  • Transforming the data stream into data transfer objects (DTO) requested by the repositories
Database Data storage for the system. Responsible for
  • Storing data in a normalized and optimized way
  • Containing stored procedures for CRUD operations

Tiers

Web browser Technology Description and Responsibility
Presentation Html 5, CSS 3, SVG, Ecmascript Modern web browsers can act as efficient virtual machines (VM) for applications. wEngine can, by leverage a modern VM functionality, be used to create interactive and responsive web applications. wEngine requires modern browsers – old browser such as Internet Explorer 9 or older is not supported due to their limitations
Transport / Communication HTTP(s), Ajax, Cors, WebSockets(optional) Communicates with Web server, Search server, Content server. By leverage the new Html 5 communication API:s, wEngine supports advanced functionality and provides high performance. All of this achieves an improved end-user experience
Web hosting Technology Description and Responsibility
Web-server IIS / Nginx + .net Runtime Server Applications that hosts the web application. The web application is using the .net runtime which performance is vastly superior to script-based solutions like PHP, Phyton and Ruby
Transport / Communication HTTP(s), Ajax, database(TCP/IP) Communicates with Client, Content-Server, Database-Server
Operating System Windows Server / Linux We support both Linux and Windows Server as hosting alternatives
Search Engine Technology Description and Responsibility
Application-server SOLR + Java Contains the wEngines search capabilities. SOLR is the market leading search engine and wEngine's implementation is highly optimized with multiple cores and direct Json-based asynchronous access by the web browser
Transport / Communication HTTP(s), Json, Ajax, database(TCP/IP) Communicates with Client, Database-Server and Webserver
Operating System Windows Server / Linux We support both Linux and Windows Server as hosting alternatives
CDN Technology Description and Responsibility
Web-server IIS / Nginx + .net Runtime Responsible to store and distribute files dynamically uploaded by users. Each image that is uploaded is processed for speed-optimization and quality
Transport / Communication HTTP(s), Cors, Ajax Communicates with Client, Content-Server and Webserver
Operating System Windows Server / Linux We support both Linux and Windows Server as hosting alternatives
Data Storage Technology Description and Responsibility
Database SQL-Server / PostgreSQL Storage for information used by wEngine. wEngine use stored procedures for security, performance and optimized network traffic.
Transport / Communication database(TCP/IP) Communicates with Webserver and Search-server
Operating System Windows Server / Linux We support both Linux and Windows Server as hosting alternatives

List of Third Party Software used in wEngine

  • Solr
  • Java
  • Windows Server / Linux
  • SQL Server / PostgreSQL
  • Windows + IIS / Linux + Nginx