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)

PresentationDescription and Responsibility
MVC ViewContains presentation logic, Creates the GUI based on the MVC model provided by the MVC controller
jQueryJavascript library that improves compability between browser implementation of the DOM. Is also used by many javascript frameworks like Bootstrap (see below)
BootstrapBootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web

 

Business logicDescription and Responsibility
MVC ControllerReceives 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 APIReceives 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 ModelCreates 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 LayerDescription and Responsibility
RepositoriesRepositories are responsible for
  • CRUD operations on database
  • Transforming the data (DTO), received from the Assembler, by business rules
AssemblerOur 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
DatabaseData storage for the system. Responsible for
  • Storing data in a normalized and optimized way
  • Containing stored procedures for CRUD operations

Tiers

Web browserTechnologyDescription and Responsibility
PresentationHtml 5, CSS 3, SVG, EcmascriptModern 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 / CommunicationHTTP(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 hostingTechnologyDescription and Responsibility
Web-serverIIS / Nginx + .net RuntimeServer 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 / CommunicationHTTP(s), Ajax, database(TCP/IP)Communicates with Client, Content-Server, Database-Server
Operating SystemWindows Server / LinuxWe support both Linux and Windows Server as hosting alternatives

 

Search EngineTechnologyDescription and Responsibility
Application-serverSOLR + JavaContains 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 / CommunicationHTTP(s), Json, Ajax, database(TCP/IP)Communicates with Client, Database-Server and Webserver
Operating SystemWindows Server / LinuxWe support both Linux and Windows Server as hosting alternatives

 

CDNTechnologyDescription and Responsibility
Web-serverIIS / Nginx + .net RuntimeResponsible to store and distribute files dynamically uploaded by users. Each image that is uploaded is processed for speed-optimization and quality
Transport / CommunicationHTTP(s), Cors, AjaxCommunicates with Client, Content-Server and Webserver
Operating SystemWindows Server / LinuxWe support both Linux and Windows Server as hosting alternatives

 

Data StorageTechnologyDescription and Responsibility
DatabaseSQL-Server / PostgreSQLStorage for information used by wEngine. wEngine use stored procedures for security, performance and optimized network traffic.
Transport / Communicationdatabase(TCP/IP)Communicates with Webserver and Search-server
Operating SystemWindows Server / LinuxWe 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
The page has some warnings