From 1ad4261b28315726d95bb7724dfc6df5ffa5979f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 6 Jun 2019 00:47:26 +0300 Subject: [PATCH] Added tiered solution strcture section. --- ...Getting-Started-AspNetCore-MVC-Template.md | 2 +- docs/en/Startup-Templates/Mvc.md | 68 ++++++++++++++++-- ...ookstore-visual-studio-solution-tiered.png | Bin 0 -> 20089 bytes .../images/tiered-solution-applications.png | Bin 0 -> 14346 bytes docs/en/images/tiered-solution-servers.png | Bin 0 -> 33557 bytes 5 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 docs/en/images/bookstore-visual-studio-solution-tiered.png create mode 100644 docs/en/images/tiered-solution-applications.png create mode 100644 docs/en/images/tiered-solution-servers.png diff --git a/docs/en/Getting-Started-AspNetCore-MVC-Template.md b/docs/en/Getting-Started-AspNetCore-MVC-Template.md index 152452cccb..1e643b18cf 100644 --- a/docs/en/Getting-Started-AspNetCore-MVC-Template.md +++ b/docs/en/Getting-Started-AspNetCore-MVC-Template.md @@ -1,4 +1,4 @@ -## ASP.NET Core MVC Template +## Getting Started With the ASP.NET Core MVC Template This tutorials explains how to create a new ASP.NET Core MVC web application using the startup template, configure and run it. diff --git a/docs/en/Startup-Templates/Mvc.md b/docs/en/Startup-Templates/Mvc.md index 642c0110ad..6916a630a3 100644 --- a/docs/en/Startup-Templates/Mvc.md +++ b/docs/en/Startup-Templates/Mvc.md @@ -4,7 +4,12 @@ This template provides a layered (or tiered, based on the preference) application structure based on the [Domain Driven Design](../Domain-Driven-Design.md) (DDD) practices. -## How to Start With +This document explains the solution structure and projects in details. + +* See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) to create a new solution and run it for this template. +* See the [ASP.NET Core MVC Tutorial](../Tutorials/AspNetCore-Mvc/Part-I.md) to learn how to develop applications using this template. + +## How to Start With? You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can directly create & download from the [Get Started](https://abp.io/get-started) page. CLI approach is used here. @@ -152,6 +157,8 @@ Most of time you don't need to manually create C# client proxies, thanks to ABP' This project contains the User Interface (UI) of the application. It contains razor pages, JavaScript files, style files, images and so on... +This project contains the main `appsettings.json` file that contains the connection string and other configuration of the application. + * Depends on the `.HttpApi` since UI layer needs to use APIs and application service interfaces of the solution. > If you check the source code of the `.Web.csproj` file, you will see the references to the `.Application` and the `.EntityFrameworkCore.DbMigrations` projects. @@ -182,14 +189,63 @@ Test projects are prepared integration testing; You can still create unit tests for your classes which will be harder to write (because you will need to prepare mock/fake objects), but faster to run (because it only tests a single class and skips all initialization process). +#### How to Run? + +Set `.Web` as the startup project and run the application. Default username is `admin` and password is `1q2w3E*`. + +See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) for more information. + ### Tiered Structure -TODO +If you specify the `--tiered` option as described above, the solution created will be a tiered solution. The purpose of the tiered structure is to be able to **deploy Web application and HTTP API to different servers**: + +![bookstore-visual-studio-solution-v3](../images/tiered-solution-servers.png) + +* Browser runs your UI by executing HTML, CSS & JavaScript. +* Web servers hosts static UI files (CSS, JavaScript, image... etc.) & dynamic components (e.g. Razor pages). It performs HTTP requests to the API server to execute the business logic of the application. +* API Server hosts the HTTP APIs which then use application & domain layers of the application to perform the business logic. +* Finally, database server hosts your database. + +So, the resulting solution allows a 4-tiered deployment, by comparing to 3-tiered deployment of the default structure explained before. + +> Unless you actually need to such a 4-tiered deployment, its suggested to go with the default structure which is simpler to develop, deploy and maintain. + +The solution structure is shown below: + +![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-tiered.png) + +As different from the default structure, two new projects come into play: `.IdentityServer` & `.HttpApi.Host`. + +#### .IdentityServer Project + +This project is used as an authentication server for other projects. `.Web` project uses OpenId Connect Authentication to get identity and access tokens for the current user. Then uses the access token to call the HTTP API server. HTTP API server uses bearer token authentication to obtain claims from the access token to authorize the current user. + +![bookstore-visual-studio-solution-v3](../images/tiered-solution-applications.png) + +ABP uses the open source [IdentityServer4](https://identityserver.io/) framework for the authentication between applications. See [IdentityServer4 documentation](http://docs.identityserver.io) for details about the IdentityServer4 and OpenID Connect protocol. + +It has its own `appsettings.json` that contains database connection and other configurations. + +#### .HttpApi.Host Project + +This project is an application that hosts the API of the solution. + +It has its own `appsettings.json` that contains database connection and other configurations. + +#### .Web Project + +Just like the default structure, this project contains the User Interface (UI) of the application. It contains razor pages, JavaScript files, style files, images and so on... + +This project contains an `appsettings.json` file, but this time it does not have a connection string because it never connects to the database. Instead, it mainly contains endpoint of the remote API server and the authentication server. + +#### Pre-requirements -### Other Database Providers +* [Redis](https://redis.io/): The applications use Redis as as distributed cache. So, you need to have Redis installed & running. -TODO +#### How to Run? -#### MongoDB +You should run the application with the given order: -TODO \ No newline at end of file +* First, run the `.IdentityServer` since other applications depends on it. +* Then run the `.HttpApi.Server` since it is used by the `.Web` application. +* Finally, you can run the `.Web` project and login to the application (using `admin` as the username and `1q2w3E*` as the password). \ No newline at end of file diff --git a/docs/en/images/bookstore-visual-studio-solution-tiered.png b/docs/en/images/bookstore-visual-studio-solution-tiered.png new file mode 100644 index 0000000000000000000000000000000000000000..19662bf73179537bfb2afc7b34c01aa98f7b902e GIT binary patch literal 20089 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 f|6ksJXGCHQb+7^Ho8MZ77nz6}s3HoF>`! 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

