entities – solution architecture

Introduction

Background

entities is a web application that helps users keep track of their enterprise architecture elements.

Vision

Supplementary documentation

Revisions

Solution overview

Processes

Information

Design constraints

Life expectancy

Policies

PolicyDescriptionDesign notes

Standards

StandardDescriptionDesign notes

Technologies

TechnologyDescriptionDesign notes
NET CoreOpen source platform from Microsoft. Supported by most development tools and hosting companies.Free, well-documented, rich and well-performing.
Requires use of JavaScript and C#.
Simply.comHosting company that offers ASP hosting required to run NET Core on the app server. Affordable and well-performing. Easily scalable.Cheap, well-performing, and supports NET Core with the ASP.NET web hotel.
JavaScriptScripting language supported by all major browsers. Part of the HTML returned by the web server and rendered (executed) in the user’s browser. Creates UI widgets that interact with the user, and event handlers that control the widgets and communicate with the app server.Necessary in order to use DevExtreme.
W3Simple light-weight framework consiting of a single small CSS file and a single small JS file.
C#Programming language managed by Microsoft.Required to build the web application backend.
RiderDevelopment tool by JetBrains. Used to code the JavaScript and C# components.Advanced programming and debugging tool, necessary to write JavaScript and C# code.

While Microsoft offers a free Visual Studio, Rider offers better productivity.
WordPressThe CMS used to manage UGLEBERG.dk. Introduces factors to new users, and is home to manuals and support.Required to operate a website, which showcases factors and user manuals.
umlSimple lightweight web application.Used to create and maintain some of the illustrations in this document.
retireSmall utility console application.Used to shutdown and delete the currently deployed entities on the Simply web server before deploying a new release.
LucidchartAdvanced diagramming web application.Used to create and maintain some of the illustrations in this document.
BCryptHashing technique that gives a high level of protection against attempts at guessing other users’ password.A BCrypt library is added to the code base, and called to hash passwords before storing.

Design principles

PrincipleDescriptionDesign notes
Enter password only once.When selecting a new password, just ask users to enter it once – not twice, which too many other systems require, and which is considered user unfriendly.Provide one input field that initially masks the entered characters, but which can be switched to display them. Also, provide a easily accessible password reset feature.
Combine Razor pages with Web API.The web application combines the Razor pages and Web API features of NET Core.Razor pages are used to implement the views (or pages) that render the web application’s user interface.

Web APIs are used to implement backend services, which are called via AJAX from the JavaScript code in the views.
Implement multiple Web API services.Rather than building a single all-purpose Web API service, group closely related service operations in separate services. This makes the code more maintainable and reusable.One such service is the metrics service, which allows the JavaScript code running in the user’s browser to send metrics, which can be saved in the web application’s database on the web server.
Use sessions to survive browser refresh.If a user refreshes the browser, the browser’s session storage (which is kept in a cookie on the user’s disk) remembers the web application’s state so it can be accurately recreated by the appropriate Razor page. The web application is configured to use a session cookie that expires after 12 hours, which more than covers its use throughout a long workday.

Design properties

Auditability

Compliance

Security

Integrity

Authentication

Authorization

Non-repudiation

Usability

Concurrency

Capacity

Performance

Observability

Scalability

Availability

Testability

Operability

Recoverability

High-level design

Interfaces

User interface

Behavior

Structure

Development

Testing

Deployment

Operation