Dears,
While we are so confused with What to follow for the optimal Architecture and what tool to use and what is the best integration to build a stable and responsive WEB application. and also where to host for stable accessibility. i have defined three alternatives for building a Web APP. with optimal hosting for each.
Note that you can comment with more alternatives and i promise i will update the post directly.
Alternative 1: For Mission Critical Apps
DataBase : SQL Server or ORACLE
Server Side APIs :
- Entity Framework : For Database object representation and Database Operation management
- ASP.net WEB APIs : For Fast and Simple REST APIs.
- WCF Services : for Dual Binding and Custom Security.
Data Binding and Manipulations :
- AngularJS 1.x : If your UI is Template Oriented and no UI Dynamic creation expected.
- ReactJS : If you you seek a Script First Data Driven APP, and if your UI is highly Dynamic upon the Data with different Conditions.
- ReactJS : If you want to create a WorkFlow.
- D3JS : For Fancy SVG Charts, Comparisons, Interactive and Organized and Dynamic Data Representations.
- ThreeJS : If you want to add 3D or Animation.
Front End Business logic :
- JavaScript : If you and your team have no problems with Heavy Scripting and not fully customized Object Oriented code.
- ECMAScript : If you are like the above but need to write less code and more structured and readable, and want to keep the Un-Typed Scripting features (variables are not typed, all vars).
- Type Script : for sake of minimal code, as much like C# and Java, Fully Object Oriented with interfaces, for building modules with access modifiers (public, private , ..etc), and for Type and Build Error Check in Compile Time.
- CoffeScript : Just like the ECMA but wants to witie RUBY or PYTHON like Code with space separation for code block.
Host : Windows Server
Alternative 2: For Non-Mission Critical and Huge Data Manipulation
DataBase : MongoDB, Cassandra (I recommend Mongo)
Server Side APIs :
- NodeJS : For Database object representation and Database Operation management.
- ASP.net WEB APIs : REST APIs
- WCF Services : for Dual Binding and Custom Security.
Data Binding and Manipulations :
- AngularJS 1.x : If your UI is Template Oriented and no UI Dynamic creation expected.
- ReactJS : If you you seek a Script First Data Driven APP, and if your UI is highly Dynamic upon the Data with different Conditions.
- ReactJS : If you want to create a WorkFlow.
- D3JS : For Fancy SVG Charts, Comparisons, Interactive and Organized and Dynamic Data Representations.
- ThreeJS : If you want to add 3D or Animation.
Front End business logic :
- JavaScript : If you and your team have no problems with Heavy Scripting and not fully customized Object Oriented code.
- ECMAScript : If you are like the above but need to write less code and more structured and readable, and want to keep the Un-Typed Scripting features (variables are not typed, all vars).
- Type Script : for sake of minimal code, as much like C# and Java, Fully Object Oriented with interfaces, for building modules with access modifiers (public, private , ..etc), and for Type and Build Error Check in Compile Time.
- CoffeScript : Just like the ECMA but wants to witie RUBY or PYTHON like Code with space separation for code block.
Host :
- DataBase Server : Windows Server or Linux (I recommend)
- Application Server : IIS over Windows in case of WCF or WEB APIs , Linux for the NodeJS.
Alternative 3: For Cloud Ready Application
DataBase :
- Create a Cloud VM [Windows or Linux – Linux is better for low prices](From AZURE or Google Compute pr AMAZON) and install mongoDB. (NB. MongoDB required High Memory Machine so focus on the RAM).
- Use AZURe mongoDB service or Google Mongo Service, that is more scaleable and will take you out of the headache of Database Server management and Configuration, but much more costly compared with the last option.
- Store Your Data Over Cloud Provider Storage Service (I recommend AZURE Table Storage for Tabular Data and AZURE Blob Storage for File Storage) NB. Revise this post before using The Table Storage.
Server Side APIs :
- NodeJS : For Database object representation and Database Operation management.
- ASP.net WEB APIs : REST APIs
- WCF Services : for Dual Binding and Custom Security.
Data Binding and Manipulations :
- AngularJS 1.x : If your UI is Template Oriented and no UI Dynamic creation expected.
- ReactJS : If you you seek a Script First Data Driven APP, and if your UI is highly Dynamic upon the Data with different Conditions.
- ReactJS : If you want to create a WorkFlow.
- D3JS : For Fancy SVG Charts, Comparisons, Interactive and Organized and Dynamic Data Representations.
- ThreeJS : If you want to add 3D or Animation.
Front End business logic :
- JavaScript : If you and your team have no problems with Heavy Scripting and not fully customized Object Oriented code.
- ECMAScript : If you are like the above but need to write less code and more structured and readable, and want to keep the Un-Typed Scripting features (variables are not typed, all vars).
- Type Script : for sake of minimal code, as much like C# and Java, Fully Object Oriented with interfaces, for building modules with access modifiers (public, private , ..etc), and for Type and Build Error Check in Compile Time.
- CoffeScript : Just like the ECMA but wants to witie RUBY or PYTHON like Code with space separation for code block.
Host :
- DataBase Server : as illustrated in the DataBase part
- Application Server :
If you use WEB APIs or WCF : Use AZURE APP Service for easier and faster updates or indeed Windows VM.
If you use NodeJS you can host in Linux VM or Windows VM.
General Notes From My Experience:
- NodeJS is implemented over Chrome V8 Engine (compiler), so it supposed to be faster that the WEB APIs and indeed the WCF.
- WCF Service is best choice when it comes to Dual HTTP Binding with Custom Security Configurations.
- AZURE Cloud is easier than Google compute when it comes to Scaling Up/Down.
- Google Compute Engine is much more Lower in price than AZURE even for Windows Machines.
- Google Compute Engine team might suspend your VM for days if they felt that you are misaligned with the Terms Of Use , and they might re open when they discover that they were wrong !!
- Angular2 will introduce the Dynamic Component like the ReactJS with much more better performance than Angular 1.x.
Useful Links Regarding the Above:
Click For more Info about how to install and Configure MongoDB in Windows.
Click For more Info about how to install and Configure MongoDB in Linux.
Click For more Info about how to create a REST API using node JS over MongoDB.
Click For Getting Started with ASP.net WEB APIs
Click For Angular Official website
Click for ReactJS Official website
Click for D3Js Official website
Click for ECMAScript Official website
Click for TypeScript Official website
Click for ThreeJS Official website