PF8k%_NUV-p5-YnBNJX641P;n#(EP+_|0nP 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 literal 0 HcmV?d00001 diff --git a/docs/en/images/tiered-solution-servers.png b/docs/en/images/tiered-solution-servers.png new file mode 100644 index 0000000000000000000000000000000000000000..3c999b4b45475ce88992ea49bf1fb8338ba17617 GIT binary patch literal 33557 zcmdSA1yI}H_b5n(wn&R>(cs11p@rb~#ogVDyA;>pZY^58!JQWO6qg`{0KqM|Zuqad(XY++~enbqW@8rd5cbpj)H>nR!$bEhJx~<5e4Ph=$q%r zJDG8ew+qGnnkX*P8X&2>%0 zSsl5Gb&FdSCs`h*Tk#ZKVdVQ*wQ{@BuI%6Ca~HUQOsxKH1_cEGNG^B!_tVdpA^w?Zrm(1O;x~>5Q3jdCis^$-@Ay ztmO<|mn+#Kok8Mt9xPbZTG7DuFx+4aD9?e%43Mgd%8HV@w>o$<;%DkA`O{a_*<@-q z+pbXrPlgdaJb10X5QV6X#SB?^1_g+NNQ2$KAnByh*?oVw`+{3(nrD25&jDCCX@jJM ziYA@>2U8JD*BRn+$3@vc-=E3S3=N_%{hoeHc;~rLS7pPKy(b<2v8qv267-womE7-R z)s(b7t+$j&xI9P!Omv8@wa+rQ_MPUTNs_IA@;*uXmJj}o-WPlYsbPx@2DzXu=scj3-%rX!L#XI-totEOA_56E8R?%MWLjiQjC z{XGJ_e~&CwQSRBnNNvEMGp7#0A+;0nsLjp&zrdC zpzMa=2a+jr#Ax4qLBsW2!2`_p@ z6;DO^;;*pL{=aqI`KvH-R4pwnD{@d0<^Q{Oc{KmKZ1Bs?|LHXo`(M;6)K<`gQ-4vT zWWBuOE*Acu&--76|9@|sD3ULz02NhLiXM0*!8-bC*>Msiup*NTP6|{pHi|;;)9V{Xjy!n1h14uoXfiO?e_7 z&4V$)yN5slqjoi?7EMKV3qU_m5t!T3VWTxdiiU#1aY{}3!Xmqoxlvry4tw#`WUOx` zW9Ci>NsIH>7X&CIW>zlupSvz`$>x!_iXst=A0t{EOz-!J_i!ZAW2YrhgPdl4;dd2~0O*pNMmoWuJScj?kaDv~TU}S~ zKil~AFAz$nxWFUmdVY?|qtl-c7*$wEYs^IlS&PD``iHgQg!fSVZyrt4+>A4?7&Uhgq_G*Z%GQ$Q4j#6Ct)cSPs33=Cq z>U%Bnf`TIZ@rm0T;4wDvgav1E+so!yRZkb2BIiK1fa6j3;rr|HP=@4Xp1-L4)t0t3oyAYETlU&$V?oV=jsYYcipl>=kp4^1 zV$S*M1p)=0b_Cnk-sb!82GTJw3$ljb{QNKJ3&wO=?C~CV@nBuMRG9;FM{5=*QR<*OOO%hr^^>eOo%8qc{T@-el1gL%Sw&v%9D_#8hr$Y)Q3Z>v`%Q zUM>A0O87lqnY=*tm+QlB(SzgaiY1(aMi5i&mjm;M|4>^FdSH3aT^0tc4m*rtIfG0r=h(=?vYg#VYjo(y1sB> zpZ@-;%1s;*bCY%~6LDct%Dy57a{PPJ_DD{YRXF@KyDu~ngIst36REoOvURJj+StnH zZ>J=CZl{p@2>lp<`cbd#&^HKFP*E{HB6yar`6>zdeg0fxk4;z$sCoK?Q) znWfRK${S|~ZvBHN21phUH;�r2%IjP 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 literal 0 HcmV?d00001