From af28c180349a0aabf236e0809d8cbad41a9c8d89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 8 Nov 2024 15:19:59 +0300 Subject: [PATCH 01/18] Create guide.md --- docs/en/solution-templates/guide.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 docs/en/solution-templates/guide.md diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md new file mode 100644 index 0000000000..470ad13568 --- /dev/null +++ b/docs/en/solution-templates/guide.md @@ -0,0 +1,20 @@ +# Solution Templates: A Guide to Select the Right One For You + +ABP provides several [startup templates](index.md) to you. It is important to start with the right startup template that is suitable for your project and team. This guide aims to lead you to select the most proper startup template for your requirements. + +## What is a Startup Template? + +Before going further, it is important to understand what is a startup solution template and what it provides for you. + +### Pre-Architected Solution Structure + +A startup solution template is a pre-architected structure for a purpose. For example, the [layered startup template](layered-web-application/index.md) is a great starting point if you want to build a layered application codebase based on [Domain-Driven Design](../framework/architecture/domain-driven-design/index.md) principles and patterns. + +However, starting with any startup template don't limit you. After creating the solution, you can add or remove projects, layers, integration packages, or even create other applications and services in the solution to build a microservice solution. However, if your purpose is to build a microservice solution, it is best to start with the [microservice startup template](microservice/index.md). + +So, it is best to start with the most suitable startup template for your purpose and then modify the solution to fit your requirements. + +### Well-Structured + +Beside the overall solution structure, internals of each project in a solution template is well-structured. It is clear where will you place your [entities](../framework/architecture/domain-driven-design/entities.md), [repositories](../framework/architecture/domain-driven-design/repositories.md), [data access code](../framework/data/index.md), [application services](../framework/architecture/domain-driven-design/application-services.md), [API controllers](../framework/api-development/index.md), [UI elements](../framework/ui/index.md) and so on... + From 6c9eb2c512dea847afa00d3fc097af8b5d1c5722 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 8 Nov 2024 15:51:47 +0300 Subject: [PATCH 02/18] Update guide.md --- docs/en/solution-templates/guide.md | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index 470ad13568..cb5cc5ae41 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -14,7 +14,28 @@ However, starting with any startup template don't limit you. After creating the So, it is best to start with the most suitable startup template for your purpose and then modify the solution to fit your requirements. -### Well-Structured +### Well-Structured Code Organization -Beside the overall solution structure, internals of each project in a solution template is well-structured. It is clear where will you place your [entities](../framework/architecture/domain-driven-design/entities.md), [repositories](../framework/architecture/domain-driven-design/repositories.md), [data access code](../framework/data/index.md), [application services](../framework/architecture/domain-driven-design/application-services.md), [API controllers](../framework/api-development/index.md), [UI elements](../framework/ui/index.md) and so on... +Beside the overall solution structure, internals of each project in a solution template is well-structured. It is clear where will you place your [entities](../framework/architecture/domain-driven-design/entities.md), [repositories](../framework/architecture/domain-driven-design/repositories.md), [data access code](../framework/data/index.md), [application services](../framework/architecture/domain-driven-design/application-services.md), [API controllers](../framework/api-development/index.md), [UI elements](../framework/ui/index.md), etc. In that way, you don't need to spend your time to think about how to organize your codebase in every new project. Tests projects are also included and pre-configured if you prefer to build automated tests for your application. +### Library Integrations & Configurations + +When you use ABP startup solution templates to create a new solution, some fundamental library installations (Serilog, Autofac, AutoMapper, Swagger, HealthCheck, etc..) and their fine-tuned configurations are already prepared for you. Also, many [ABP packages](https://abp.io/packages) are just installed (based on your preferences) and configured for development and production environments. + +### Development Ready + +When you create a new solution, or when a new teammate starts to work on your existing solution, it is pretty easy to understand the solution structure, design decisions and the development flow by the help of [solution structure documents](index.md) and [development tutorials](../tutorials/index.md). + +### Production Ready + +ABP's startup templates are ready for production. You can just create a new solution and deploy it to your production environment. It is not only about technical readiness, but also about functional readiness. + +When you create a new ABP solution, fundamental modules are already installed. Your application have a robust [account module](../modules/account.md) (user registration, login, social logins, 2-factor authentication, user lockout, password complexity control...), an advanced [identity module](../modules/identity.md) (user, role and permission management), and many other production-ready [pre-built application modules](../modules/index.md) are just working as a part your application in the first day. + +## The Startup Solution Templates + +We understood what is a startup solution template. Now, we can explore which startup solution templates are provided by ABP Platform. + +### Single-Layer Solution Template + +TODO \ No newline at end of file From de1ec6d0a5c179dedcfa0ca9f565e3df68c9ec4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 8 Nov 2024 16:39:24 +0300 Subject: [PATCH 03/18] Added section: Single-Layer Application Solution Template --- docs/en/solution-templates/guide.md | 29 ++++++++- .../images/single-layer-abp-solution.png | Bin 0 -> 28804 bytes docs/en/solution-templates/index.md | 8 +-- .../single-layer-web-application/index.md | 60 ++---------------- 4 files changed, 35 insertions(+), 62 deletions(-) create mode 100644 docs/en/solution-templates/images/single-layer-abp-solution.png diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index cb5cc5ae41..56bf92d1fe 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -34,8 +34,33 @@ When you create a new ABP solution, fundamental modules are already installed. Y ## The Startup Solution Templates -We understood what is a startup solution template. Now, we can explore which startup solution templates are provided by ABP Platform. +We understood what is a startup solution template. Now, we can explore which startup solution templates are provided by the ABP Platform. -### Single-Layer Solution Template +### Single-Layer Application Solution Template + +The [single-layer solution template](single-layer-web-application/index.md) is the most simple startup template. It provides a minimal solution architecture while starting a new project. Your .NET solution typically contains a single, or a few .NET projects depending on your UI and other preferences while creating your solution. + +The following figure shows a single-project web application that has [MVC (Razor Pages) UI](../framework/ui/mvc-razor-pages/overall.md) and [Entity Framework Core](../framework/data/entity-framework-core/index.md) database provider with default configuration: + +![single-layer-abp-solution](images/single-layer-abp-solution.png) + +As you see in the preceding figure, all the application code (entities, data access, services, UI pages, etc.) are located in a single .NET project. + +#### When to use the Single-Layer Solution Template? + +In the following conditions, you may consider to use the single-layer solution template: + +* If **your project is small** and you don't expect that it will grow by the time. But remember that many projects are thought as small in the beginning. +* If your project is a **temporary project** and it will be thrown away in a short time. It can be a POC project or a temporary application for a short-term advertisement campaign. +* If you are a single developer or there are only 2-3 developers working on your solution. +* If the developer(s) working on your solution are not experienced or don't understand the structure and benefits of a layered application, and don't want to learn it. + +If the preceding conditions are meet with your case, you can consider to start with this solution template. However, be noticed that your solution can quickly become a [big ball of mud](https://thedomaindrivendesign.io/big-ball-of-mud/). We think that only a very small portion of applications are suitable for that kind of structure that has not an explicit architecture. + +#### Can I use the Single-Layer Solution Template for Modular Applications? + +If you want to [build a modular application](../tutorials/modular-crm/index.md) and want to use that single-layer application as only the host application, then it can be a good decision to get started with this solution template. In that case, you can use that single-layer application just for referencing to other modules' .NET projects and use that host application for configuring the modules to run a monolith application. In that case, do not add any application functionality to the host application. Even if you need to make multi-module functionalities, just create another module that uses the modules you want to work on. + +### Layered Solution Template TODO \ No newline at end of file diff --git a/docs/en/solution-templates/images/single-layer-abp-solution.png b/docs/en/solution-templates/images/single-layer-abp-solution.png new file mode 100644 index 0000000000000000000000000000000000000000..034e412f1db9dabbc55bf64bb2c544c1db9e07ed GIT binary patch literal 28804 zcmb@ubyOVR)-Bo)Bq2x$8a%i|(BLGv1$PbZ5ZoalxVuB};O_1YK^rHyH13TwxA=YM z-1EKr^p5fRj~Y#Nb#>L=Yp*%iT(byK_#%OZLVyASfzYHRMU_AxxBw6czU?JEut(Hy z_cI7Y29gr}q~ex-xZ>_cxSK(9s}F}Dc^ca*66Box#$3^FOSyV+c>P22pUCxbxT+PY zR`xQ=N;aeLhrA;)0nJPH6j}a}Yun0kK_jkei+35uu1g`j+3QY*A5r*9BV%nBVmEuM z(O$llQi!FJ-k@7Wj(p6uSAkP)eE9=$@812ApXyUzGpg9C@4e@|zWxR&gS)Sv&%u0oul07%4VgXA;zy1$2Nd8|-?6t~qXbgy6V~#Zgty|~U(6(i6Ib$^ zwA%k>E)>+xWE0nG9f_S5+&Iv?4Lqy!KjR{G`zmq3rL8w|9I@=X_q~^pMdyZm&AhEc zSnk^iN5Xbd9(S_s=A|L&kC~;3j%`MqEwfFS2!`ydTq z`U)jFTUi$ORnj;O{hMy?Yaw=rNOzB9PaB>Y5248votA`yzq&DzO)u6Cc2ga^lbp+1 zE{A`0D~KtVF#lO zcoQATmp!1Sp(YZhAaZqTyb0Z`mXB4@J~D_ROJMa6s1c)#^5at26*4uu7M@FLp*9!Ng^F?P`w?(`IycCzhN0cnywxTA6G)3Tyl z?kV1f(vW}(8#^j;0?%^`nEX?sNFX$;gX<_~ME^;vCLnOLq_N=%;V7gX5;JnfF0rrL z?MmRPa6dXIMh&Y<=N(BW&tVD@<&t~z*tz*y-(&Jt>0r$cmr2G|5NhNk_4HBd$@--a z=(fdE&s4vO25J^=ew%i9#6nu^xQ`poqy=aQl#aJfXz;u$}?Qdb%7p%36Ee z3aaOrlg4RZx2wJ=pb_o&KNh;|wAfsZldl<_X1uu6Ub9%uc)V(Yv@l+r<45QSo^qsV z^-VQcdl+Io`k7>!W?folLO=I^Pfj6ioNkJ{A4b zOTIe>H6i_aG3^{nvy+EUTqC`fawTUjn9KSfS*GtN8)TQ{FI;46=w~0bi|;EYjBiz9U1DxKCtA;uE{;YXIj-~O z^_3H+oHCz2m_j$PACdi+4!4`k+Hr~1-yXt_MtnlDs@QuR%hDX&u#sX*hcBX0CkGY@ z+Ry*gBWumo*-Sm`uNHXLOQQ=p3dI{Qle)*~C)9gQ153!|f%IwL%-6nY?T=0{<{B!~ zP0fkp6J@hr%kr9zw|c?Oc&o$Y^zx;6f_8)gG3Vib}&=mU5kA7L_&uKZ(c zEKzj?Hxf^?yz|!51Zs^Oo|(lrl24h&49X+j`t{b4A0I;1FNPkSMV+2t1!^b33_*1p zu|DeoyA&5N2E+S9^T+0|uw6SbSN@ARb0tko4hM_tR+am1Rl0*~4jCum;e$ujw~CA7 zG=lw%_x6fJ6Lu^i(2xNNV`lY_02I$)e-+XKx&%k1Ztub#<;wEhcdYu&++Hi6JeJL0 z-czKCyxsIRd2b;Z85~^gyJ#RWRvy#T?Xs7s^yrtIeZMfCg)-hpH*4N)7Xc@Z95n@hd!v|qmaFj5;rMRZQ{9X~H56?Yr`^iY zdzVHiSw{!mgkGFai{&&B=S0ZK^Ro9=>FGjG&Wj`F_i+G=H4Rs^Llyg`{DYyL`%#E^ zm-OUhmbLcy&}B`V5w(cdE%neTgWebo-z}ci^n?#2eV|hN^zTMj%en7?9RNgJG|Y1! z%~lDH>{el8ZfSulRo4xz*P=#3PfUfH3Efu%Rm*|a>f0}NhYBt$c}! z1>6?WKfD_;swBNdv2PO>B}h2GxaXQxqnAf4n33M;;RAa^J{&#u>8UZW&$a*wAFYKV z1X=d2*+}_GwHc7~@5DA`L`7#N+NrMd7A|Ync){1?;O_ajwf0tsRaME2^7j*`L%g<_ zblnjiUd|2oA9^w716PaN6~1LsZgkua^V94sUPey9(6C6C~8M*GvIYy6JD9$gx4C{{kI!S{sRyK@G5@)ho zbLbD`N&yqEkcNdC@(}CX!wUAhT+Ql0Y%S(d8`%@;2=;2Yu- z5a{obraakYc5XNfy4tvy(v=z{KYcSaccHr^Jzgudnxe(wsKKXq>yVLNc}*Pgc!D@r zjE}QgR3pD?6wWW^Kr6-2x02*l2I||pEC?HQRSZ|7j5-M$En!Fwv{d~mIrL{s$KKe~ z-Q4RveyIIg8kz*Tf9~rivo#ZP-UpgAtN7ueroUr{?K(<6IcuH6ZkQ^TYDf2eVos;! zgIEy&RBApfIr8va3=<}I8*V$a>nXF!2E;1%3*OuROcaT+AC}`l?5X8Y^Y&TmUzEPnRA0gfKhKVuAu?2zwYRKze*2lsL5#33&J&U0L4Z^YW zg$*=-gmI%;;6V=GJrMr2sS4d(*dH4ohe0}EkP4rx68n!!yC5#>`O`ll7~Yq;q`I?_ zaGhG3H6Bh^2eWZB@_H>UWo2bdX-9atxUG72ly5%?z|*Q*sYQLxe$&J1y6V2W86}iC zc8!IFRndNT(ET}3ss-+sQ<{JLk&z!#4S@RQJ}>Sd^Hek+tJwg@#Duvi)reRYg8nEFvR($ zT37s7l=jc=nRt@vA*xjrZf>u;N~a0SD4s>mb}-}>%3EOq9`N(I`R@;F7S^!irk0l< zisZfN^M1GT6O&|W6{|65rE#P|=)1H3Y-|{^Ci9baj*gCQY;2sLSF8Bj*!=j>n*isi ztzAmeH}1DV6;uZ)vt^s-M?Y}E!hC0)*(;VYH)RrHCu&+4SE|;~wX?tA&e+@wo-Ao- zrt`oNKf_{Nulrg{loG}3v{I1w1KVyn7xHD1XN=yjI$`NTB7k086kAO#^Ig&H#FNue zi0@0Uqq>rbhiRNR$d7HBBp+WU74?qt`g%2{Jf$LR6fw~|&!%SdxbMNsZH$VoM9xmV zV5=oLBx!45>x#5s)B=~IKOpW#Bg-WIZ{M`bY}eoVx|&(XfWJbvbdQ?Ku0_KQONpHE za|dpKv8RiWIZSuK5rz(Bli*b1%drG{tiJPvfz``bb&8efNE+LYjaued5GmBDlRD1s zwokI&DHqMsC(tKRx4oFjq?N34=oQNPqZOG-R}WV~goyMAq`rFgG3WTMoinIcYnQp* zl491xZq>Ws;8wkAcQ3&#fPad@x-^EqM)Blq)9Srxi!>TC={vlnT6A!2f!8d9r{!Ci z%Z0~%1`db6J3sLFk{YwBT6(}%89;ln$X+`o32j?0>Rgc9;a6Uh8ThMq!3?$ zKBho0UAfB?`htVYWtnv|HJUxGt_pY)etf;Qo--$$X-O+tOyxwKw7E*~$EhB41cUk(pF$q&r61h@{s4?5_4}*+-}clc^LZlf7rKeFnRws zR8W-6THG3S$U2O4;SgJ}Bf}I3R!x8CdtY|et1&POS~wGHFHl_<&!R*~e-d?+S%+@h z+vKwmg)BR3kNJAKK{9tj`})LeEB5#I*B*AbU%!4W5lN&uG?|NWJ-CrZcor0{M9L^# zgYwI|tm_8s!lib+r041Q{xZ58wj2Rn$p5o>!zDK!09z0$GBAINT#S36+`?^nkSO7M z9=G;IR@UAV(Z4GuCT4DKt~HAA5r-y+$hH(t_^kAkKy#Vi#7<%7oK%-(MKmRlCyDXK|w)rF@1aPm%^nwEATL%UmQBfT`LXxV3zcm z9IOp*s7#2*b{2rt%Z!D;6fES9im#z|sT1q2=x=vR!y$eLJ%nn2463N-vxD+I~cHq&3&zBU=l0 zrYnLuXS+Y{B(Yi{2w;hMI?yu$&#obHd-YC zkK?A@FXAn4Jh>6ly=+ zCe^>KsL*{l>QpILrTcp@LleK{H4CR+s4}4G`F)MZie*;*)mD+)ro>W%oqk&^M+5d< z;Y~m63?tXsvTyT-LlfQB(&9HiEQrweslRT$sPAy`Wh3tuwM5!9-ew+W=0Hpxgzq({ znMvntQN!Dlv3(@<)#|E|-5yuCZ2Qm~UDmiE6?Jv9nuXxK7zq+O$utV~5gOz|n9b=9 zp!d+qV$_x2yDi-j)G1~E5=gVEFRL(Sk%hS!9Q;|4!wE&5@Iuz%LSEn(T)lxs=;|Ww z=My2^@$31I#n2Lqhnb+YydW$7eFH`(6|}BdKygmwVC8+9A_RZAUb9}(cs#4W%DCZx zweZcARg^2Jv*Mr>XqC-3w5fqh_enE4*iz20Lj-nC3sQcH+7l0C&D1N~nQby`(y%Ly z#HGe+l{eJ%E?#+*@bO-`90n`hQ#1GS>Wbvp3AfZl$efIw9>=c2gDY2T@pKXqbuyL% zrD*J>?B45UK?VBD(1Yo&A7P&p^7aE1)&kOGx(2cCQ%N|j-5PCrg6ggy9H9*C?BLxU zYFu2wYxMQ1{YIJhg*>S>GbXY%ELLFc$NIhV+!tzR^LCq< zXF#NdaOHr}X-UC6-!>&54EcyE%J#f&>#Nk-byLB|@t3ffOrPh+k@yDm1R?XFgGwi1S(D>FOT zqu<+VBKZB`*epY0*@YhV6EUuuhh$pc-GvMi3H)40@zF?5nCE8QE38Lf&DL^4B8WB@ zwc0<^3Z)5e4>yx#G?MXBWnMiVpk(Weo3Vn z50&2lL~>dp<{Ip{@ACO`)A(Y(e1P?%+4VJwYkp|2ti(oPz~5<)AS|KBE*n$rQI_E@ zNDA&fPz)RIWcW}bszvMA)!`V5)%6&0nW3b%HQvZFzbRB>TpNri=W6&2nF7yX`GT!$9R ztnH2VHq5+f!!w`FKVX-aM!R(^y2O2=983*nQ1$6*JL~)<)InK0Q!vFcVYQZRjiTb^ z#+N4I*eJuLc4;V=lW`d#!LIuT9+;vMiHnPiXI3_&p!}^e-`3h=Kgdpx4=0%*Q%es; zi~|P;!*=N|pASuc*~-mn_h>A&Sb>s_t?glAm)h6a*1=!A&QrNg)Kg0)YC4@`b!72~ zF=@VEK6Hx&b&%l|Qym?%Bb$YL=XNMw|E-_Oo%iPEUg-)w!RL4O&M3Cg&JqJB`KdTS z1bGUqkeuBx-{IyF>2~QdXvNnVAOY50R@aWwv0o z0O>AK@)+K_)L{Aq>4eXUy4n1W?mKuVQKa*VH$`n|gjUn7YkMZLhK)T27ni4MdsiWS z(8w-=7OyW;10pnNTv1}i?$%Xj!D9y12P?~*5tr>G+O12bg#$a>`H`d+uJva%%DU``s+I(@Ue^E6v)`N(Oq(6URRZC9eI z$|{KrqQx{xFi|T~sV~=e)s~Z^C7R^snkiDXS^wQ?7tdYSi;RrSUG)$ zspwc;TbpRJwz2WPoRm0e+>E@%RHdJ7_r5=FyV0{98cXB8zq?CJN)pq44XmW@ltT4$ z0oV@!6Xjk=y#A>D4oJHn=qLs?&N78I&cVO!sp#-gi&ct)NIdqATTXm-GhCTcA%SzT@d$fws1_l?WvO z;0X@_EMD0;IXTtUvB8OniB7yLyMi}O5ro_hOErw1JEJM=X5);EjE9SL3_%pYiWGZ_ zlKHwR5t8Duz)Ye3c65Axuwiba(!FsH-KJR=Vc)vo`+IVxq`aMVnxdvMO(NaeA|v#Q zg?DMM)Y4MFQBNAYeib|EaGM80`9*mF-r3o?K3urC-HgJTl=nH0%g)Z`UUj2rukYyS zsIGPZ#t{t-ZTYQj`2M5>Y1{pAOG!z7!6hCR{w3DFB(HQhpcXVI_D;FI8sSR|v8%b2>@Q8?`wGJT*&wM3Kb@ikRsf9m& zU;_v9kU-jzbhd0Am!UT*DyMJ18*@ZwY|Q3v4n*Oxo|~JS@700zHetK+PnYsdU+Km% zd~bVzDK2|>qvIC6us^L7*eS{48iTz;muZ$})Nefe{w*RsxN$gqsc=mg0KmGIoRFB8 z6hAiTh92tV(zs@4X3~XxVGqy?AS8G*Y}w^)Y>u|JwxAcgYf()eSH&|%(XsI5U)pAg z<@4mTly~a;)hb;|mO828x8KB#pyfqI2T zl+gI-uJ?h&DyvQWXCp`BRlF@s%lO;%;^m%ZAZBZTB<1h&)!OVn4b7I64zI5V!&9SI z+Y3&Z6ldhv_RguY87dF4l<5qhZx;3?bn6eCsELCn&a1x@;%C!`yxu|k4 zXP4Vb(~C27BBp;!F`g{Kf;O3YtU854k*dT98s%`I=eQOr}&wOJ~nLU|L@(E{$xFQM8_RqUL#m|DW3;CDx; zIwLqaIEYSPLIduCLBoGHN-eWPT$Em}2O75d^yvFh@E+Q6d#CRUDRZq*v1#pSeh2iPTYnkuu^n-{w)AIlpdH zp7!6q{Pm5u(mGN*6_}Wq({uGLxw%Hbs^ac|jv4TTk+v5)TkLq)Tkv+^wnb`? zrM$;|DpBCZL(A1IefK`#1o0jJCVO9_{r&yF6iy$x01eB> z?ts_e3Vn=#&%l;6EB%WHe|0B7V$U&90*jCzTa}4UIu#6YmLNN7`NwtVo97lx0)p}n z8*hF&B^blBDBl7L_u!`E>9ONsq~l>>!l%BnQdksN;Ipa2k{=t-uc`9;6Bmej^UJ=e zk@Qm2T1*Xy0T+`SJE}hoxoUAeIfg)t@TrN=CCC8{8#vcsZ+GI{Twe;|$m>l+9tC=% zq={TexJf*f{ze%`@R(b#DXZqy@r)JAb0|FL(;r=bPkf*5jRqn!c%A8qA_X^otCe67 zeLUStf*ERWLuJfhF5lGNq!5Q7FjzHM3O(r8A3o}2H^(4+vIa4z#6qnAAiP;|U0Zt? zThnRxa(8i2D^q(qPwMcxnpKz25|k6wzYCi<5IPgWD-blm{^43!zM|3cO&+cV4iunz zc>frXqg0fdmPSZG(7n#u!`iUoLfFG<+mOZ}CBdk_-0{RN)xsLiR`eOpuQXl?ruC7i z-C=te7&GsNC1Ug-Qs0L&K+PQ?grH?N}Z!XWXL9}QJ`OWUj=;uDFLuf{MROotqF+l zBx>BJ(=KZR>#rUkW^_u}tmh6_RaR7Tl?)UJe~AJagkY_6uRCguQ}yqV{ooa0SNc!RnCKU?6+U$U{{Swcax9SIa;dAR zd=+E0iMORjs)i_ZxvlP6$jAI*^z&Z-==rf6=dQ%gJ@c|oh2lzkwo(W?708`o>J~Gp zL(R|PA;8Dm=ltpRD#5aD146nsH>IGdp6{ig4qjA&o@hb1XN$S!RQNCc*k~UxwD|G? zwSXP&^&gOeeIMb(&N&!GBbHf?5%$n_Mo_omy8td#q=Pql?P^m5ja!1mqwHkba3X72 zRxATuG4afKaBY>^)#Cl;i`>@%yq8+i(!_AI6#1zgxRHN^?r9cYa|5lkr~9>Xxlu$G zc}A|;VrF?}2SQYNCf&9s4t{47$F{rSvA!Xw!4mbD@7*8MgtzK8AU0J1e7Q{%*9bGM zN{epoWmasi4*C@GiqxFf>QikXD$7~-^>fxm>MTe-a-73L3yLk?-rE5&P@uF9t?yri zN?HC;4+*bLu!&ZVPn)6VqRK`4l@3hKVtzz0ud*wRb z7zFpjwQ}92rpw(ME*o8SXtUi$_h5HjkxAKn8<$Z~O0yB&`)Ao2ATPNw!GTDvJLtJF zYR#X%DB3EOgzE}sIf)Yr7ctB})J>)suzpU1%wDMuqab3TNX%K$bIle(O5)Fi2rX5L zQ3Agv-_dU;dR%Qd+%C?i9NeSkl z7t5FaKpM`7fVgeyLr3%~uHf@0QSMz4%p7Ned^g8D;N*ao4~XZ0IQ@=qboKjt6x2JT zKI3gdkT6mop%AangBu)0l&yB*oC@vT_*%L)D$7suM~c^|JrAd25X;r08ulbpK)Lq*A5^ zJ3CljR@%F}oC0*C8|$J(YsHqDF{?TcpomNi{w-#9>dCKnp=h+u^@eENVdk(h^^h;O zOI#;DZ6MhPXMm4Y^ydM>cHuKxN|qS|jRu(Oi)liL%F{Y*hapZz$is7{QtSeHpW4Kp zm(|ASV`+ZJ?#i`XSGOZ!7lj@^?yI4#Uy|6YM{!J@wnW;}I8~oExc&w^F2RnBKhr5* zyE&eFKb*@?NgYU`>3s&b19nlc(^1KLVu)ayYtNIXX|E956RA+`{;Eyg_bSBQlRyZd zzk1nU41G^~x?H_AJGOl2{vP3+U;%KZ(kcKEHdWMU1-;ESN0s(~lj-57tSMEbYNBSK z$et|zcHi8%Oeo5~KbZA(Jy<+pnILK|ISaW@wNeZRZI#vTPDH*LV-CDyUiR9bsdFtK zA7cuzv-{m@racxw`1(XYtwfFCcty+c78cPDh=E`g0~cRV3d4~{uO@1sgqc4eA;Vn$ z?(~J^H{}OQ57pX~di=__JxM%}t1G6*Dd<9=h1*t$3a0&BOB6cF67<}d{E444j3TBA za39ehLNo!&~mE%`xpPc+xVZpqau(dMqXoaSEOeWcSP5=e%9^q zfqYLbSV82+1z}6XWD4C)CAD7yVCu3xeLJ9gbEPBr*f8RV6^hdJP?NpgbkNVoMaWyi zy%+1EIBQ#4x>l_48)X)#$4kjGNWVd?RDz9T%>88?MMG1^T-9dnHd*wO?+or1mtgu& zIB`m@mZ^)jPjM9-`+_kA3w|ZjTc`bc>x7peG1XS&mrW0x^cqs3jN^J~BmyI>KN{YI zAk5CDan<58SaDw@vB>IbrZ%9-^ zrE6*{wKAuL>*&tT%1R%G;XOy!IY|@v{i9K&jgIcV;1TM-3)7TYjU0)WE5$?_mF5`V zuIp1rxn4hdtIyotCTUEF2bZ*n;a8{j49tvDs3PI9iYhOkXhVh`>S|f^%Qw%=h zF$?bqJJ+@LToBo~Z7X>iGr}dTCqGiz;z@W}E>S!X_twkfyjEt@V$DOSRsuq!FOCi^ z0`EHcT-q|g#Z22J;x)K$dZDp|1^vY5*WR^MEg%{$h1S|c=jVL+^M1`RK2?y?ioyNO zr)SX-sGs8WqL2xMO+#IMoE~n!rQlM87L4#lhGeh<`ACX};QJ@vsSrtA1U&h(=^TCn z`4uV*Ku4Rv>M%!$4gt!)?wtyp)VZlmj+U|?d|yge#vNXK(pydbaAVLJlP=HjHg~CX z<$%kcX=~E$fccs+RJxVO!H%AKw;H7~6_|V*98r-8Sq}-P?|@XbUiL;#WF)m~XT}+F zrAAK9#^=2tS|;T>Bjr)DO1#z=`xRNwcnLE@$c5E^Y}&tsGdfObOrOx_WZ=8+;~Jh> zIi)}r6V=;SYIC-;KDQm#3-?X%E)+6u!USZ5z(~*KL4Fsv*jVg{U$^|W;-0fzR-U&7 z3Bx5EAlw!g2VO0qi<4&`x_-r{%B7vXd2P=?8`nw!qJ5D}`u4wTO#e}v{@XjK6^IOP zQ2zzsV})tOv${vnuAQ8{5MGV$=%+|#23j6+9um0hv>PM$AjBUJoOF{RA*I*oqx&d8 z8TZ(JzuprR@>_u_WJJG2t3jkO`71tk)*uBY5EC^$iz6=YA}CvP!gNQfT-s*kM2)BT zathTA)8K@;LIs}0-^(a5`j(LqV-2M33jN_WIKTC%?Nz0Y^De9yF$V-8UIegJPFk5E z2Hfz=bMRCsG8U!ibyi~}iZohgZCvhZdoyUM z-c|$@%JFO3B7qE}JE-3SJtXZFQyM!~UM_5G`-PwKUr>5T^0{C5)dGXF8EKY^8MCl| zL1h{9ERy6bSR3-5-=S|BP4cA!Wdt?$na%c5GWpF6yw$ZbyodPe*Ldz+ExY7MC?XH?_zJFmX0qX=A2* z-!^)OwKvbfKz;fO#_{h0^^Lvr!I3r4=>kKpJiH4TgnP$gZJgu4U#B2fE{WRRWimDN zlR0{Sv`YKp13(Sw4tkVC)&Ckc?0@Ob1t%oFKYd?2ZMhoEe-8!E8#OT$RV@mMd>bF!YD zchUIMFQ(<{=a~GENz8ylB!s7)hEWfe)7vlwN0P<`Kj(^`;sLpjjk7p)Bty;kI3ea^ zlUg2Li9p)V1Mj-TVf-q^KJhrZJ=<*X_+UBtZfeWS3MlcS#{M4n`*AH7M|af2TlB|@ zs#`EgjOhgpkr1=x_>GXX(ctNe4kZPF8s2PGoB?6Tru*@gAvj#KoXrKAo)<;hZ*ZXj zkd$5S{i`Y}fkrKVZJcv3NSIlg^W-J4wzdmZAeg|8VT^zFvIu zqn#^nn6i`$=*JMIS0N%aT>14t=36#@9%Up_N*K@g@5z6mr=!IoFXyD{gytI~8m&bh z$rRH>Z7o(Bqhq*o`-nXe^&+~^aP5S}SSob8;uQcBbn|H_fRY=@RT#Bd1uZ+%ckZH( ziXi02xI|0luM+D`OHqpl03eLph73qqCh?ZN^V=6ZW5$*4UhOmQb2%O<$s1 zBLE(R^lu08fHi6m#Y3w_85~@TE5Xki0W=&_Gpbaz!ukdu8yFHZ3+jkC3sYM4$^KTK zIV?EXQOXI0prnu@S2l<0MoH712Ol}p$dx}6-~?n~a(B?H__RYH)Fs-+b$cWamhlo4 z7I#vjhR|=Ia}}VCB;7|#TB=*Y?QV#t{l$^%K2IgrivW%mV^BXXkst{d|I*QnFh|M~ z$PFnORrhBAAnb@#x+qUIDUw9w?b8TLeS)Rd&NOnQ`CChb7nQ&>t6x4DI=}y0&C{BK z-nm$2>whZEBtoIt-`scqNYP2|#z&d_3K|4KtzIGdcR@b(Yu(a(2K-V3>`*2pcH1U2%cFC5lv1|ys1Zrr`86Tj& z2U55(zafN+*oa92Nx;}KZ*`MpFvIsh4Zalb_VR>!WCh$%^{7ZvAw7Z^37}!uHEBh| zox(3QL0-3qy7dk<`a_4rSP&Azz8Js)DpqDK$Uh6flYNGz;+JjzUN~|glsy_Uq2b&g z&2(8#1%#oBP5cITjeVrn>yyxS98uPaZW4A1ROaFFxes|X;j0cfQ~JH+pO(SAJuiT*Q;Kp6VZUc{XsgnvCS@}EaX{?~WUU;lR! zz)diLEfxn>z28T({Whq-Ig;LCdPu)#9a*ZoRu%^Cgy%+Au#E0V^n2j+s{@j0CgVBy z=Xc8oY)-s1N%hSibBzfui3lk+XOEgKdUg@pFXk6!`k{Ph1+b)H53FnIquK<}`OgQ= z_ED&nSE(+kyy68haV0N8jnRFJr!z^`1lWWUN^o!ebnb6#fxVnQ zqo26sTcs_S(7TG#MCY{0r{$`_Ahy7VI!cQR@GZQ*&(|%jurI8ml;K93x?X)|SMvTq zV&MD*Tg$BjIheV*YUrij-evyf-7mscQhPcx$?TmVEiCFE2 z=*?%-ehQ)2698)8#)mLW#Y@p#FmMe;-zE5g!v3^brdk*%n2lZfZ4Z!<9#ih4r`!(q zlSOx*(Ls*&C6WRgFu>BhzH*hSEkkbzWvD+jrzUHBd(~*&{nbu797gH<3IEd6F;75S zX548c#|dr_{T$pYxm$5&&Llu`z>#u^PX4J`>mU$4jix!HYv)_4+{)Pt;;MJDYHfU+ z0ZTw$-QzW)v!T4(YV>2BE<=uT6M6L+rq%T_s}9L8J;8D{=I|V>(XuLid+_cb<`63a zBe2?CYZQ zfSg^VN#0K}q})MWu#LBqDYaGL9C}g$Ueb(t;LIsy`zt!Vys;uV-6NZk^u;AkHuVK9 z+fuu;yz4l&6IS+7N9GB~pYcF6Q-mty9J(4XrmJ|k5Lt13x-c+*ionWUY> zf}j*WdCJVgL^=!fU&5i>KD~4ygA{Z~x-uKj1;_y|ARo12XDIOv6Y1KznDU{T9I|S+ z+{5FBaRIi_)F^_GSZN7BVh_#A!?#|zWOdvPkz`yLll1qogh)!KVr9?~8JI)^Dx@Lw zb9(15{oAl~L`TLgUizrX)7p3TeNv8_L+>rn4aA<0sq)G;8WN#D{1BAnT1Od7Egca} zwcku#r&BF7_0Ha6dU@*k2l9=xIFKvZ2KB?(TzJN88J_ADFF$>P?MEyTXio@`M86GA zOieR&MN~>c)+xXJCVBy8GwzfsY|7vN+CMHc#AJa^<_mmTMw)+apf!c@N3s@k{sw(}EkMbZ2_x)s=qxb<2v0Q%nhH1ga31mw4=`JzH4r zl%Ya)KGI(GoLmj5(_2;OL=nFG84Xx=q%ic47w~VC524~Hnz4pZE5v<`;`$6N=KWF{ zA2hSIA)E{ik`ysQ@Adro+PkWUy39R#+bq8l_VyPLhccxoIBBADuxO=AT#wZ;t29+c z{t!jnuzs#+Y&53&chClqJ^niP{+LFsawMJ1tMPLpNl}5N)~^`bYh2mNnjl4sD?(z@ z!!Sd_A(cRxWK&7S+}@aS!QT5AJV*2&nA=fDhz8QUg_4w+#rfdWZs~J}BFb2avy%w} z3go$e|E|$dt3ktI96p>a6F`KhQ=Af+qh$Gg%fxo05L*D3F^NtYT=4VEl0~8ZB9rFS zH+J{2-s!&wCbNhm0`V9HXzRZcnE^4V7heUF$4GummWL7als^0&q>w5X5RbC zApqQHPE_%vf>_XN-n3@Hx*qUam$q^;`<69ZB>k1|AwD=L$TO^c3z)$Ki`ls-jGv8o zH2?zyLyj0Rt-!9$^S6O6i5=R8hLUrc=06(SpkoD$nAR+NuR2uA+0PPM1(Y!0$n5&s z*YpQtu}Ac=V2Zf(sMR)wT(|{07f>%jGeSFZt#j9#1Aak$Yx@Dn9(B;f?uEPczl4*s z!s6}Tjro6^X>avotAmCnceXq>F6JN9^rXleI6e3adAMS13y|Q90q#!@M3P1KOt7p3 z0-obe?y?L(GEkPdid{u1NI@+0__;k@vxgjc{SG317-@4I+f5@~n6Sd6|!%14G;O-%(AmFZX#rKt#OTgt=x!>kSC zfRCsUfsgXKXVjQEBbmIPKe9%zCYEv?_V4AU{WPdABf&3gv#qo_5C0B+5zy14%Gv9s za3`WD&d{Xa{EOD=i;4p^j{;e~R@5AqFB(WqMDgSX?`;pOG>%9zKf*7s|Lwqe_2Xsz zXW6fTAWpw@GT#WSEEXXxUX3IM;eH&wujImLWHf{N6y!O=Sp!y;Ja2bDh|7F6<%Rb< zd=IE|jr(U`;*|?WKin?>gQ0B?2b^VV5s5M(o@n9rwKzyxv#Mjw_xAKFIsK^S zvl{W{kqxLp0b~|3S?$w6&;}G}0C|nq-VtH|agoX|n3Whz<$7aqc*pz?CR_vVg4o4x zwLIPe;^ZieIwDgM13A--TI6%8!LG;(1OS}&jd{sGd-|l+Fs=L1YrxY3N7#E8Zezql z6!Sp(2dsc-)>cfoMtA*KlNN|RSs*sG!wU*c36kdp{`y%t$s@JDYYy+d2JCp$ZT<}j zJl8_4Qs)uGrdF={oraSRW)gJUzrk{*g&&-=H8!8g@7LMQaiV1hAoY;*I{P$0Ub;HO zs%i$~{M#P)$%(*rva9R`)XH$9XK6vA@>`O1>0V!|DBnI|lvv^RqO0E&Kqtw8TjE9J z9&BDQK4#s)?lS$CmrSEJ&jp?tk71>el^5;r93VuHlTRI6I}RAl1^d2B@J2`jOo0D* zx`Jo}jzrTi?R4-n0^w{LoymZx*ve74hy+r*f{%0^$v-6dpS|!GBJlqwTk!wl68^6P z|D{<`NK5O5vGaNBGL?Us?o=F|eyM;8M8gJRJ}_trx5`|m>^OuVY@~mJ6BvpJH%S7a zFLM065rC0b*V-#0W801<`R0SsdFqU8JZQW48MFQYfNmjaLzIVt<^N_woutPM`|_M4 zvT7o@j~LyFSC+3y0H^6J#HLj}(HW<-)5h^8F6dJD&e zQHds;f27iqy@y9lstQdMs2_sxD?oKKZB6GSKgU2C{20%iH1^ACoe8&ngUlUG81)={ zUf-P)!{d%7_R5wMIHk;WlePOHiHsiPS+oFDs>CEBppstDO>U)b{enRI{IklyF+7LN zvU(7}LHB&jKO&U71R(O!3IQwgpOODBWc~jD!T%kb*$j@7HGJzTueZYe>uiwcbcTF< z<;;((eGg}ZRBe_g-A?0BoM%Tn`Em>OGFom0#mH03T2ck4G#jjZeVA%oyc@=+{hLbR z)byXfNc&NMYulH-_2abtQ!Y2l!|`y*6FUdDZiNs&dO#vg1yck@g)=f7Sq)p0UM_{Q z#lO7(VSq95j}j#|W#}lLW)~#O*iB zE$8GMOv|Ry(2IZYBdcO0S>{j+po~04m+DUb9m!9}xJ1n1HYobLztDhgpeG~{V zF#$#6jH0aXeY&~OSn$vIf%2*WBIAqR3$ez2Pj)=YuBuj3vr@#eK112H@79K! zY8T3}gG~@;LO0@Lhg2~a?9YC>uNdOaDB6q1nD_*5uC!J%xMAD3eh|nQ>GAUUUR(lU zgW2+jzXu$BPf*VJjS<9Gmd|Dl-Ko-08QGC6??ZwmNC6kk6Icqci9b7s3m%EFNJb82 zQ@?8$zbHBp;$|5{d2WS8lD9e+wMQoCh=yoc>(B&&V<$^`ca9Vvu)A>x)<|x3AOsQ@^q%= zWJlYY^a%3_^+1SdXEs*x^A!J?p)0neeM=omOJBm-P*=|G)tKY4GIeY3X7PRn253Pi zIpnN+yA|Pjy!P{Y+$W^xz_X{uq%DcfCI)|478_^mO82VN@Cnt^<>_pKYUmZ7BY;Xj zs$inS`Ap(z>6ArZNzKC2W$&Fy-=H1r!{0l7yN8h|+sY^V%`G8jd3iN1YsKI6>~+}p zO&E>VQvL-YXF7AXz#T}0@2dk{lpJo?>L^{Am8qRyd*8JG5gG`Ee&4o8S-$`4P{j}# zK|#M&7>@=#Jrj+;gxjh+iSZ83g{pk30$ebW)zk%(Z2LOBBf$tc;d+aiTbxSbWp+4f zB^uuR4Pq1J-E{W1kWF^8;#rKs;;uBTbWbV+Et{gL9)lgK-219Ou#}u1g?CtHnyp|zX z4rcPSQlNA7Jm4{9TH~69=ciZZP2UA7mdp}-u&mR{R$yddx%X<kjRK`R)d8X#*I-qyO?M_VHCYYMh?b}ev<;KHrXR%+gB!)xYx=Xr2B(`*eNJ~j~D@b>5Hh1{_?pf>H zb`!bS;JykJ%Qc=uaoKsX-dnyid_H5tSnE9imX6)cl_y~f#C%Kf4RMzw_^%N$_ zcAqRu9oGkl(Z7G2`54pUY8x0l4(Y^{AUJS>#&?fxmOPW~395S4*>^1GkHYu`+z3eD zlZ=2^0YpCP>gwLT@c{|Dmp_hI*ib;O0%j2T-P zKlEsY<363nY_d7uWs;$FuxLjW!@Oh>M?mZ+^DVZ~vuDux5j=mC z+?q!h@k}bh`v9y(&7@4lK%cw4+J|xK79)PJ60%1L_W-7z6C70 zUebc7PZ?tq78Mzp!T)~j;KGuW3Yf9Iy*+4+5%363*Qk*9jH_Pwk3&ETbd}GVN};N{ zy1KdB0R?1A8eM4m6*n}x)AAtylg63!^6C-W8bP)W%wVBhO_Fm!;Jpj){c10z>+9K*R=9jP~6 ziU*Q;uH8MB$RoJBM{`aaQPfg$#L-=EzAfW}$8s4dCmT_hEf>=5GJa1@ z?q8+z@Y&y;XwW+{;~w?+K+3I^8eb-*7b^YwxmxKY=psTEy~CSZ6ciNA3cW_pBkGh0 zeRcIeN1o0gO3e`c-mYmP_ywC8;2jW(ZB!C1XtXZ%cqi%mq?;+J#?QS$>>KF6N@tFF zT)a^vVL7x>g{r#oB2L~tVVm1|!N~ldm;1bYyYJzD;o;AaMwX|>bhkT#7_{Tk1Sxiz z?I6+0b7(m0uVaA*`=>$EZS&^HQ95wO{u}`~{kz|A@6<1h0wPCkDUBu5dnfjIO%k)b zL-`nmN}@cZ$Kz(geRyB>DR5w8JuPgNH3is)fl^b3MLl%!oVL$Nt|dkE4DF|(%oGhZ zF$Kjvc~rCQIH}e9g1-D37_JYXu7f<#Le*4z1lR!4SC4;g`ZknGDz*`(Ni1@yGxoCN z*^f)Euq@9Pyd>^w{Jt;P1`{+x-nxuOT4M?u{Zg_glj(Or8JoY)wGL4~P#i?poI!kN z&QaS@p~Y1xQ3E*(z*+nH`hE}&2;B#H8RzHcb8~aRlZS_gpY2SyUu~q%{(<$&*1f%g zRk-#$3~y`4TS zMkD8Wl`E0G_IW`AS+WgtDRM9v;1BUIDX)-BaigHje? zwDXOC6&rMOFNMEP=O^rgwwnr#Qs0}sdIkmtK0ZFcA~oE0ZF;r=D_7>}&IoHuarO%Q zwjp~1|I*atb%(eGli^~)1tf~jwE22VNOaFTwkwE(74POm=+1>D8XHrXa~7M&L0Oqj zFUDb^;Rr1Jj&n6Kxyo3NANQoR-yv>v>m4$)vnfC!BFc3hG1L{b!_eaBSH;uAKFASfi;_7aCpnadi3PvBv$9( z@GzK|4jAAx`Wr^O^Yp1XT#)$bDlv9WP2%?DQyXmItB$ir{}~;YD2b-{2Rl{-9tVWe z5>s(2{yD{Q6bksMeTPFkYEB-0HW8%cy7G;_i7?OmlQ>aFTgBLugyN!Utw-7DVCiS6rw%-YzOBiU3JOsgrHj>; zO6OO$FKUwWEu1ef**m*HUNtqQLIXRLQ-NQ1DCq^B!dgQrEYEpI$p2}@uN=mob>vQ| zaUfxM01kC(A<7vS4-1pb?XGlB2(-)cw9+ZEgUZdxbGC7ohdE}*-JyU(Q&Dwz6pB_O zXi9KgCl*3{!dck5Z~p>F&Squw6E^ZuZ`W3AUwKO=?|cIcr_K#WyJk zTW}02s!h({uoFdvXne8jjlraO{g+`(Wsb3us*;hDn)=woqp7t8W1wnKV?cFos*7v5 z@eV`{Uu4PHe)}^e5U`L-UI^t}fqo{{$;)j?mk#H7wTs<6*?ijza&Lg}!qJ&kqvm3% z^K*!x9;~oqu6*B$-aUIw zFH*SwCU;P1$l%e@69*II*PhZ!23CW%#H-onty*233TYG|v!v7Xe$feNS@DYMC3_-3 zLtQ<-xo(JA7>0`%B^oiV*>E2fRklD2(n z#ebh%DQ5A{j*U5keeS7lg)x8+&7Mr(vwFagatR6f?=Liha+-c0X`uxRl8uecT$^w6 z@laQWVsbZD=p{z@Yq45P(P-sBZ)TI zoYk-`!&(XC+Qd4F)krBv@WmWm)m6*6BEpE1}^FDyadr*XaWRxobTJjcR{?%?I=D6RGgG?d% zFW@HhxliDGn-l7Vbkm!d#qhL@TH7aJe4L#53w=t`{;j$iKG0GSK~gtu|GL)pt&3R0 zqtY(FmeMlL(xA+EERBKM*|KOx`J8pZ#}1|hgl^y8)}1lJ;I+vh;I=q)V-Aki@_Wpc zDLs$ zNDOXbPmIMcBd}Gy2Uxwj(=~()qPrfcnpF6*$V6$1kC%nBBt6y`fX&uO$;;;4pZ`;x z^cDMq=o_BplGDi~l2(39@GEa9FoFhFNF1x{eV-&_l^Xp>dr3#Qn~YvQ_$_?eXZQH$ z_6F++Y?iYWzL=@uk*7x|s$inyN_6n-JM)7x##EqNLE5W@dHOyNiS%Rb=*O;?Qo#yr z)Omjyo2HG!qpClX8dQ4wzc=3V5@0oNM&D#;d17e=NwJJY-B!WeKkfs7>=7P5c?D%< zOEt~Ca)cY{%at6v`(Eto(K4YC_;`a@`jFeT0Wdm`u{euoDxZvM;b{uhOs2?WnD~ca zLXQFMkVS{3v-p6@&fPQD6V@rPEEdn&KU>f-*}GbXg2uJ)$_j#)Qmx@5hcr!(`IliPTGz-Pd?-p-UYMATI2d&d(Jh{e~n( zQ?jc&{m=V%=bt-4*g5`j1>jwiMjO-(SkY1k4wdXo?UV!7g8Ol{k8E{#=onh*pJ}^K zH1u@8&O8|rBB}py24d$oQOwJNHcR!Z;n1mygDJW({0NqzBh3=qQje}$#48blcYcX4 z_oq_O+Jzt9(^0C&Lq>4(WShyK@%V!fX1T+W9B!ZLDMuur8(val(Iy_A&Gq&5^(Qdg z`uR&peERzH4@}^4C2(kHsC$b9@;etyX0ZDFl>fhPVE;K=0|5ri2e0V_AZE({=A34} zamstsiyVNfUf_j~8EnUuo*}0?y9vW+t`9G9fG^bA3GrcsrQSW7`@`8PYPB%Ov~)3D z=eX?fA6f`%=@A{>F|8qbG2n?eqjTs`K_Te8{$BrX?g%1)-`LAv4APM9A_MD4sbd&Oa?b{HHgXWaIh z@UBVg``KN+hXb3v-WG~bTO=!v%cB~o4AMNU5d%Kdx~ZILtbM#^)-6w8MXh#QuEzP~ zn?}K+I`iHXtNshzuQk#)AN6YWm-5uB!h_HtPE)E~`U`8`oN9Q4`bvmETrAi9A!m1z_U9vG5yc-;8RhGolF7S`YT>TB2% z{_NI)%vwJDjj_5NH)%6z#mVzZM((8?Lq+!Gb}`Im0$QG~t0`8>@x)>ydyspYGiEp{ z>+-0pw%a!4K#%-0X~XT`b7!OXtNo(yEDw{eHD{0o#SqZUJuAx?fx0wR6=9Zz#O67y z(5E8V|3GJ}?|z%D5kv=#C}fj-CjD#m_szL~FXC{H0&&`tjez%L_dDm)PpEHyWzQ>< zRab|Vz*Ny~GeL8E9{NhcZP`qA4#yMBp4P-Qch|d((o!GY7QaR@9M1~8di$;;D>#B{hs|ybE^d(*EYwhp%`P+Ax>?O zYC;$K-1Xk*OvP|lRW&@xMw>jEu`0PB=%$IW$~ngLhav&W#)$+4#?%z(Y5XIRM{bl> zo1B&Y{Ma#_!fp65`&HBd5y(D>zr&e)vV~Q3bzJF`pywYc5!Pwg*?+Z(m;KvHX%>{G zjHfC}r)ix?oTMiqjRDQ2H+vvx7j`oZo-H(aj!@J*#)^%nmHb8EQJfm{Mt;-{KCb-L z+@)dKdN22}C$;fGia_6Lm`BL&nNba;QwFR2&JwFPj``bTbEdrv$qNdl$gjf|5eQZd z(V^F)za{^Aoo*FpgFNkR5Vu$cktQyusUNmGt8SvQedbv8-%*QD5!bhdXho=AZ3mU4 z^`}0|c>cjJ-^tue^O{cM2*%`cTi1!m#Vh-vYJfJG?|+> zUN0WOIDPe_W}j@gn5j5YW800yzQN?Cm@{YI5_&f8a$0kyE&R(XvD738hl%0mKxoyU z@5i^_Zzsx&bjFc7Kajccy+R$JFucj{HkwtbUk_LfC`q0d)Y?WsaV^}KMH%fybd!6i zD?0I(iX+L(*fL<8I!Y6c@uw7koV5QJ3pX5>BB)df?B)m6*+kKy8qn?1vuOgDev_}Y zK#Su1*Ga1(g$)m#WuBV7UxJHmV)Kt%$FHLs`^zS+8pTrT{FyO|6tqN0P_&sQtGKHQ z5dt{|X9ZcTS>?qymZ;V3!yD)CXMPF^OEh@lqd#y~kHit3{JLGAwlwB2=I3-3q4Y_R z$M5XYGC%vwXPJYSI~*ro#w;o+iXgCXuaT=ze)e21z1zsT%q~#|kjql?{Fw`*1f`zb z_$286N)8`(uiixFS!O*)^mA4GOv0K-j`;>A%@1KFl{)wHjbJ1nk`iwPLnuVe#5tSi}wQM zXJ$*|{HAEnWo#-bIf*85;%)yTHeO|o{NotDy{#pV5aFFk7G`GiE8(cPceE|IdKf{- zaZ#c2OmF+uY($w;HX8c~=7{K9{1v2Sa~=uzpu74e#@shq#+(?42u%E@dGlz+aDc(c z%)9P|!(H0<0DoqRfH>?>6u+ksNEdP$;3NlV1pr~W|LF?3BZfdskl?luNa({un8b_s zcRGn?g+y*!-hz9F3sHMG$vuyh9*^k1Qd3)|EHWTKS~1L5okP@m#-8zlg6{ba!7*XGe^x0s$mYpy?}M+z}e)P zNp^WT?0h0?qcFSEaLW_z(m1k^oPLqo+p$9}-t>IvrwfVbSyt^Gdzgjt!|l4uJ{skY zI4b@e)@@kVm_Kb+GXIX3Bl^;Aii-)~QMR7Q$!hrWL09aqm8pF&QH7JyyMANoUe(@( zhwNCJ0R<`UaGc7|>ksrP*p(2qm=X`|Uv3#TzxEa}EMI=xZfWLVwvAAe5<^qE(}A7I z!S?zR(dby`VsIMY_#Aln&9@!!uV+fFBcMtS6mR1YwMRkZ5UL<$u9(^5STlBm;?X5X zXHOpovMaolhXKgzX|b~pelLa#EqCJ5$jOn3zJHFx&znAPd2->V9VLlGxcA^r2a|5g zkj9?hC%$WEaAvL8*1nT7#ftMbz^?t=uH0ytZ2C;cEKrHOlO7D1>O{Z14CNPu45c> zS}`=u=fFa3IygvDG>Ao#%Z1-*P#k_Tz89Rpw(0ordc>uTFLPkI-ZG|~{ zkuRsmAaGmZo&byJCo3SGLipA9>)3ni|04B2Uk_nO5K4mY0I3bof`FM4e*rUJ7WwqM zA^PX{X;l6JbdS5xQ`nz6+VbEjmO+EdfnSD#@a@j!%&Sb>2{)H3`bKLz<5z9M%#B)m zGe4ed@^8mms(9W^M13s%Vch9V<>r|!h(K_V4`FnS_IJcT^8z81SYYNU z|3p9y$mD5<*bfSr8jH4w=sePlIkot0Unvm&LPo{MJcOyd(7z*Ye@tE0`jR71OVx~i zgxF>LVQm0XFf!a$Cb7joDnIazw`LJ4n~hlpl7cwF>m20(|0v1+o9S=*-)EZHp`j|& zrr1^{RsY`NDm&gTiL@-D;cSF6V5HLZL+g8hC=#L;Uv{ir^5M8hWa~@0z~_?3-Hm}O z|JL=7AslT}_AE&_{G6feu@J^9e2B$}|G!6h!bh7gw9+HBSs?lqmdP$EXAc>sH4+Nu zLohPMzqVh2J}$%rpC1CJ6wCU(JsA}YQ$PzC!2dtjhIFSx-~Z=FdosU+C~Q94cr&4Y zwIn7ue2yZkwva9O20^@KD8>^{7FQNL^=b1{`mLO#i(wYZQ4^&(?_N# z2`GE4HM*zCA4)z{Ua>`Vj3IpZxRx3i%&{ex5K!9@&*A|>UEIzcSFbppfipH-M6Dh( zS*8=(3D#X9g-h$l4`5{&kX1+;f2+h{X`W6Z)K$ay;Bp!_z#m&Wg+Jrk(rc0jj3Tfu z{w?II>G+F+SM;;ykmnaz8)sPaoHY^mgJ4@RcRNf z<6!2t*2x9%fl9sySMBMMQEF>Z z9sC8m*5gZqSOPATXK0rD!|MVgF^R8PP}RsOU)OsuCBUpi20PewR;lVGA*(%+$1w^aecV1Vi=*`;_TyCl;q?+Aip9FP z3Z(aqnKc$TBa$!`vvl!RCJ2mits@U%@M`H_b#l{LKdDWmQsCYr4F`jrEEtU7e|b3_ zpeiuBVkk!lW>#>|PR)f!lMme`Iq>qtz~~t9M=uN#_4rBg>Hgo{VK6lUKH3@b1Pu+% zAH-CpX@6MW0sSL@C~V6PbMwNAiv9h?W;ZuC zJ0XJ>Pp5%o=6l*o4Zf2AfOVW3;e_p%5^qQi^z`f;9I{eV*`8wosO#cjnfp0bLPEmt z7{7MI{812~t$>Yd(j!5H`N5r{=p~ajuxX&FbIbZ1Yy0fl_vXCybWF~smKQgy@6R!S zxWHAK_IQYUxna>EYrLst&5d~Pc97!y0<3rpG3#XV*Y1%4KtynT3Ub*Ou)>-nJbQr(8C2ln@?89m`$0~V5Z(<(P zTbOB*oMygqCtK6!FtPSx-sHrfGElv`dxb_2tOLqr7cn}Z=;{KzutsN(#Ic1cW#HED zZraelT$#~*f1yMTNTHegY=S@NGbOFyLO?oMP_XU&i3O-saSuO#;+1`|mTW|%By+}Aq=4m^w*)RLzmp6>5uxi$ zwPmsj5hHsAJne=^ouWv8skWahGC(uQ`-o@OHnBVMeX!2x|>(ZK^C$?xA^ z0oTE8KX3{R21 zbI3gfATmTYat#3oN2|gI6X3TltpzuTj=>NBK5Pd4V}h<$L$AmY(EBR5Yd1b5%PIc9SbLl^KoT$w7@HAB+T*KhSW$kHk2N|onx z-<_#4kI-YW^v06OIJ(s>nd3Fp(w`teUri!l{D~1U(OJ@8*#zXQ zR?u&+^7)f!LGq$=BR~0*tpe;|Q6c!Dn4{yt;o<8os|0D<3=u6l+hv6weA^etwPv?O zNqIs-PcKpzj6}mvA>|glmyU6p2+t=HQDI( zm+>tCx8R7Ho107KtK=#JnL36j##dhKndN+SU-Rw*4RxV{iv9%5oMG<`EH-jo%QH&+Vf8mx`= zJ2ilY3!{7aCKj8xg7yL)$@cbkarlt$7w5VWT)lG|AxQC8zq}Lvt*W9BuCq>>~VN@5*?uO%_+aS(KqWaZGs#F8e~oU zpYYD{eU*TI0cIWW7yyk%073O*Am4_KD)zM^`I&}*_O8eL@@D8r~C3+kJSOx2>73Jj* z14V*GJN&P7ECf=Ar`8X}^{wbbdMB;-qV`A1gd%dQ8}$<;kLw=GJ;)r|6Dh;wTC%98 z?-U;-v2^xa*!a8pJd+d>iuYlvR9{Eu=N<|)D0XC%&mZCQ_U$;Bxj^=5@?M7!NFCiT z%s>_{Un&N12J;7Uf_EF-?e77?4cu9Aaq-3eqHW}@UlBE`fVK`#C>6-%WJcDf_|x)y z)XLue_V&QPy{%2L$>tfRgw%aOTi3jk2%ok-IB>nXoFw!&bZqb6{$TPT5nrMO@l=!% z2YmtTI?T-1#@O`@m4$mVl`Whexn zO=6d@(feW_NY^pY)4w^u2^P%-3?D#+n3|l#NFaegh?Kj|7;(eODk_fQT{I#%OiAH) z)&3AjP;n?g4k2`?daQuAO8{ux|Lyg`S1CWCG7)qL1PysIAJCWnm=4(izlianjaBq| zI(DUs20`oZhSK)r3E1;A+}hga)~+_LI^HfXdAUZ!;@XeYYo8`>q*(<0n)xyF{kQPV zqdkIFb0ZrgJHJ7bZ#6>8(P0FvqKGz@(%MHNGRP3)7bbUeV?W2jb{N{Ow@QiK6m~YI zCVy=Y2BuyyoD4yS@?G*7{P>;hkLLdHrJ&KHIS4hil4==vR^coV`4l3a4fp+ym&!VT zb1_OoC@DYswcj1CcB1EIBo@4*^>Mgf0Bw*G>%HMyg1v;%w2#B+C(x;&xfQCK_aXML zU%eD=$IpsOb0?YHo;5L82cnN|Do#tmV3^6@1(wL&y zBB{h)nLP%91KVLBh%@Ij-h1176 z0)o!Qd7q~v^@2y2r_G_f`N7omZ)t+X6!U#EzCMt_JYFoATzBa${-o&JG7))k8sB_% z(^Tee+TI^`+25G05f>kSbaAG@pl8QLCc4yi+Jg_lRH(e3PS!{!$YQZ8pP5se6n`m+ zP9-Y&1p`V&r{(XCXG3+s1Bj4E}Hv~mQDOn>#gLM`q#IL2K`z=%qgPQ~5d1)kF83oxf3Fx|SvLDzp(pLB$_7A_Xtt{oF* zWBEG6w~t07g?6smEL|P&sb~}Wh+mR0qsq;@*vqC?fyg+BJ7~=^CiGR=JX?o$_DwuD z8ml~_tuQjh|4!FD1IcM%)VNDiqh2grJR9Ai$h^85?A9gh-RQL$u<@|<&}7Va;Z9Yf zPmnBqLPdk#wWG+zuxr4PAb0$e|wRi6Y-Ti4Kd_B@1GQ-#ZgjZxyIg0M3F$~Ev8m5?1V r Date: Sat, 9 Nov 2024 18:02:39 +0300 Subject: [PATCH 04/18] Update guide.md --- docs/en/solution-templates/guide.md | 40 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index 56bf92d1fe..bbef24f361 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -1,50 +1,50 @@ # Solution Templates: A Guide to Select the Right One For You -ABP provides several [startup templates](index.md) to you. It is important to start with the right startup template that is suitable for your project and team. This guide aims to lead you to select the most proper startup template for your requirements. +ABP provides several [startup templates](index.md) to you. It is important to start with the right startup template that is suitable for your **project** and **team**. This guide aims to lead you to select the most proper startup template for your requirements. ## What is a Startup Template? -Before going further, it is important to understand what is a startup solution template and what it provides for you. +Before going further, it is important to understand what is a startup solution template and **what it provides** for you. ### Pre-Architected Solution Structure -A startup solution template is a pre-architected structure for a purpose. For example, the [layered startup template](layered-web-application/index.md) is a great starting point if you want to build a layered application codebase based on [Domain-Driven Design](../framework/architecture/domain-driven-design/index.md) principles and patterns. +A startup solution template is a **pre-architected** structure for a purpose. For example, the [layered startup template](layered-web-application/index.md) is a great starting point if you want to build a layered application codebase based on [Domain-Driven Design](../framework/architecture/domain-driven-design/index.md) principles and patterns. -However, starting with any startup template don't limit you. After creating the solution, you can add or remove projects, layers, integration packages, or even create other applications and services in the solution to build a microservice solution. However, if your purpose is to build a microservice solution, it is best to start with the [microservice startup template](microservice/index.md). +However, starting with any startup template **doesn't limit you**. After creating a solution, you can add or remove projects, layers, integration packages, create other applications and services. You can start by a [single-layer application template]() and convert it to a microservice solution by doing these. However, if your purpose is to build a microservice solution, it is best to start with the [microservice startup template](microservice/index.md). -So, it is best to start with the most suitable startup template for your purpose and then modify the solution to fit your requirements. +So, it is **best to start with the most suitable startup template** for your purpose and then modify the solution to fit your custom requirements. ### Well-Structured Code Organization -Beside the overall solution structure, internals of each project in a solution template is well-structured. It is clear where will you place your [entities](../framework/architecture/domain-driven-design/entities.md), [repositories](../framework/architecture/domain-driven-design/repositories.md), [data access code](../framework/data/index.md), [application services](../framework/architecture/domain-driven-design/application-services.md), [API controllers](../framework/api-development/index.md), [UI elements](../framework/ui/index.md), etc. In that way, you don't need to spend your time to think about how to organize your codebase in every new project. Tests projects are also included and pre-configured if you prefer to build automated tests for your application. +Beside the overall solution structure, internals of each project in a solution template is well-structured. It is clear where will you place your [entities](../framework/architecture/domain-driven-design/entities.md), [repositories](../framework/architecture/domain-driven-design/repositories.md), [data access code](../framework/data/index.md), [application services](../framework/architecture/domain-driven-design/application-services.md), [API controllers](../framework/api-development/index.md), [UI elements](../framework/ui/index.md), etc. You don't spend your time to think about how to **organize your codebase** in every new project. Tests projects are also included and pre-configured if you prefer to build automated tests for your application. ### Library Integrations & Configurations -When you use ABP startup solution templates to create a new solution, some fundamental library installations (Serilog, Autofac, AutoMapper, Swagger, HealthCheck, etc..) and their fine-tuned configurations are already prepared for you. Also, many [ABP packages](https://abp.io/packages) are just installed (based on your preferences) and configured for development and production environments. +When you use ABP startup solution templates to create a new solution, some **fundamental library installations** (Serilog, Autofac, AutoMapper, Swagger, HealthCheck, etc..) and their fine-tuned configurations are already prepared for you. Also, required **[ABP packages](https://abp.io/packages)** are just installed (based on your preferences) and configured for **development and production environments**. ### Development Ready -When you create a new solution, or when a new teammate starts to work on your existing solution, it is pretty easy to understand the solution structure, design decisions and the development flow by the help of [solution structure documents](index.md) and [development tutorials](../tutorials/index.md). +When you create a new solution, or when a new teammate starts to work on your existing solution, it is pretty **easy to understand** the solution structure, design decisions and the development flow by the help of [solution structure documents](index.md) and [development tutorials](../tutorials/index.md). ### Production Ready -ABP's startup templates are ready for production. You can just create a new solution and deploy it to your production environment. It is not only about technical readiness, but also about functional readiness. +ABP's startup templates are ready for production. You can just create a new solution and **deploy it** to your production environment. It is not only about **technical readiness**, but also about **functional readiness**. -When you create a new ABP solution, fundamental modules are already installed. Your application have a robust [account module](../modules/account.md) (user registration, login, social logins, 2-factor authentication, user lockout, password complexity control...), an advanced [identity module](../modules/identity.md) (user, role and permission management), and many other production-ready [pre-built application modules](../modules/index.md) are just working as a part your application in the first day. +When you create a new ABP solution, **fundamental modules are already installed**. Your application have a robust [account module](../modules/account.md) (user registration, login, social logins, 2-factor authentication, user lockout, password complexity control...), an advanced [identity module](../modules/identity.md) (user, role and permission management), and many other production-ready [pre-built application modules](../modules/index.md) are just working as a part your application in the first day. ## The Startup Solution Templates -We understood what is a startup solution template. Now, we can explore which startup solution templates are provided by the ABP Platform. +If you've understood what is a startup solution template, we can **explore** the startup solution templates are provided by the ABP Platform to understand **which one is best for you**. ### Single-Layer Application Solution Template -The [single-layer solution template](single-layer-web-application/index.md) is the most simple startup template. It provides a minimal solution architecture while starting a new project. Your .NET solution typically contains a single, or a few .NET projects depending on your UI and other preferences while creating your solution. +The [single-layer solution template](single-layer-web-application/index.md) is the most simple one. It provides a **minimal solution architecture** while starting a new project. Your .NET solution typically contains a **single, or a few .NET projects** depending on your UI and other preferences while creating your solution. -The following figure shows a single-project web application that has [MVC (Razor Pages) UI](../framework/ui/mvc-razor-pages/overall.md) and [Entity Framework Core](../framework/data/entity-framework-core/index.md) database provider with default configuration: +The following figure shows a single-project web application that has [MVC (Razor Pages) UI](../framework/ui/mvc-razor-pages/overall.md) and [Entity Framework Core](../framework/data/entity-framework-core/index.md) database provider with the default configuration: ![single-layer-abp-solution](images/single-layer-abp-solution.png) -As you see in the preceding figure, all the application code (entities, data access, services, UI pages, etc.) are located in a single .NET project. +As you see in the preceding figure, all the application code (entities, data access, services, UI pages, etc.) are located in a **single .NET project**. #### When to use the Single-Layer Solution Template? @@ -52,14 +52,14 @@ In the following conditions, you may consider to use the single-layer solution t * If **your project is small** and you don't expect that it will grow by the time. But remember that many projects are thought as small in the beginning. * If your project is a **temporary project** and it will be thrown away in a short time. It can be a POC project or a temporary application for a short-term advertisement campaign. -* If you are a single developer or there are only 2-3 developers working on your solution. -* If the developer(s) working on your solution are not experienced or don't understand the structure and benefits of a layered application, and don't want to learn it. +* If you are a **single developer** or there are only 2-3 developers working on your solution, and these developer(s) are not experienced and are not willing to understand the structure and benefits of a layered application. -If the preceding conditions are meet with your case, you can consider to start with this solution template. However, be noticed that your solution can quickly become a [big ball of mud](https://thedomaindrivendesign.io/big-ball-of-mud/). We think that only a very small portion of applications are suitable for that kind of structure that has not an explicit architecture. +If the preceding conditions are meet with your case, you can consider to start with this solution template. However, be noticed that your solution can quickly become a **[big ball of mud](https://thedomaindrivendesign.io/big-ball-of-mud/)**. We think that only a **very small portion of applications** are suitable for that kind of solution structure. -#### Can I use the Single-Layer Solution Template for Modular Applications? - -If you want to [build a modular application](../tutorials/modular-crm/index.md) and want to use that single-layer application as only the host application, then it can be a good decision to get started with this solution template. In that case, you can use that single-layer application just for referencing to other modules' .NET projects and use that host application for configuring the modules to run a monolith application. In that case, do not add any application functionality to the host application. Even if you need to make multi-module functionalities, just create another module that uses the modules you want to work on. +> **Can I use the Single-Layer Solution Template for Modular Applications?** +> +> If you want to [build a modular application](../tutorials/modular-crm/index.md) and want to use that single-layer application as only the host application, then **it can be a good decision** to get started with this solution template. In that case, you can use that single-layer application just for referencing to other modules' .NET projects and configuring them to run as a monolith application. In that case, **do not add any application functionality to the host application**. Even if you need to make multi-module functionalities, just create another module that consumes these modules you want to work on. +> ### Layered Solution Template From 2b699dc44a9a968df7416894bd0384f4cd1e6f12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 9 Nov 2024 18:33:27 +0300 Subject: [PATCH 05/18] simplified layered-web-application get-started section --- docs/en/solution-templates/guide.md | 2 +- .../layered-web-application/index.md | 65 +------------------ 2 files changed, 2 insertions(+), 65 deletions(-) diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index bbef24f361..71ba1c856b 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -63,4 +63,4 @@ If the preceding conditions are meet with your case, you can consider to start w ### Layered Solution Template -TODO \ No newline at end of file +The [layered application startup template](layered-web-application/index.md) \ No newline at end of file diff --git a/docs/en/solution-templates/layered-web-application/index.md b/docs/en/solution-templates/layered-web-application/index.md index 37dcc80c39..6dcadf7390 100644 --- a/docs/en/solution-templates/layered-web-application/index.md +++ b/docs/en/solution-templates/layered-web-application/index.md @@ -1,75 +1,12 @@ # Layered Application Solution Template -## Introduction - This template provides a layered application structure based on the [Domain Driven Design](../../framework/architecture/domain-driven-design) (DDD) practices. -This document explains **the solution structure** and projects in details. If you want to start quickly, follow the guides below: +## Getting Started * [The getting started document](../../get-started/layered-web-application.md) explains how to create a new application in a few minutes. * [The application development tutorial](../../tutorials/book-store/part-01.md) explains step by step application development. -## How to Start With? - -You can use the [ABP CLI](../../cli) to create a new project using this startup template. Alternatively, you can generate a CLI command from the [Get Started](https://abp.io/get-started) page. CLI approach is used here. - -First, install the ABP CLI if you haven't installed it before: - -````bash -dotnet tool install -g Volo.Abp.Studio.Cli -```` - -Then use the `abp new` command in an empty folder to create a new solution: - -````bash -abp new Acme.BookStore -t app -```` - -* `Acme.BookStore` is the solution name, like *YourCompany.YourProduct*. You can use single-level, two-level or three-level naming. -* This example specified the template name (`-t` or `--template` option). However, `app` is already the default template if you didn't specify it. - -### Specify the UI Framework - -This template provides multiple UI frameworks: - -* `mvc`: ASP.NET Core MVC UI with Razor Pages (default) -* `blazor`: Blazor UI -* `blazor-server`: Blazor Server UI -* `angular`: Angular UI - -Use the `-u` or `--ui` option to specify the UI framework: - -````bash -abp new Acme.BookStore -u angular -```` - -### Specify the Database Provider - -This template supports the following database providers: - -- `ef`: Entity Framework Core (default) -- `mongodb`: MongoDB - -Use `-d` (or `--database-provider`) option to specify the database provider: - -````bash -abp new Acme.BookStore -d mongodb -```` - -### Specify the Mobile Application Framework - -This template supports the following mobile application frameworks: - -- `react-native`: React Native - -Use the `-m` (or `--mobile`) option to specify the mobile application framework: - -````bash -abp new Acme.BookStore -m react-native -```` - -If not specified, no mobile application will be created. - ## Solution Structure Based on the options you've specified, you will get a slightly different solution structure. From 7a058e09ffc4c38c766a7b67cc321380805a0156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 9 Nov 2024 18:35:55 +0300 Subject: [PATCH 06/18] revised startup template docs --- docs/en/solution-templates/layered-web-application/index.md | 4 ++-- .../solution-templates/single-layer-web-application/index.md | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/en/solution-templates/layered-web-application/index.md b/docs/en/solution-templates/layered-web-application/index.md index 6dcadf7390..bc1e2cb727 100644 --- a/docs/en/solution-templates/layered-web-application/index.md +++ b/docs/en/solution-templates/layered-web-application/index.md @@ -4,8 +4,8 @@ This template provides a layered application structure based on the [Domain Driv ## Getting Started -* [The getting started document](../../get-started/layered-web-application.md) explains how to create a new application in a few minutes. -* [The application development tutorial](../../tutorials/book-store/part-01.md) explains step by step application development. +* [The getting started document](../../get-started/layered-web-application.md) explains how to create a new application with this startup template. +* [The application development tutorial](../../tutorials/book-store/part-01.md) explains step by step application development with this startup template. ## Solution Structure diff --git a/docs/en/solution-templates/single-layer-web-application/index.md b/docs/en/solution-templates/single-layer-web-application/index.md index 5c910b7bbf..d5720f5602 100644 --- a/docs/en/solution-templates/single-layer-web-application/index.md +++ b/docs/en/solution-templates/single-layer-web-application/index.md @@ -4,7 +4,8 @@ This template provides a simple solution structure with a single project. This d ## Getting Started -Follow the [Getting Started guide](../../get-started/single-layer-web-application.md) to create a new solution using this startup solution template. +* Follow the [Getting Started guide](../../get-started/single-layer-web-application.md) to create a new solution using this startup solution template. +* Follow the [TODO application tutorial](../../tutorials/todo/single-layer/index.md) to learn how to create a simple application with this startup solution template. ## The Solution Structure From 6c6bc263cab9f466832956761713211612e121d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 9 Nov 2024 19:14:04 +0300 Subject: [PATCH 07/18] added sections --- docs/en/solution-templates/guide.md | 44 +++++++++++++++++- .../images/layered-abp-application.png | Bin 0 -> 11275 bytes .../images/single-layer-abp-solution.png | Bin 28804 -> 17701 bytes 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 docs/en/solution-templates/images/layered-abp-application.png diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index 71ba1c856b..975dfc6c40 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -2,6 +2,13 @@ ABP provides several [startup templates](index.md) to you. It is important to start with the right startup template that is suitable for your **project** and **team**. This guide aims to lead you to select the most proper startup template for your requirements. +The following **architectures** will be discussed based on ABP startup templates: + +* **Single-Layer** (non-layered) application +* **N-Layered** application +* **Modular** application +* **Microservice** solution + ## What is a Startup Template? Before going further, it is important to understand what is a startup solution template and **what it provides** for you. @@ -63,4 +70,39 @@ If the preceding conditions are meet with your case, you can consider to start w ### Layered Solution Template -The [layered application startup template](layered-web-application/index.md) \ No newline at end of file +The [layered application startup template](layered-web-application/index.md) is a .NET solution that consists of many projects. Each project represents a layer of the application or has a specific functionality for the solution. + +Exact project count in your solution depends on the options you've selected. The following figure shows a solution with [MVC (Razor Pages) UI](../framework/ui/mvc-razor-pages/overall.md) and [Entity Framework Core](../framework/data/entity-framework-core/index.md) database provider with the default configuration: + +![layered-abp-application](D:\Github\abp\docs\en\solution-templates\images\layered-abp-application.png) + +The solution is layered based on Domain-Driven Design principles and extended based on real-world business application requirements. It includes test projects for each layer. Layering the solution has great benefits: + +* It makes your business code (domain & application layers) independent from infrastructure (UI and database) that makes it more **maintainable and long-living**. +* Different developers can **focus on different layers**. It is valuable when multiple developers (with different roles) touching to the same solution. +* It **separate concerns**, so you can focus on a single concern at a time. You can optimize your data access code without touching other layers, you can change your UI code without breaking your business logic. +* It provides **maximum code reusability**. If you have multiple applications (e.g. one back office application, one end-user application, and a mobile application), it is easy to separate these application's codebases (simply create new application & UI layers for each application type) while they can share the same domain and data access layers. +* Separating **UI layer** gives an opportunity to **replace/modify** it in the future without affecting other parts of your solution. You know, UI is the fastest changing technology in software industry. + +While it may seem a little complicated at the beginning, once you **complete the [Book Store tutorial](../tutorials/book-store/index.md)**, you will easily understand the purpose and usage of each project. + +#### When to use the Layered Solution Template? + +In the following conditions, you may consider to use the layered solution template: + +* If your project **codebase** is relatively **larger**. +* If your project is a **long-term** project and you want to design it as **maintainable** for long years. +* If you are **a team of developers** working on your solution. +* If your solution will have **multiple** web, mobile or other type of **applications** that need to **share** the same business logic. + +> **Can I use the Single-Layer Solution Template for Modular Applications?** +> +> If you want to [build a modular application](../tutorials/modular-crm/index.md), you may want to use that layered application as a host application. After creating your solution, you can add modules and import these modules to the host application. You can also use the application's .NET solution as a unification layer in some cases you need to write code that utilizes multiple modules. However, if you don't consider to write any application code into the host application (which can be considered as a good practice), you can use the single-layer startup solution template as your host application as explained before. + +### Modular Monolith Applications + +TODO + +### Microservice Solution Template + +TODO \ No newline at end of file diff --git a/docs/en/solution-templates/images/layered-abp-application.png b/docs/en/solution-templates/images/layered-abp-application.png new file mode 100644 index 0000000000000000000000000000000000000000..2f5058812f3078f31e49f9472e255f15714c055d GIT binary patch literal 11275 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 literal 28804 zcmb@ubyOVR)-Bo)Bq2x$8a%i|(BLGv1$PbZ5ZoalxVuB};O_1YK^rHyH13TwxA=YM z-1EKr^p5fRj~Y#Nb#>L=Yp*%iT(byK_#%OZLVyASfzYHRMU_AxxBw6czU?JEut(Hy z_cI7Y29gr}q~ex-xZ>_cxSK(9s}F}Dc^ca*66Box#$3^FOSyV+c>P22pUCxbxT+PY zR`xQ=N;aeLhrA;)0nJPH6j}a}Yun0kK_jkei+35uu1g`j+3QY*A5r*9BV%nBVmEuM z(O$llQi!FJ-k@7Wj(p6uSAkP)eE9=$@812ApXyUzGpg9C@4e@|zWxR&gS)Sv&%u0oul07%4VgXA;zy1$2Nd8|-?6t~qXbgy6V~#Zgty|~U(6(i6Ib$^ zwA%k>E)>+xWE0nG9f_S5+&Iv?4Lqy!KjR{G`zmq3rL8w|9I@=X_q~^pMdyZm&AhEc zSnk^iN5Xbd9(S_s=A|L&kC~;3j%`MqEwfFS2!`ydTq z`U)jFTUi$ORnj;O{hMy?Yaw=rNOzB9PaB>Y5248votA`yzq&DzO)u6Cc2ga^lbp+1 zE{A`0D~KtVF#lO zcoQATmp!1Sp(YZhAaZqTyb0Z`mXB4@J~D_ROJMa6s1c)#^5at26*4uu7M@FLp*9!Ng^F?P`w?(`IycCzhN0cnywxTA6G)3Tyl z?kV1f(vW}(8#^j;0?%^`nEX?sNFX$;gX<_~ME^;vCLnOLq_N=%;V7gX5;JnfF0rrL z?MmRPa6dXIMh&Y<=N(BW&tVD@<&t~z*tz*y-(&Jt>0r$cmr2G|5NhNk_4HBd$@--a z=(fdE&s4vO25J^=ew%i9#6nu^xQ`poqy=aQl#aJfXz;u$}?Qdb%7p%36Ee z3aaOrlg4RZx2wJ=pb_o&KNh;|wAfsZldl<_X1uu6Ub9%uc)V(Yv@l+r<45QSo^qsV z^-VQcdl+Io`k7>!W?folLO=I^Pfj6ioNkJ{A4b zOTIe>H6i_aG3^{nvy+EUTqC`fawTUjn9KSfS*GtN8)TQ{FI;46=w~0bi|;EYjBiz9U1DxKCtA;uE{;YXIj-~O z^_3H+oHCz2m_j$PACdi+4!4`k+Hr~1-yXt_MtnlDs@QuR%hDX&u#sX*hcBX0CkGY@ z+Ry*gBWumo*-Sm`uNHXLOQQ=p3dI{Qle)*~C)9gQ153!|f%IwL%-6nY?T=0{<{B!~ zP0fkp6J@hr%kr9zw|c?Oc&o$Y^zx;6f_8)gG3Vib}&=mU5kA7L_&uKZ(c zEKzj?Hxf^?yz|!51Zs^Oo|(lrl24h&49X+j`t{b4A0I;1FNPkSMV+2t1!^b33_*1p zu|DeoyA&5N2E+S9^T+0|uw6SbSN@ARb0tko4hM_tR+am1Rl0*~4jCum;e$ujw~CA7 zG=lw%_x6fJ6Lu^i(2xNNV`lY_02I$)e-+XKx&%k1Ztub#<;wEhcdYu&++Hi6JeJL0 z-czKCyxsIRd2b;Z85~^gyJ#RWRvy#T?Xs7s^yrtIeZMfCg)-hpH*4N)7Xc@Z95n@hd!v|qmaFj5;rMRZQ{9X~H56?Yr`^iY zdzVHiSw{!mgkGFai{&&B=S0ZK^Ro9=>FGjG&Wj`F_i+G=H4Rs^Llyg`{DYyL`%#E^ zm-OUhmbLcy&}B`V5w(cdE%neTgWebo-z}ci^n?#2eV|hN^zTMj%en7?9RNgJG|Y1! z%~lDH>{el8ZfSulRo4xz*P=#3PfUfH3Efu%Rm*|a>f0}NhYBt$c}! z1>6?WKfD_;swBNdv2PO>B}h2GxaXQxqnAf4n33M;;RAa^J{&#u>8UZW&$a*wAFYKV z1X=d2*+}_GwHc7~@5DA`L`7#N+NrMd7A|Ync){1?;O_ajwf0tsRaME2^7j*`L%g<_ zblnjiUd|2oA9^w716PaN6~1LsZgkua^V94sUPey9(6C6C~8M*GvIYy6JD9$gx4C{{kI!S{sRyK@G5@)ho zbLbD`N&yqEkcNdC@(}CX!wUAhT+Ql0Y%S(d8`%@;2=;2Yu- z5a{obraakYc5XNfy4tvy(v=z{KYcSaccHr^Jzgudnxe(wsKKXq>yVLNc}*Pgc!D@r zjE}QgR3pD?6wWW^Kr6-2x02*l2I||pEC?HQRSZ|7j5-M$En!Fwv{d~mIrL{s$KKe~ z-Q4RveyIIg8kz*Tf9~rivo#ZP-UpgAtN7ueroUr{?K(<6IcuH6ZkQ^TYDf2eVos;! zgIEy&RBApfIr8va3=<}I8*V$a>nXF!2E;1%3*OuROcaT+AC}`l?5X8Y^Y&TmUzEPnRA0gfKhKVuAu?2zwYRKze*2lsL5#33&J&U0L4Z^YW zg$*=-gmI%;;6V=GJrMr2sS4d(*dH4ohe0}EkP4rx68n!!yC5#>`O`ll7~Yq;q`I?_ zaGhG3H6Bh^2eWZB@_H>UWo2bdX-9atxUG72ly5%?z|*Q*sYQLxe$&J1y6V2W86}iC zc8!IFRndNT(ET}3ss-+sQ<{JLk&z!#4S@RQJ}>Sd^Hek+tJwg@#Duvi)reRYg8nEFvR($ zT37s7l=jc=nRt@vA*xjrZf>u;N~a0SD4s>mb}-}>%3EOq9`N(I`R@;F7S^!irk0l< zisZfN^M1GT6O&|W6{|65rE#P|=)1H3Y-|{^Ci9baj*gCQY;2sLSF8Bj*!=j>n*isi ztzAmeH}1DV6;uZ)vt^s-M?Y}E!hC0)*(;VYH)RrHCu&+4SE|;~wX?tA&e+@wo-Ao- zrt`oNKf_{Nulrg{loG}3v{I1w1KVyn7xHD1XN=yjI$`NTB7k086kAO#^Ig&H#FNue zi0@0Uqq>rbhiRNR$d7HBBp+WU74?qt`g%2{Jf$LR6fw~|&!%SdxbMNsZH$VoM9xmV zV5=oLBx!45>x#5s)B=~IKOpW#Bg-WIZ{M`bY}eoVx|&(XfWJbvbdQ?Ku0_KQONpHE za|dpKv8RiWIZSuK5rz(Bli*b1%drG{tiJPvfz``bb&8efNE+LYjaued5GmBDlRD1s zwokI&DHqMsC(tKRx4oFjq?N34=oQNPqZOG-R}WV~goyMAq`rFgG3WTMoinIcYnQp* zl491xZq>Ws;8wkAcQ3&#fPad@x-^EqM)Blq)9Srxi!>TC={vlnT6A!2f!8d9r{!Ci z%Z0~%1`db6J3sLFk{YwBT6(}%89;ln$X+`o32j?0>Rgc9;a6Uh8ThMq!3?$ zKBho0UAfB?`htVYWtnv|HJUxGt_pY)etf;Qo--$$X-O+tOyxwKw7E*~$EhB41cUk(pF$q&r61h@{s4?5_4}*+-}clc^LZlf7rKeFnRws zR8W-6THG3S$U2O4;SgJ}Bf}I3R!x8CdtY|et1&POS~wGHFHl_<&!R*~e-d?+S%+@h z+vKwmg)BR3kNJAKK{9tj`})LeEB5#I*B*AbU%!4W5lN&uG?|NWJ-CrZcor0{M9L^# zgYwI|tm_8s!lib+r041Q{xZ58wj2Rn$p5o>!zDK!09z0$GBAINT#S36+`?^nkSO7M z9=G;IR@UAV(Z4GuCT4DKt~HAA5r-y+$hH(t_^kAkKy#Vi#7<%7oK%-(MKmRlCyDXK|w)rF@1aPm%^nwEATL%UmQBfT`LXxV3zcm z9IOp*s7#2*b{2rt%Z!D;6fES9im#z|sT1q2=x=vR!y$eLJ%nn2463N-vxD+I~cHq&3&zBU=l0 zrYnLuXS+Y{B(Yi{2w;hMI?yu$&#obHd-YC zkK?A@FXAn4Jh>6ly=+ zCe^>KsL*{l>QpILrTcp@LleK{H4CR+s4}4G`F)MZie*;*)mD+)ro>W%oqk&^M+5d< z;Y~m63?tXsvTyT-LlfQB(&9HiEQrweslRT$sPAy`Wh3tuwM5!9-ew+W=0Hpxgzq({ znMvntQN!Dlv3(@<)#|E|-5yuCZ2Qm~UDmiE6?Jv9nuXxK7zq+O$utV~5gOz|n9b=9 zp!d+qV$_x2yDi-j)G1~E5=gVEFRL(Sk%hS!9Q;|4!wE&5@Iuz%LSEn(T)lxs=;|Ww z=My2^@$31I#n2Lqhnb+YydW$7eFH`(6|}BdKygmwVC8+9A_RZAUb9}(cs#4W%DCZx zweZcARg^2Jv*Mr>XqC-3w5fqh_enE4*iz20Lj-nC3sQcH+7l0C&D1N~nQby`(y%Ly z#HGe+l{eJ%E?#+*@bO-`90n`hQ#1GS>Wbvp3AfZl$efIw9>=c2gDY2T@pKXqbuyL% zrD*J>?B45UK?VBD(1Yo&A7P&p^7aE1)&kOGx(2cCQ%N|j-5PCrg6ggy9H9*C?BLxU zYFu2wYxMQ1{YIJhg*>S>GbXY%ELLFc$NIhV+!tzR^LCq< zXF#NdaOHr}X-UC6-!>&54EcyE%J#f&>#Nk-byLB|@t3ffOrPh+k@yDm1R?XFgGwi1S(D>FOT zqu<+VBKZB`*epY0*@YhV6EUuuhh$pc-GvMi3H)40@zF?5nCE8QE38Lf&DL^4B8WB@ zwc0<^3Z)5e4>yx#G?MXBWnMiVpk(Weo3Vn z50&2lL~>dp<{Ip{@ACO`)A(Y(e1P?%+4VJwYkp|2ti(oPz~5<)AS|KBE*n$rQI_E@ zNDA&fPz)RIWcW}bszvMA)!`V5)%6&0nW3b%HQvZFzbRB>TpNri=W6&2nF7yX`GT!$9R ztnH2VHq5+f!!w`FKVX-aM!R(^y2O2=983*nQ1$6*JL~)<)InK0Q!vFcVYQZRjiTb^ z#+N4I*eJuLc4;V=lW`d#!LIuT9+;vMiHnPiXI3_&p!}^e-`3h=Kgdpx4=0%*Q%es; zi~|P;!*=N|pASuc*~-mn_h>A&Sb>s_t?glAm)h6a*1=!A&QrNg)Kg0)YC4@`b!72~ zF=@VEK6Hx&b&%l|Qym?%Bb$YL=XNMw|E-_Oo%iPEUg-)w!RL4O&M3Cg&JqJB`KdTS z1bGUqkeuBx-{IyF>2~QdXvNnVAOY50R@aWwv0o z0O>AK@)+K_)L{Aq>4eXUy4n1W?mKuVQKa*VH$`n|gjUn7YkMZLhK)T27ni4MdsiWS z(8w-=7OyW;10pnNTv1}i?$%Xj!D9y12P?~*5tr>G+O12bg#$a>`H`d+uJva%%DU``s+I(@Ue^E6v)`N(Oq(6URRZC9eI z$|{KrqQx{xFi|T~sV~=e)s~Z^C7R^snkiDXS^wQ?7tdYSi;RrSUG)$ zspwc;TbpRJwz2WPoRm0e+>E@%RHdJ7_r5=FyV0{98cXB8zq?CJN)pq44XmW@ltT4$ z0oV@!6Xjk=y#A>D4oJHn=qLs?&N78I&cVO!sp#-gi&ct)NIdqATTXm-GhCTcA%SzT@d$fws1_l?WvO z;0X@_EMD0;IXTtUvB8OniB7yLyMi}O5ro_hOErw1JEJM=X5);EjE9SL3_%pYiWGZ_ zlKHwR5t8Duz)Ye3c65Axuwiba(!FsH-KJR=Vc)vo`+IVxq`aMVnxdvMO(NaeA|v#Q zg?DMM)Y4MFQBNAYeib|EaGM80`9*mF-r3o?K3urC-HgJTl=nH0%g)Z`UUj2rukYyS zsIGPZ#t{t-ZTYQj`2M5>Y1{pAOG!z7!6hCR{w3DFB(HQhpcXVI_D;FI8sSR|v8%b2>@Q8?`wGJT*&wM3Kb@ikRsf9m& zU;_v9kU-jzbhd0Am!UT*DyMJ18*@ZwY|Q3v4n*Oxo|~JS@700zHetK+PnYsdU+Km% zd~bVzDK2|>qvIC6us^L7*eS{48iTz;muZ$})Nefe{w*RsxN$gqsc=mg0KmGIoRFB8 z6hAiTh92tV(zs@4X3~XxVGqy?AS8G*Y}w^)Y>u|JwxAcgYf()eSH&|%(XsI5U)pAg z<@4mTly~a;)hb;|mO828x8KB#pyfqI2T zl+gI-uJ?h&DyvQWXCp`BRlF@s%lO;%;^m%ZAZBZTB<1h&)!OVn4b7I64zI5V!&9SI z+Y3&Z6ldhv_RguY87dF4l<5qhZx;3?bn6eCsELCn&a1x@;%C!`yxu|k4 zXP4Vb(~C27BBp;!F`g{Kf;O3YtU854k*dT98s%`I=eQOr}&wOJ~nLU|L@(E{$xFQM8_RqUL#m|DW3;CDx; zIwLqaIEYSPLIduCLBoGHN-eWPT$Em}2O75d^yvFh@E+Q6d#CRUDRZq*v1#pSeh2iPTYnkuu^n-{w)AIlpdH zp7!6q{Pm5u(mGN*6_}Wq({uGLxw%Hbs^ac|jv4TTk+v5)TkLq)Tkv+^wnb`? zrM$;|DpBCZL(A1IefK`#1o0jJCVO9_{r&yF6iy$x01eB> z?ts_e3Vn=#&%l;6EB%WHe|0B7V$U&90*jCzTa}4UIu#6YmLNN7`NwtVo97lx0)p}n z8*hF&B^blBDBl7L_u!`E>9ONsq~l>>!l%BnQdksN;Ipa2k{=t-uc`9;6Bmej^UJ=e zk@Qm2T1*Xy0T+`SJE}hoxoUAeIfg)t@TrN=CCC8{8#vcsZ+GI{Twe;|$m>l+9tC=% zq={TexJf*f{ze%`@R(b#DXZqy@r)JAb0|FL(;r=bPkf*5jRqn!c%A8qA_X^otCe67 zeLUStf*ERWLuJfhF5lGNq!5Q7FjzHM3O(r8A3o}2H^(4+vIa4z#6qnAAiP;|U0Zt? zThnRxa(8i2D^q(qPwMcxnpKz25|k6wzYCi<5IPgWD-blm{^43!zM|3cO&+cV4iunz zc>frXqg0fdmPSZG(7n#u!`iUoLfFG<+mOZ}CBdk_-0{RN)xsLiR`eOpuQXl?ruC7i z-C=te7&GsNC1Ug-Qs0L&K+PQ?grH?N}Z!XWXL9}QJ`OWUj=;uDFLuf{MROotqF+l zBx>BJ(=KZR>#rUkW^_u}tmh6_RaR7Tl?)UJe~AJagkY_6uRCguQ}yqV{ooa0SNc!RnCKU?6+U$U{{Swcax9SIa;dAR zd=+E0iMORjs)i_ZxvlP6$jAI*^z&Z-==rf6=dQ%gJ@c|oh2lzkwo(W?708`o>J~Gp zL(R|PA;8Dm=ltpRD#5aD146nsH>IGdp6{ig4qjA&o@hb1XN$S!RQNCc*k~UxwD|G? zwSXP&^&gOeeIMb(&N&!GBbHf?5%$n_Mo_omy8td#q=Pql?P^m5ja!1mqwHkba3X72 zRxATuG4afKaBY>^)#Cl;i`>@%yq8+i(!_AI6#1zgxRHN^?r9cYa|5lkr~9>Xxlu$G zc}A|;VrF?}2SQYNCf&9s4t{47$F{rSvA!Xw!4mbD@7*8MgtzK8AU0J1e7Q{%*9bGM zN{epoWmasi4*C@GiqxFf>QikXD$7~-^>fxm>MTe-a-73L3yLk?-rE5&P@uF9t?yri zN?HC;4+*bLu!&ZVPn)6VqRK`4l@3hKVtzz0ud*wRb z7zFpjwQ}92rpw(ME*o8SXtUi$_h5HjkxAKn8<$Z~O0yB&`)Ao2ATPNw!GTDvJLtJF zYR#X%DB3EOgzE}sIf)Yr7ctB})J>)suzpU1%wDMuqab3TNX%K$bIle(O5)Fi2rX5L zQ3Agv-_dU;dR%Qd+%C?i9NeSkl z7t5FaKpM`7fVgeyLr3%~uHf@0QSMz4%p7Ned^g8D;N*ao4~XZ0IQ@=qboKjt6x2JT zKI3gdkT6mop%AangBu)0l&yB*oC@vT_*%L)D$7suM~c^|JrAd25X;r08ulbpK)Lq*A5^ zJ3CljR@%F}oC0*C8|$J(YsHqDF{?TcpomNi{w-#9>dCKnp=h+u^@eENVdk(h^^h;O zOI#;DZ6MhPXMm4Y^ydM>cHuKxN|qS|jRu(Oi)liL%F{Y*hapZz$is7{QtSeHpW4Kp zm(|ASV`+ZJ?#i`XSGOZ!7lj@^?yI4#Uy|6YM{!J@wnW;}I8~oExc&w^F2RnBKhr5* zyE&eFKb*@?NgYU`>3s&b19nlc(^1KLVu)ayYtNIXX|E956RA+`{;Eyg_bSBQlRyZd zzk1nU41G^~x?H_AJGOl2{vP3+U;%KZ(kcKEHdWMU1-;ESN0s(~lj-57tSMEbYNBSK z$et|zcHi8%Oeo5~KbZA(Jy<+pnILK|ISaW@wNeZRZI#vTPDH*LV-CDyUiR9bsdFtK zA7cuzv-{m@racxw`1(XYtwfFCcty+c78cPDh=E`g0~cRV3d4~{uO@1sgqc4eA;Vn$ z?(~J^H{}OQ57pX~di=__JxM%}t1G6*Dd<9=h1*t$3a0&BOB6cF67<}d{E444j3TBA za39ehLNo!&~mE%`xpPc+xVZpqau(dMqXoaSEOeWcSP5=e%9^q zfqYLbSV82+1z}6XWD4C)CAD7yVCu3xeLJ9gbEPBr*f8RV6^hdJP?NpgbkNVoMaWyi zy%+1EIBQ#4x>l_48)X)#$4kjGNWVd?RDz9T%>88?MMG1^T-9dnHd*wO?+or1mtgu& zIB`m@mZ^)jPjM9-`+_kA3w|ZjTc`bc>x7peG1XS&mrW0x^cqs3jN^J~BmyI>KN{YI zAk5CDan<58SaDw@vB>IbrZ%9-^ zrE6*{wKAuL>*&tT%1R%G;XOy!IY|@v{i9K&jgIcV;1TM-3)7TYjU0)WE5$?_mF5`V zuIp1rxn4hdtIyotCTUEF2bZ*n;a8{j49tvDs3PI9iYhOkXhVh`>S|f^%Qw%=h zF$?bqJJ+@LToBo~Z7X>iGr}dTCqGiz;z@W}E>S!X_twkfyjEt@V$DOSRsuq!FOCi^ z0`EHcT-q|g#Z22J;x)K$dZDp|1^vY5*WR^MEg%{$h1S|c=jVL+^M1`RK2?y?ioyNO zr)SX-sGs8WqL2xMO+#IMoE~n!rQlM87L4#lhGeh<`ACX};QJ@vsSrtA1U&h(=^TCn z`4uV*Ku4Rv>M%!$4gt!)?wtyp)VZlmj+U|?d|yge#vNXK(pydbaAVLJlP=HjHg~CX z<$%kcX=~E$fccs+RJxVO!H%AKw;H7~6_|V*98r-8Sq}-P?|@XbUiL;#WF)m~XT}+F zrAAK9#^=2tS|;T>Bjr)DO1#z=`xRNwcnLE@$c5E^Y}&tsGdfObOrOx_WZ=8+;~Jh> zIi)}r6V=;SYIC-;KDQm#3-?X%E)+6u!USZ5z(~*KL4Fsv*jVg{U$^|W;-0fzR-U&7 z3Bx5EAlw!g2VO0qi<4&`x_-r{%B7vXd2P=?8`nw!qJ5D}`u4wTO#e}v{@XjK6^IOP zQ2zzsV})tOv${vnuAQ8{5MGV$=%+|#23j6+9um0hv>PM$AjBUJoOF{RA*I*oqx&d8 z8TZ(JzuprR@>_u_WJJG2t3jkO`71tk)*uBY5EC^$iz6=YA}CvP!gNQfT-s*kM2)BT zathTA)8K@;LIs}0-^(a5`j(LqV-2M33jN_WIKTC%?Nz0Y^De9yF$V-8UIegJPFk5E z2Hfz=bMRCsG8U!ibyi~}iZohgZCvhZdoyUM z-c|$@%JFO3B7qE}JE-3SJtXZFQyM!~UM_5G`-PwKUr>5T^0{C5)dGXF8EKY^8MCl| zL1h{9ERy6bSR3-5-=S|BP4cA!Wdt?$na%c5GWpF6yw$ZbyodPe*Ldz+ExY7MC?XH?_zJFmX0qX=A2* z-!^)OwKvbfKz;fO#_{h0^^Lvr!I3r4=>kKpJiH4TgnP$gZJgu4U#B2fE{WRRWimDN zlR0{Sv`YKp13(Sw4tkVC)&Ckc?0@Ob1t%oFKYd?2ZMhoEe-8!E8#OT$RV@mMd>bF!YD zchUIMFQ(<{=a~GENz8ylB!s7)hEWfe)7vlwN0P<`Kj(^`;sLpjjk7p)Bty;kI3ea^ zlUg2Li9p)V1Mj-TVf-q^KJhrZJ=<*X_+UBtZfeWS3MlcS#{M4n`*AH7M|af2TlB|@ zs#`EgjOhgpkr1=x_>GXX(ctNe4kZPF8s2PGoB?6Tru*@gAvj#KoXrKAo)<;hZ*ZXj zkd$5S{i`Y}fkrKVZJcv3NSIlg^W-J4wzdmZAeg|8VT^zFvIu zqn#^nn6i`$=*JMIS0N%aT>14t=36#@9%Up_N*K@g@5z6mr=!IoFXyD{gytI~8m&bh z$rRH>Z7o(Bqhq*o`-nXe^&+~^aP5S}SSob8;uQcBbn|H_fRY=@RT#Bd1uZ+%ckZH( ziXi02xI|0luM+D`OHqpl03eLph73qqCh?ZN^V=6ZW5$*4UhOmQb2%O<$s1 zBLE(R^lu08fHi6m#Y3w_85~@TE5Xki0W=&_Gpbaz!ukdu8yFHZ3+jkC3sYM4$^KTK zIV?EXQOXI0prnu@S2l<0MoH712Ol}p$dx}6-~?n~a(B?H__RYH)Fs-+b$cWamhlo4 z7I#vjhR|=Ia}}VCB;7|#TB=*Y?QV#t{l$^%K2IgrivW%mV^BXXkst{d|I*QnFh|M~ z$PFnORrhBAAnb@#x+qUIDUw9w?b8TLeS)Rd&NOnQ`CChb7nQ&>t6x4DI=}y0&C{BK z-nm$2>whZEBtoIt-`scqNYP2|#z&d_3K|4KtzIGdcR@b(Yu(a(2K-V3>`*2pcH1U2%cFC5lv1|ys1Zrr`86Tj& z2U55(zafN+*oa92Nx;}KZ*`MpFvIsh4Zalb_VR>!WCh$%^{7ZvAw7Z^37}!uHEBh| zox(3QL0-3qy7dk<`a_4rSP&Azz8Js)DpqDK$Uh6flYNGz;+JjzUN~|glsy_Uq2b&g z&2(8#1%#oBP5cITjeVrn>yyxS98uPaZW4A1ROaFFxes|X;j0cfQ~JH+pO(SAJuiT*Q;Kp6VZUc{XsgnvCS@}EaX{?~WUU;lR! zz)diLEfxn>z28T({Whq-Ig;LCdPu)#9a*ZoRu%^Cgy%+Au#E0V^n2j+s{@j0CgVBy z=Xc8oY)-s1N%hSibBzfui3lk+XOEgKdUg@pFXk6!`k{Ph1+b)H53FnIquK<}`OgQ= z_ED&nSE(+kyy68haV0N8jnRFJr!z^`1lWWUN^o!ebnb6#fxVnQ zqo26sTcs_S(7TG#MCY{0r{$`_Ahy7VI!cQR@GZQ*&(|%jurI8ml;K93x?X)|SMvTq zV&MD*Tg$BjIheV*YUrij-evyf-7mscQhPcx$?TmVEiCFE2 z=*?%-ehQ)2698)8#)mLW#Y@p#FmMe;-zE5g!v3^brdk*%n2lZfZ4Z!<9#ih4r`!(q zlSOx*(Ls*&C6WRgFu>BhzH*hSEkkbzWvD+jrzUHBd(~*&{nbu797gH<3IEd6F;75S zX548c#|dr_{T$pYxm$5&&Llu`z>#u^PX4J`>mU$4jix!HYv)_4+{)Pt;;MJDYHfU+ z0ZTw$-QzW)v!T4(YV>2BE<=uT6M6L+rq%T_s}9L8J;8D{=I|V>(XuLid+_cb<`63a zBe2?CYZQ zfSg^VN#0K}q})MWu#LBqDYaGL9C}g$Ueb(t;LIsy`zt!Vys;uV-6NZk^u;AkHuVK9 z+fuu;yz4l&6IS+7N9GB~pYcF6Q-mty9J(4XrmJ|k5Lt13x-c+*ionWUY> zf}j*WdCJVgL^=!fU&5i>KD~4ygA{Z~x-uKj1;_y|ARo12XDIOv6Y1KznDU{T9I|S+ z+{5FBaRIi_)F^_GSZN7BVh_#A!?#|zWOdvPkz`yLll1qogh)!KVr9?~8JI)^Dx@Lw zb9(15{oAl~L`TLgUizrX)7p3TeNv8_L+>rn4aA<0sq)G;8WN#D{1BAnT1Od7Egca} zwcku#r&BF7_0Ha6dU@*k2l9=xIFKvZ2KB?(TzJN88J_ADFF$>P?MEyTXio@`M86GA zOieR&MN~>c)+xXJCVBy8GwzfsY|7vN+CMHc#AJa^<_mmTMw)+apf!c@N3s@k{sw(}EkMbZ2_x)s=qxb<2v0Q%nhH1ga31mw4=`JzH4r zl%Ya)KGI(GoLmj5(_2;OL=nFG84Xx=q%ic47w~VC524~Hnz4pZE5v<`;`$6N=KWF{ zA2hSIA)E{ik`ysQ@Adro+PkWUy39R#+bq8l_VyPLhccxoIBBADuxO=AT#wZ;t29+c z{t!jnuzs#+Y&53&chClqJ^niP{+LFsawMJ1tMPLpNl}5N)~^`bYh2mNnjl4sD?(z@ z!!Sd_A(cRxWK&7S+}@aS!QT5AJV*2&nA=fDhz8QUg_4w+#rfdWZs~J}BFb2avy%w} z3go$e|E|$dt3ktI96p>a6F`KhQ=Af+qh$Gg%fxo05L*D3F^NtYT=4VEl0~8ZB9rFS zH+J{2-s!&wCbNhm0`V9HXzRZcnE^4V7heUF$4GummWL7als^0&q>w5X5RbC zApqQHPE_%vf>_XN-n3@Hx*qUam$q^;`<69ZB>k1|AwD=L$TO^c3z)$Ki`ls-jGv8o zH2?zyLyj0Rt-!9$^S6O6i5=R8hLUrc=06(SpkoD$nAR+NuR2uA+0PPM1(Y!0$n5&s z*YpQtu}Ac=V2Zf(sMR)wT(|{07f>%jGeSFZt#j9#1Aak$Yx@Dn9(B;f?uEPczl4*s z!s6}Tjro6^X>avotAmCnceXq>F6JN9^rXleI6e3adAMS13y|Q90q#!@M3P1KOt7p3 z0-obe?y?L(GEkPdid{u1NI@+0__;k@vxgjc{SG317-@4I+f5@~n6Sd6|!%14G;O-%(AmFZX#rKt#OTgt=x!>kSC zfRCsUfsgXKXVjQEBbmIPKe9%zCYEv?_V4AU{WPdABf&3gv#qo_5C0B+5zy14%Gv9s za3`WD&d{Xa{EOD=i;4p^j{;e~R@5AqFB(WqMDgSX?`;pOG>%9zKf*7s|Lwqe_2Xsz zXW6fTAWpw@GT#WSEEXXxUX3IM;eH&wujImLWHf{N6y!O=Sp!y;Ja2bDh|7F6<%Rb< zd=IE|jr(U`;*|?WKin?>gQ0B?2b^VV5s5M(o@n9rwKzyxv#Mjw_xAKFIsK^S zvl{W{kqxLp0b~|3S?$w6&;}G}0C|nq-VtH|agoX|n3Whz<$7aqc*pz?CR_vVg4o4x zwLIPe;^ZieIwDgM13A--TI6%8!LG;(1OS}&jd{sGd-|l+Fs=L1YrxY3N7#E8Zezql z6!Sp(2dsc-)>cfoMtA*KlNN|RSs*sG!wU*c36kdp{`y%t$s@JDYYy+d2JCp$ZT<}j zJl8_4Qs)uGrdF={oraSRW)gJUzrk{*g&&-=H8!8g@7LMQaiV1hAoY;*I{P$0Ub;HO zs%i$~{M#P)$%(*rva9R`)XH$9XK6vA@>`O1>0V!|DBnI|lvv^RqO0E&Kqtw8TjE9J z9&BDQK4#s)?lS$CmrSEJ&jp?tk71>el^5;r93VuHlTRI6I}RAl1^d2B@J2`jOo0D* zx`Jo}jzrTi?R4-n0^w{LoymZx*ve74hy+r*f{%0^$v-6dpS|!GBJlqwTk!wl68^6P z|D{<`NK5O5vGaNBGL?Us?o=F|eyM;8M8gJRJ}_trx5`|m>^OuVY@~mJ6BvpJH%S7a zFLM065rC0b*V-#0W801<`R0SsdFqU8JZQW48MFQYfNmjaLzIVt<^N_woutPM`|_M4 zvT7o@j~LyFSC+3y0H^6J#HLj}(HW<-)5h^8F6dJD&e zQHds;f27iqy@y9lstQdMs2_sxD?oKKZB6GSKgU2C{20%iH1^ACoe8&ngUlUG81)={ zUf-P)!{d%7_R5wMIHk;WlePOHiHsiPS+oFDs>CEBppstDO>U)b{enRI{IklyF+7LN zvU(7}LHB&jKO&U71R(O!3IQwgpOODBWc~jD!T%kb*$j@7HGJzTueZYe>uiwcbcTF< z<;;((eGg}ZRBe_g-A?0BoM%Tn`Em>OGFom0#mH03T2ck4G#jjZeVA%oyc@=+{hLbR z)byXfNc&NMYulH-_2abtQ!Y2l!|`y*6FUdDZiNs&dO#vg1yck@g)=f7Sq)p0UM_{Q z#lO7(VSq95j}j#|W#}lLW)~#O*iB zE$8GMOv|Ry(2IZYBdcO0S>{j+po~04m+DUb9m!9}xJ1n1HYobLztDhgpeG~{V zF#$#6jH0aXeY&~OSn$vIf%2*WBIAqR3$ez2Pj)=YuBuj3vr@#eK112H@79K! zY8T3}gG~@;LO0@Lhg2~a?9YC>uNdOaDB6q1nD_*5uC!J%xMAD3eh|nQ>GAUUUR(lU zgW2+jzXu$BPf*VJjS<9Gmd|Dl-Ko-08QGC6??ZwmNC6kk6Icqci9b7s3m%EFNJb82 zQ@?8$zbHBp;$|5{d2WS8lD9e+wMQoCh=yoc>(B&&V<$^`ca9Vvu)A>x)<|x3AOsQ@^q%= zWJlYY^a%3_^+1SdXEs*x^A!J?p)0neeM=omOJBm-P*=|G)tKY4GIeY3X7PRn253Pi zIpnN+yA|Pjy!P{Y+$W^xz_X{uq%DcfCI)|478_^mO82VN@Cnt^<>_pKYUmZ7BY;Xj zs$inS`Ap(z>6ArZNzKC2W$&Fy-=H1r!{0l7yN8h|+sY^V%`G8jd3iN1YsKI6>~+}p zO&E>VQvL-YXF7AXz#T}0@2dk{lpJo?>L^{Am8qRyd*8JG5gG`Ee&4o8S-$`4P{j}# zK|#M&7>@=#Jrj+;gxjh+iSZ83g{pk30$ebW)zk%(Z2LOBBf$tc;d+aiTbxSbWp+4f zB^uuR4Pq1J-E{W1kWF^8;#rKs;;uBTbWbV+Et{gL9)lgK-219Ou#}u1g?CtHnyp|zX z4rcPSQlNA7Jm4{9TH~69=ciZZP2UA7mdp}-u&mR{R$yddx%X<kjRK`R)d8X#*I-qyO?M_VHCYYMh?b}ev<;KHrXR%+gB!)xYx=Xr2B(`*eNJ~j~D@b>5Hh1{_?pf>H zb`!bS;JykJ%Qc=uaoKsX-dnyid_H5tSnE9imX6)cl_y~f#C%Kf4RMzw_^%N$_ zcAqRu9oGkl(Z7G2`54pUY8x0l4(Y^{AUJS>#&?fxmOPW~395S4*>^1GkHYu`+z3eD zlZ=2^0YpCP>gwLT@c{|Dmp_hI*ib;O0%j2T-P zKlEsY<363nY_d7uWs;$FuxLjW!@Oh>M?mZ+^DVZ~vuDux5j=mC z+?q!h@k}bh`v9y(&7@4lK%cw4+J|xK79)PJ60%1L_W-7z6C70 zUebc7PZ?tq78Mzp!T)~j;KGuW3Yf9Iy*+4+5%363*Qk*9jH_Pwk3&ETbd}GVN};N{ zy1KdB0R?1A8eM4m6*n}x)AAtylg63!^6C-W8bP)W%wVBhO_Fm!;Jpj){c10z>+9K*R=9jP~6 ziU*Q;uH8MB$RoJBM{`aaQPfg$#L-=EzAfW}$8s4dCmT_hEf>=5GJa1@ z?q8+z@Y&y;XwW+{;~w?+K+3I^8eb-*7b^YwxmxKY=psTEy~CSZ6ciNA3cW_pBkGh0 zeRcIeN1o0gO3e`c-mYmP_ywC8;2jW(ZB!C1XtXZ%cqi%mq?;+J#?QS$>>KF6N@tFF zT)a^vVL7x>g{r#oB2L~tVVm1|!N~ldm;1bYyYJzD;o;AaMwX|>bhkT#7_{Tk1Sxiz z?I6+0b7(m0uVaA*`=>$EZS&^HQ95wO{u}`~{kz|A@6<1h0wPCkDUBu5dnfjIO%k)b zL-`nmN}@cZ$Kz(geRyB>DR5w8JuPgNH3is)fl^b3MLl%!oVL$Nt|dkE4DF|(%oGhZ zF$Kjvc~rCQIH}e9g1-D37_JYXu7f<#Le*4z1lR!4SC4;g`ZknGDz*`(Ni1@yGxoCN z*^f)Euq@9Pyd>^w{Jt;P1`{+x-nxuOT4M?u{Zg_glj(Or8JoY)wGL4~P#i?poI!kN z&QaS@p~Y1xQ3E*(z*+nH`hE}&2;B#H8RzHcb8~aRlZS_gpY2SyUu~q%{(<$&*1f%g zRk-#$3~y`4TS zMkD8Wl`E0G_IW`AS+WgtDRM9v;1BUIDX)-BaigHje? zwDXOC6&rMOFNMEP=O^rgwwnr#Qs0}sdIkmtK0ZFcA~oE0ZF;r=D_7>}&IoHuarO%Q zwjp~1|I*atb%(eGli^~)1tf~jwE22VNOaFTwkwE(74POm=+1>D8XHrXa~7M&L0Oqj zFUDb^;Rr1Jj&n6Kxyo3NANQoR-yv>v>m4$)vnfC!BFc3hG1L{b!_eaBSH;uAKFASfi;_7aCpnadi3PvBv$9( z@GzK|4jAAx`Wr^O^Yp1XT#)$bDlv9WP2%?DQyXmItB$ir{}~;YD2b-{2Rl{-9tVWe z5>s(2{yD{Q6bksMeTPFkYEB-0HW8%cy7G;_i7?OmlQ>aFTgBLugyN!Utw-7DVCiS6rw%-YzOBiU3JOsgrHj>; zO6OO$FKUwWEu1ef**m*HUNtqQLIXRLQ-NQ1DCq^B!dgQrEYEpI$p2}@uN=mob>vQ| zaUfxM01kC(A<7vS4-1pb?XGlB2(-)cw9+ZEgUZdxbGC7ohdE}*-JyU(Q&Dwz6pB_O zXi9KgCl*3{!dck5Z~p>F&Squw6E^ZuZ`W3AUwKO=?|cIcr_K#WyJk zTW}02s!h({uoFdvXne8jjlraO{g+`(Wsb3us*;hDn)=woqp7t8W1wnKV?cFos*7v5 z@eV`{Uu4PHe)}^e5U`L-UI^t}fqo{{$;)j?mk#H7wTs<6*?ijza&Lg}!qJ&kqvm3% z^K*!x9;~oqu6*B$-aUIw zFH*SwCU;P1$l%e@69*II*PhZ!23CW%#H-onty*233TYG|v!v7Xe$feNS@DYMC3_-3 zLtQ<-xo(JA7>0`%B^oiV*>E2fRklD2(n z#ebh%DQ5A{j*U5keeS7lg)x8+&7Mr(vwFagatR6f?=Liha+-c0X`uxRl8uecT$^w6 z@laQWVsbZD=p{z@Yq45P(P-sBZ)TI zoYk-`!&(XC+Qd4F)krBv@WmWm)m6*6BEpE1}^FDyadr*XaWRxobTJjcR{?%?I=D6RGgG?d% zFW@HhxliDGn-l7Vbkm!d#qhL@TH7aJe4L#53w=t`{;j$iKG0GSK~gtu|GL)pt&3R0 zqtY(FmeMlL(xA+EERBKM*|KOx`J8pZ#}1|hgl^y8)}1lJ;I+vh;I=q)V-Aki@_Wpc zDLs$ zNDOXbPmIMcBd}Gy2Uxwj(=~()qPrfcnpF6*$V6$1kC%nBBt6y`fX&uO$;;;4pZ`;x z^cDMq=o_BplGDi~l2(39@GEa9FoFhFNF1x{eV-&_l^Xp>dr3#Qn~YvQ_$_?eXZQH$ z_6F++Y?iYWzL=@uk*7x|s$inyN_6n-JM)7x##EqNLE5W@dHOyNiS%Rb=*O;?Qo#yr z)Omjyo2HG!qpClX8dQ4wzc=3V5@0oNM&D#;d17e=NwJJY-B!WeKkfs7>=7P5c?D%< zOEt~Ca)cY{%at6v`(Eto(K4YC_;`a@`jFeT0Wdm`u{euoDxZvM;b{uhOs2?WnD~ca zLXQFMkVS{3v-p6@&fPQD6V@rPEEdn&KU>f-*}GbXg2uJ)$_j#)Qmx@5hcr!(`IliPTGz-Pd?-p-UYMATI2d&d(Jh{e~n( zQ?jc&{m=V%=bt-4*g5`j1>jwiMjO-(SkY1k4wdXo?UV!7g8Ol{k8E{#=onh*pJ}^K zH1u@8&O8|rBB}py24d$oQOwJNHcR!Z;n1mygDJW({0NqzBh3=qQje}$#48blcYcX4 z_oq_O+Jzt9(^0C&Lq>4(WShyK@%V!fX1T+W9B!ZLDMuur8(val(Iy_A&Gq&5^(Qdg z`uR&peERzH4@}^4C2(kHsC$b9@;etyX0ZDFl>fhPVE;K=0|5ri2e0V_AZE({=A34} zamstsiyVNfUf_j~8EnUuo*}0?y9vW+t`9G9fG^bA3GrcsrQSW7`@`8PYPB%Ov~)3D z=eX?fA6f`%=@A{>F|8qbG2n?eqjTs`K_Te8{$BrX?g%1)-`LAv4APM9A_MD4sbd&Oa?b{HHgXWaIh z@UBVg``KN+hXb3v-WG~bTO=!v%cB~o4AMNU5d%Kdx~ZILtbM#^)-6w8MXh#QuEzP~ zn?}K+I`iHXtNshzuQk#)AN6YWm-5uB!h_HtPE)E~`U`8`oN9Q4`bvmETrAi9A!m1z_U9vG5yc-;8RhGolF7S`YT>TB2% z{_NI)%vwJDjj_5NH)%6z#mVzZM((8?Lq+!Gb}`Im0$QG~t0`8>@x)>ydyspYGiEp{ z>+-0pw%a!4K#%-0X~XT`b7!OXtNo(yEDw{eHD{0o#SqZUJuAx?fx0wR6=9Zz#O67y z(5E8V|3GJ}?|z%D5kv=#C}fj-CjD#m_szL~FXC{H0&&`tjez%L_dDm)PpEHyWzQ>< zRab|Vz*Ny~GeL8E9{NhcZP`qA4#yMBp4P-Qch|d((o!GY7QaR@9M1~8di$;;D>#B{hs|ybE^d(*EYwhp%`P+Ax>?O zYC;$K-1Xk*OvP|lRW&@xMw>jEu`0PB=%$IW$~ngLhav&W#)$+4#?%z(Y5XIRM{bl> zo1B&Y{Ma#_!fp65`&HBd5y(D>zr&e)vV~Q3bzJF`pywYc5!Pwg*?+Z(m;KvHX%>{G zjHfC}r)ix?oTMiqjRDQ2H+vvx7j`oZo-H(aj!@J*#)^%nmHb8EQJfm{Mt;-{KCb-L z+@)dKdN22}C$;fGia_6Lm`BL&nNba;QwFR2&JwFPj``bTbEdrv$qNdl$gjf|5eQZd z(V^F)za{^Aoo*FpgFNkR5Vu$cktQyusUNmGt8SvQedbv8-%*QD5!bhdXho=AZ3mU4 z^`}0|c>cjJ-^tue^O{cM2*%`cTi1!m#Vh-vYJfJG?|+> zUN0WOIDPe_W}j@gn5j5YW800yzQN?Cm@{YI5_&f8a$0kyE&R(XvD738hl%0mKxoyU z@5i^_Zzsx&bjFc7Kajccy+R$JFucj{HkwtbUk_LfC`q0d)Y?WsaV^}KMH%fybd!6i zD?0I(iX+L(*fL<8I!Y6c@uw7koV5QJ3pX5>BB)df?B)m6*+kKy8qn?1vuOgDev_}Y zK#Su1*Ga1(g$)m#WuBV7UxJHmV)Kt%$FHLs`^zS+8pTrT{FyO|6tqN0P_&sQtGKHQ z5dt{|X9ZcTS>?qymZ;V3!yD)CXMPF^OEh@lqd#y~kHit3{JLGAwlwB2=I3-3q4Y_R z$M5XYGC%vwXPJYSI~*ro#w;o+iXgCXuaT=ze)e21z1zsT%q~#|kjql?{Fw`*1f`zb z_$286N)8`(uiixFS!O*)^mA4GOv0K-j`;>A%@1KFl{)wHjbJ1nk`iwPLnuVe#5tSi}wQM zXJ$*|{HAEnWo#-bIf*85;%)yTHeO|o{NotDy{#pV5aFFk7G`GiE8(cPceE|IdKf{- zaZ#c2OmF+uY($w;HX8c~=7{K9{1v2Sa~=uzpu74e#@shq#+(?42u%E@dGlz+aDc(c z%)9P|!(H0<0DoqRfH>?>6u+ksNEdP$;3NlV1pr~W|LF?3BZfdskl?luNa({un8b_s zcRGn?g+y*!-hz9F3sHMG$vuyh9*^k1Qd3)|EHWTKS~1L5okP@m#-8zlg6{ba!7*XGe^x0s$mYpy?}M+z}e)P zNp^WT?0h0?qcFSEaLW_z(m1k^oPLqo+p$9}-t>IvrwfVbSyt^Gdzgjt!|l4uJ{skY zI4b@e)@@kVm_Kb+GXIX3Bl^;Aii-)~QMR7Q$!hrWL09aqm8pF&QH7JyyMANoUe(@( zhwNCJ0R<`UaGc7|>ksrP*p(2qm=X`|Uv3#TzxEa}EMI=xZfWLVwvAAe5<^qE(}A7I z!S?zR(dby`VsIMY_#Aln&9@!!uV+fFBcMtS6mR1YwMRkZ5UL<$u9(^5STlBm;?X5X zXHOpovMaolhXKgzX|b~pelLa#EqCJ5$jOn3zJHFx&znAPd2->V9VLlGxcA^r2a|5g zkj9?hC%$WEaAvL8*1nT7#ftMbz^?t=uH0ytZ2C;cEKrHOlO7D1>O{Z14CNPu45c> zS}`=u=fFa3IygvDG>Ao#%Z1-*P#k_Tz89Rpw(0ordc>uTFLPkI-ZG|~{ zkuRsmAaGmZo&byJCo3SGLipA9>)3ni|04B2Uk_nO5K4mY0I3bof`FM4e*rUJ7WwqM zA^PX{X;l6JbdS5xQ`nz6+VbEjmO+EdfnSD#@a@j!%&Sb>2{)H3`bKLz<5z9M%#B)m zGe4ed@^8mms(9W^M13s%Vch9V<>r|!h(K_V4`FnS_IJcT^8z81SYYNU z|3p9y$mD5<*bfSr8jH4w=sePlIkot0Unvm&LPo{MJcOyd(7z*Ye@tE0`jR71OVx~i zgxF>LVQm0XFf!a$Cb7joDnIazw`LJ4n~hlpl7cwF>m20(|0v1+o9S=*-)EZHp`j|& zrr1^{RsY`NDm&gTiL@-D;cSF6V5HLZL+g8hC=#L;Uv{ir^5M8hWa~@0z~_?3-Hm}O z|JL=7AslT}_AE&_{G6feu@J^9e2B$}|G!6h!bh7gw9+HBSs?lqmdP$EXAc>sH4+Nu zLohPMzqVh2J}$%rpC1CJ6wCU(JsA}YQ$PzC!2dtjhIFSx-~Z=FdosU+C~Q94cr&4Y zwIn7ue2yZkwva9O20^@KD8>^{7FQNL^=b1{`mLO#i(wYZQ4^&(?_N# z2`GE4HM*zCA4)z{Ua>`Vj3IpZxRx3i%&{ex5K!9@&*A|>UEIzcSFbppfipH-M6Dh( zS*8=(3D#X9g-h$l4`5{&kX1+;f2+h{X`W6Z)K$ay;Bp!_z#m&Wg+Jrk(rc0jj3Tfu z{w?II>G+F+SM;;ykmnaz8)sPaoHY^mgJ4@RcRNf z<6!2t*2x9%fl9sySMBMMQEF>Z z9sC8m*5gZqSOPATXK0rD!|MVgF^R8PP}RsOU)OsuCBUpi20PewR;lVGA*(%+$1w^aecV1Vi=*`;_TyCl;q?+Aip9FP z3Z(aqnKc$TBa$!`vvl!RCJ2mits@U%@M`H_b#l{LKdDWmQsCYr4F`jrEEtU7e|b3_ zpeiuBVkk!lW>#>|PR)f!lMme`Iq>qtz~~t9M=uN#_4rBg>Hgo{VK6lUKH3@b1Pu+% zAH-CpX@6MW0sSL@C~V6PbMwNAiv9h?W;ZuC zJ0XJ>Pp5%o=6l*o4Zf2AfOVW3;e_p%5^qQi^z`f;9I{eV*`8wosO#cjnfp0bLPEmt z7{7MI{812~t$>Yd(j!5H`N5r{=p~ajuxX&FbIbZ1Yy0fl_vXCybWF~smKQgy@6R!S zxWHAK_IQYUxna>EYrLst&5d~Pc97!y0<3rpG3#XV*Y1%4KtynT3Ub*Ou)>-nJbQr(8C2ln@?89m`$0~V5Z(<(P zTbOB*oMygqCtK6!FtPSx-sHrfGElv`dxb_2tOLqr7cn}Z=;{KzutsN(#Ic1cW#HED zZraelT$#~*f1yMTNTHegY=S@NGbOFyLO?oMP_XU&i3O-saSuO#;+1`|mTW|%By+}Aq=4m^w*)RLzmp6>5uxi$ zwPmsj5hHsAJne=^ouWv8skWahGC(uQ`-o@OHnBVMeX!2x|>(ZK^C$?xA^ z0oTE8KX3{R21 zbI3gfATmTYat#3oN2|gI6X3TltpzuTj=>NBK5Pd4V}h<$L$AmY(EBR5Yd1b5%PIc9SbLl^KoT$w7@HAB+T*KhSW$kHk2N|onx z-<_#4kI-YW^v06OIJ(s>nd3Fp(w`teUri!l{D~1U(OJ@8*#zXQ zR?u&+^7)f!LGq$=BR~0*tpe;|Q6c!Dn4{yt;o<8os|0D<3=u6l+hv6weA^etwPv?O zNqIs-PcKpzj6}mvA>|glmyU6p2+t=HQDI( zm+>tCx8R7Ho107KtK=#JnL36j##dhKndN+SU-Rw*4RxV{iv9%5oMG<`EH-jo%QH&+Vf8mx`= zJ2ilY3!{7aCKj8xg7yL)$@cbkarlt$7w5VWT)lG|AxQC8zq}Lvt*W9BuCq>>~VN@5*?uO%_+aS(KqWaZGs#F8e~oU zpYYD{eU*TI0cIWW7yyk%073O*Am4_KD)zM^`I&}*_O8eL@@D8r~C3+kJSOx2>73Jj* z14V*GJN&P7ECf=Ar`8X}^{wbbdMB;-qV`A1gd%dQ8}$<;kLw=GJ;)r|6Dh;wTC%98 z?-U;-v2^xa*!a8pJd+d>iuYlvR9{Eu=N<|)D0XC%&mZCQ_U$;Bxj^=5@?M7!NFCiT z%s>_{Un&N12J;7Uf_EF-?e77?4cu9Aaq-3eqHW}@UlBE`fVK`#C>6-%WJcDf_|x)y z)XLue_V&QPy{%2L$>tfRgw%aOTi3jk2%ok-IB>nXoFw!&bZqb6{$TPT5nrMO@l=!% z2YmtTI?T-1#@O`@m4$mVl`Whexn zO=6d@(feW_NY^pY)4w^u2^P%-3?D#+n3|l#NFaegh?Kj|7;(eODk_fQT{I#%OiAH) z)&3AjP;n?g4k2`?daQuAO8{ux|Lyg`S1CWCG7)qL1PysIAJCWnm=4(izlianjaBq| zI(DUs20`oZhSK)r3E1;A+}hga)~+_LI^HfXdAUZ!;@XeYYo8`>q*(<0n)xyF{kQPV zqdkIFb0ZrgJHJ7bZ#6>8(P0FvqKGz@(%MHNGRP3)7bbUeV?W2jb{N{Ow@QiK6m~YI zCVy=Y2BuyyoD4yS@?G*7{P>;hkLLdHrJ&KHIS4hil4==vR^coV`4l3a4fp+ym&!VT zb1_OoC@DYswcj1CcB1EIBo@4*^>Mgf0Bw*G>%HMyg1v;%w2#B+C(x;&xfQCK_aXML zU%eD=$IpsOb0?YHo;5L82cnN|Do#tmV3^6@1(wL&y zBB{h)nLP%91KVLBh%@Ij-h1176 z0)o!Qd7q~v^@2y2r_G_f`N7omZ)t+X6!U#EzCMt_JYFoATzBa${-o&JG7))k8sB_% z(^Tee+TI^`+25G05f>kSbaAG@pl8QLCc4yi+Jg_lRH(e3PS!{!$YQZ8pP5se6n`m+ zP9-Y&1p`V&r{(XCXG3+s1Bj4E}Hv~mQDOn>#gLM`q#IL2K`z=%qgPQ~5d1)kF83oxf3Fx|SvLDzp(pLB$_7A_Xtt{oF* zWBEG6w~t07g?6smEL|P&sb~}Wh+mR0qsq;@*vqC?fyg+BJ7~=^CiGR=JX?o$_DwuD z8ml~_tuQjh|4!FD1IcM%)VNDiqh2grJR9Ai$h^85?A9gh-RQL$u<@|<&}7Va;Z9Yf zPmnBqLPdk#wWG+zuxr4PAb0$e|wRi6Y-Ti4Kd_B@1GQ-#ZgjZxyIg0M3F$~Ev8m5?1V r Date: Sat, 9 Nov 2024 22:11:56 +0300 Subject: [PATCH 08/18] Added section: Modular Monolith Applications --- docs/en/solution-templates/guide.md | 44 +++++++++++++++++- .../images/example-modular-solution.png | Bin 0 -> 163117 bytes 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 docs/en/solution-templates/images/example-modular-solution.png diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index 975dfc6c40..eeca44afd0 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -101,8 +101,48 @@ In the following conditions, you may consider to use the layered solution templa ### Modular Monolith Applications -TODO +ABP doesn't provide a specific modular monolith application startup template. However, it is not needed. Let us explain why. + +The ABP Framework and [ABP Studio](../studio/index.md) are already designed to support modular application development from their beginning. ABP framework provides all the **necessary infrastructure** for [modularity](../framework/architecture/modularity/basics.md) and all other framework features are **compatible with modular solutions**. + +On the other hand, the main purpose of ABP Studio's [Solution Explorer panel](../studio/solution-explorer.md) is to **architect and build modular and complex software solutions**. You can easily create new modules, arrange dependencies between the modules and import/install these modules into a monolith application. While you can do all these manually yourself, ABP Studio make it extremely easy to do and understand it. + +#### How to Build a Modular Monolith Application? + +A **modular monolith** application consists of a **single host** application and **multiple sub-modules**. Typically, each module has its own .NET solution that contains the code related to that module. So, the general structure is shown in the following figure: + +![example-modular-solution](images/example-modular-solution.png) + +In this example, `MyCrm.Host` is an almost-empty host application that has package references to other modules. Every module consists of two-packages (implementation and contracts). + +You can follow the steps below to create such a modular solution with ABP Studio: + +* **Create a new application** using either [single-layer](single-layer-web-application/index.md) or [layered](layered-web-application/index.md) application startup template. That application will be the **host application** of your solution. +* **Create new modules** (right-click to the solution root, select the *Add* -> *New Module* -> ... command). +* **Import & Install** these **modules** to the host application. + +> You can follow the **[Modular Monolith Application Development Tutorial](../tutorials/modular-crm/index.md)** to learn how to build a modular application step by step. + +#### Which Startup Template to use for a Modular Application? + +So, both of [single-layer](single-layer-web-application/index.md) and [layered](layered-web-application/index.md) application startup templates are inherently modular. Just use one of them and start your modular solution. You may wonder which one to start: + +* Use the **[single-layer startup template](single-layer-web-application/index.md)** for the host application of your modular monolith if you will leave the host application as empty. It will contain some configuration code of course, but it won't contain any actual application code. **This is the suggested approach.** +* Use the **[layered application startup template](layered-web-application/index.md)** if you will write some application code into the hosting application. You may want that to write some code that makes multiple module operations that is not easily to implement in a particular module. In that case, a layered hosting application will be a better way to organize your codebase. However, this approach can quickly move your solution away from a modular system. So, take your own risk. + +#### When to Build a Modular Monolith Application? + +In the following conditions, you may consider to build a modular software solution: + +* If your **domain is too complex** to develop and maintain in a single monolith codebase. +* If your business domain is easy to **split into sub-domains**. +* If you have **multiple teams** that will work on the solution. +* If you are considering to **migrate** your application to a **microservice system**. + +While all these are also suitable for microservice solutions (will be discussed in the next section), a modular solution is more suitable than microservices for most of the projects. Especially, if you don't need to have technology diversity, deploy and scale services independently and serve too many users concurrently with a fault tolerant system, a modular monolith application would be a better choice to not deal with complexity of a microservice system. + +Also, even if you are considering to build a microservice system, most of the times it is advised to [start with a monolith modular first](https://martinfowler.com/bliki/MonolithFirst.html), then migrate to microservices later once your business and module boundaries are more stable. ### Microservice Solution Template -TODO \ No newline at end of file +ABP's [microservice startup template](microservice/index.md) ... \ No newline at end of file diff --git a/docs/en/solution-templates/images/example-modular-solution.png b/docs/en/solution-templates/images/example-modular-solution.png new file mode 100644 index 0000000000000000000000000000000000000000..49e7b72c08be85efc24ea36539519c024a5ce791 GIT binary patch literal 163117 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
Vph*wPm!m{DLWZw2qDU-L5-}HHL0l+Jxj7C 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�t<5_j6#kHRD5 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 Date: Sat, 9 Nov 2024 22:19:39 +0300 Subject: [PATCH 09/18] Update guide.md --- docs/en/solution-templates/guide.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index eeca44afd0..838af272c2 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -63,18 +63,13 @@ In the following conditions, you may consider to use the single-layer solution t If the preceding conditions are meet with your case, you can consider to start with this solution template. However, be noticed that your solution can quickly become a **[big ball of mud](https://thedomaindrivendesign.io/big-ball-of-mud/)**. We think that only a **very small portion of applications** are suitable for that kind of solution structure. -> **Can I use the Single-Layer Solution Template for Modular Applications?** -> -> If you want to [build a modular application](../tutorials/modular-crm/index.md) and want to use that single-layer application as only the host application, then **it can be a good decision** to get started with this solution template. In that case, you can use that single-layer application just for referencing to other modules' .NET projects and configuring them to run as a monolith application. In that case, **do not add any application functionality to the host application**. Even if you need to make multi-module functionalities, just create another module that consumes these modules you want to work on. -> - ### Layered Solution Template The [layered application startup template](layered-web-application/index.md) is a .NET solution that consists of many projects. Each project represents a layer of the application or has a specific functionality for the solution. Exact project count in your solution depends on the options you've selected. The following figure shows a solution with [MVC (Razor Pages) UI](../framework/ui/mvc-razor-pages/overall.md) and [Entity Framework Core](../framework/data/entity-framework-core/index.md) database provider with the default configuration: -![layered-abp-application](D:\Github\abp\docs\en\solution-templates\images\layered-abp-application.png) +![layered-abp-application](images/layered-abp-application.png) The solution is layered based on Domain-Driven Design principles and extended based on real-world business application requirements. It includes test projects for each layer. Layering the solution has great benefits: @@ -95,10 +90,6 @@ In the following conditions, you may consider to use the layered solution templa * If you are **a team of developers** working on your solution. * If your solution will have **multiple** web, mobile or other type of **applications** that need to **share** the same business logic. -> **Can I use the Single-Layer Solution Template for Modular Applications?** -> -> If you want to [build a modular application](../tutorials/modular-crm/index.md), you may want to use that layered application as a host application. After creating your solution, you can add modules and import these modules to the host application. You can also use the application's .NET solution as a unification layer in some cases you need to write code that utilizes multiple modules. However, if you don't consider to write any application code into the host application (which can be considered as a good practice), you can use the single-layer startup solution template as your host application as explained before. - ### Modular Monolith Applications ABP doesn't provide a specific modular monolith application startup template. However, it is not needed. Let us explain why. From 3488275f3553dd3003bc2f4e0d01e51484a7e1c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 9 Nov 2024 23:03:30 +0300 Subject: [PATCH 10/18] Update guide.md --- docs/en/solution-templates/guide.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index 838af272c2..aaa7dc26ef 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -126,7 +126,7 @@ So, both of [single-layer](single-layer-web-application/index.md) and [layered]( In the following conditions, you may consider to build a modular software solution: * If your **domain is too complex** to develop and maintain in a single monolith codebase. -* If your business domain is easy to **split into sub-domains**. +* If your business domain is possible to **split into sub-domains**. * If you have **multiple teams** that will work on the solution. * If you are considering to **migrate** your application to a **microservice system**. @@ -136,4 +136,18 @@ Also, even if you are considering to build a microservice system, most of the ti ### Microservice Solution Template -ABP's [microservice startup template](microservice/index.md) ... \ No newline at end of file +ABP's [microservice startup template](microservice/index.md) includes multiple services, API gateways and applications that are well integrated to each other and ready to be a great **base solution for your microservice system**. Here, is an overall diagram that shows the main components of the solution (they vary based on the options while you are creating your solution): + +![ms-overall-architecture](microservice/images/overall-architecture.png) + +#### When to use the Microservice Solution Template? + +In the following conditions, you may consider to build a microservice system: + +* If your **domain is too complex** to develop and maintain in a single monolith codebase. +* If your business domain is possible to **split into sub-domains**. +* If you have **multiple teams** that will work on the solution in parallel. +* If you need to **develop**, **test**, **deploy** and **scale services** independently. +* If you need to use **multiple technology stacks** (some services can be built with .NET and some others can be built with other technologies). +* If you need to serve **too many users** concurrently with a **high available** and **fault tolerant** system. +* If you have **devops** knowledge and culture in your company. If you can deal with **complex** development, build, test, deployment and production environments. \ No newline at end of file From c1a351502389eabc77e9ad38153832b5d4b216e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 9 Nov 2024 23:11:58 +0300 Subject: [PATCH 11/18] Update guide.md --- docs/en/solution-templates/guide.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index aaa7dc26ef..73a1bdc594 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -150,4 +150,8 @@ In the following conditions, you may consider to build a microservice system: * If you need to **develop**, **test**, **deploy** and **scale services** independently. * If you need to use **multiple technology stacks** (some services can be built with .NET and some others can be built with other technologies). * If you need to serve **too many users** concurrently with a **high available** and **fault tolerant** system. -* If you have **devops** knowledge and culture in your company. If you can deal with **complex** development, build, test, deployment and production environments. \ No newline at end of file +* If you have **devops** knowledge and culture in your company. If you can deal with **complex** development, build, test, deployment and production environments. + +## Conclusion + +In summary, the ABP Platform offers a variety of solution templates tailored to different architectural needs, including layered applications, microservices, and modular development. These templates provide a great foundation for building robust applications by implementing best practices and providing essential features. By selecting the right template, you can streamline the development process, ensuring scalability and maintainability in your project. \ No newline at end of file From 1a80cee44427c845d98cf274a0d95e5e791ae5a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 9 Nov 2024 23:20:26 +0300 Subject: [PATCH 12/18] Update guide.md --- docs/en/solution-templates/guide.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index 73a1bdc594..7ad0549216 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -63,6 +63,17 @@ In the following conditions, you may consider to use the single-layer solution t If the preceding conditions are meet with your case, you can consider to start with this solution template. However, be noticed that your solution can quickly become a **[big ball of mud](https://thedomaindrivendesign.io/big-ball-of-mud/)**. We think that only a **very small portion of applications** are suitable for that kind of solution structure. +Last, but not least, the single-layer solution template doesn't provide the following options/features: + +* Mobile application integration +* Public website (a second web application for landing page of your product) +* Tiered architecture (for MVC applications, separates UI and service layers) +* Separate tenant schema (for multi-tenant applications) +* Kubernetes / Helm configuration +* Automated (unit/integration) test projects + +These options are not implemented to keep the solution structure as simple as possible. If you need some of these, consider to use the layered solution template. + ### Layered Solution Template The [layered application startup template](layered-web-application/index.md) is a .NET solution that consists of many projects. Each project represents a layer of the application or has a specific functionality for the solution. From 4fa8c46508a940b6544d7b042fbabb28c17e4b5c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 9 Nov 2024 20:25:15 +0000 Subject: [PATCH 13/18] Optimised images with calibre/image-actions --- .../images/layered-abp-application.png | Bin 11275 -> 7923 bytes .../images/single-layer-abp-solution.png | Bin 17701 -> 11845 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/solution-templates/images/layered-abp-application.png b/docs/en/solution-templates/images/layered-abp-application.png index 2f5058812f3078f31e49f9472e255f15714c055d..02c8fa49a0dc45543b81c1b64de74708815aba89 100644 GIT binary patch literal 7923 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 literal 11275 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 TjBmh~d_nTk%8(LCx6kcb$yYL5!4 z_TFl5e(~;Sd_VvEuIuDV&TE}K=XIa^xu54bAv#(r)D$cfL_|c?YN|?lL`1|=L_{PE z*GLFQa-yLlgsC2BFbBrAL4;=zf&TjJ49+q&-6V;*VDW!+41HX%Vy>+Mw)i{ z{F>{a+Ar_b2NQ<)3^h$=iIBs&_x3ExR1xYSieqq#0O8PRVnG~(&*F8A#U*K8(>ik?VS*es-qiZ1$1!g;#WL@Rnz zrFPPAi)H@KJ?*ji%uGy$3aQRLng}K)Cdi}G>r70r_zxel_>mhjTmA~$PrF*(-n@SB z6EHpPFj*(>dZVI@otbH6ZRKZMQ{llOFl|$$W+sQ0^DwEyCDF!bAZ zxBo|hcvCJy{`5iaA5B^|Y6VS1fou~{MPM_1i<`-ogI=<%kxm@7{`+xfm%ge^ok&^y zgemH}lqg!-ZF|#qwBhQ+g?HP*ZNK?RR`020AEZ}GY9pR@Qob<$*KNt^2wwS475?)4xo>x zR!B2IXd&0b*!z=}7k1uw1s-&b#oY6G8j(p=_Glo2;k58GsSl zFDlS0$F({1FtJ0u7h4rjq|mv-$#A{%O3lUNndA8(_YP|^`WqW({Sx>50gWCy<6_B& zqhFap^FEl4kAW@V1#{NoO5C3LzC$t#ne@1`ww%%KtI65cK_+9doh$Jhy;1Q09|cH z^e<@2x5n0CV6yTtYA`YLY*gwWTP^7s2t8M1@XRgV{g6`F@?x!6lyiQxe>i-TqiaZ( z#!fSFSm|9!2PYp$=S1LGDTAUf*XX;o+5CE;uiU)g)ZVV8+pZF(3h}=%!`Yy;pU4^fr@?n-Xv~g zfrEIfoS?@{E#0C&)k?nC-xF+Cjeyjq2{yoz|bS3TagK! zPWYl4&i)vITpa=Xdc8b{q@3V}UJke!yvt90D}7x3 zp*wA&4S*^uTz4D&HM)@6>NzEVT(KFQ8CuUNNJif!JSA~3P zkE=`A833zNlZF_(v%8bCcov$C=gl-`1wS19RTKF#d>DJ3sx74qyO&nL{QDH(mOp>s z0U3w;HD(wq*WCdHv?u?Uf zlg_Gxj)iMNBCb1(xB^5j(x#*RB1%5n{;M_{DJfFq(Ib7Aw?t3b8vsNgviG4_Y1^S9 zdD><>A7Ub_8a~;v#Scjl!bF*QNE+HJuJ#vGs^9MgL^qxn)M&wllS|`1n7dIGq#(Gt zJ@-#EgmHuU)B@JdH7u+)T4lm?6ymZ;!+6!h(<;)qnUztLZN7F!dQP7Thv(ex@=u$T z;AqRXNOpOj!!M1fVN=^ZWPQB?Lu=A&i6Ux%c}3>=hYx;lJ{e>9lyFlYDYx16>dJqQ=XQDG%z;*Yci!AKBV+)CQiAlani+@m^WsWMjJqqOPTS$wHGyZ32k@ z-8|DWQ-G_Kd;$|TCAT&S+e?QOC^7`6YYyG-+) z7k)PV$0iw`ua*k&NPFOClM6Bu)Ojk5D?v=3&#Qd_A_;b?-RlU+=O#=~mPn$3j0V;NG5fNJROZ4&hVw({BVY-SiI)$#$cUFxLi}T+osisvidm zPN)j*y#~07IjKVKn-nhG#Bps@bl+sOAUw$mC`NdaS4)iMqK{>+D|+q2urhvS72=c1 za-OA%x8q5Xo_E6+S#(P?0JEf#k>TMlGvvWCCMn<0{)aXtcE8*$ru&c=r-ME2t=b{a z!h;oBn$1$`SJr-2Odx|6{bwCpXmUOv(y#U`6}r0FI!heS_uVInbG3iSS-(|`ha)bQ z+oL}{&#{mKRv)ql)b&0$*OvW&VVF$R0y0%!p&83D<{ zOh*J=sFA-;`!7<_*4#?q-P4VI%+D6<`$$DvEXyGB!WyXL6xU*bnYn}ndBL?*4qIQC%^DRJnPsF7izy2F{7n)K7Dt_57%ric0PUeu#KGv7Bb7+RK8ZZXwx5f+cF{{Cng%+A8Xm%aMyh2<}}d;MX9 z@Wr32CM9Pnf}6Dm=Og{JAI*QC)72lGMVv&XtBa$)nk-SGSLz=;Wd+k;F!Z|~wUYX8 zA4W>hHivdJNhEHb_Jm>GI3$ye0N=oDu5i|Cugs6*N*SE9Ytit%0rKek=G-8b8Br9zmMeae!_Pg|6~CJSUJpv9@mW$5kOk6n4{knwfha^K`Od#{ znT42{-P9#B^PP!EtmceSj{p36MrL+1jC7PLVoDqhq4=^^__#g_(VyKu|9M_5*V-6w zXudM6whkfO#d^SoTbb?_wwGs01>Ewh^Ir3KbOpH~@3DOMuTh{hRMZwB2ogFF7z0aU}TZB!sS>Bo{rJK$ZAI?eTV8UK8~^fZK{0|%6g0XB zalZwI(L+`tIfg-DDC#krsrf!(c z72~fL&|~@QTluqNF`WSKd!haFKOd(EF19R%uVCyH+koEII`T_=*E9Tp8fE4d{Fj%Zd5QMzuXl`Mz{)LX@Z zct);I{e z9(cV}3r(@-j?xuqvN|~a+>`2OM%C6@wPEb+F9V9G8C3E$LQU{9Z-cUtQv2sm0!yFb zK+w5v*iAMmr@8V@A-Xo4`-JCW`|K>%U^1f@@QqsFfHGbh#n&%b=P9Ho71FD8KadPE z4cT}boTCyI>R%20EpFLLr8@|AA9uC0(|7?q375|>#xee;E7ZT!tIR>Td}W?6)rp+1dOst-`QpWyDK#cZrP!O%857qgHk{7N>35N0k$l#|UN zAK}G15^Ud|x;Su$F!C~_kt$JU1O41yxd$$0Yj<((UVU2Xi|h~tC|8Ah3Ypvf_OuVV z!B9|ji9@Y4>Akc~9~J%L>^*)Z`jf+Wpee?GazaeQe|Xb0*at>T&YOXN&P_E2m>mx! z1|k!|Zole$Po$3w&=hE6L!fR6If@@iqE8SXKn@gzj_dz%6hK6a%xu2BuiI|MMYS2h zH;Zv%t@dm#oSLA|v8|DQ4L~yVD0!$2`pW4z!cwu{|6;P5;Kj|38f$zlZg9`^Y6}?d z)Qd-ML5YzJxgJ3pcUBb6cToIpwbih=6!YB-=&S)L#pl^3`p_^wz&?UluN+KY^ zyG=W!qmI?N)*{ag14xrmsd)9%%Db+;zh}>;*UABIu7(8 zd4VbqsGcf=1-S~JKCveRb{V)uRM4xTJ4r>qLL=yyw{d}pJ}i>qCg2ZHxPIN)e!1%I z2`2Y?=U2D2hKBd4U*pbrN=_MnD}g>iu*Q#?a{FtociPDigy|@C>s~k#EVdOFwwE~# zA+w#3b1IyU0eriT+D#}D&RwVZCUJ1#c8787?nksHzoZBJmfA*)1;sMZpInjc5$Ly zJ^1*Sw<(>!bV?l&n&NMJk0AQn&@8&Lw`Xi7&*Ju%;E5aOBUuvu9THdiw18nY=xb6a zmG8yAYfjx0l{VUHa_SgCMi^dwi;D48XX1wJL88LBWxb7bm2AAsM_Plkbdde-=NOP+ z(zL}8!YDm{&7)EhNrHqU#Y3&ox1GeE0W?n4U&TxhxjcRhS6;rs*mL7#jt>IM?3KzN z1ZpK~Qu_2W5-k-WB1o8pl))&VZqFgTvpyUMhjWY$*toon=j+Pk#J1TUdVacnB+Dryvx&NCb|IVDii*-Tvj;e>3mX zMG#LDStbWEA#Iw=^=fVt#T10Z$_Bj@rQtdW?DVA}Xe~jprWPMip@sqIliDUErahD)Mx#!;|!z=gtNZUgd*S!jC?aMpm5g1*k2 zRMjfOQS{9s_YHz5pKjLt4^aLK8^15pBs#P}{`lz`JR{zV_K^hn^IoiRE>+@{rCI_j ze4}C{tZYpfN;iut5!NyFesJ#vCG0vwnO68{lT(WE1#4z2!HO!m(biR^wv(09PzMIjO(Pjr%w=~vbvRwAI$ zX-LJmU9obA^+&INhF^La^DdKZDn>;29eG${@U5T;SUeTud$0fg^-IM6xA$*DzDy4w zu`ct!4=NJXD5&(u@bEY2H;$-^Frv6c2)hUfMh`_T-(L4Zh>abI^cy0}KCa%>?45noBEm z1K5qzjec^>cs*_hwCFE#Q3K1B&}bY`@F@^nY!DQdkJyTPu-V8F#UPwmc@0S*s$$ci zu(2x<&d=kIvghNh3#GW2(<@aKStakP-pmX`8VENj%cFAG-8vS%zb7AGC1=|!)UCv* zLMX!V+MrJ&{{r2m@Ba@Z|M_{@E988GCK_zQQ@lYNdL?c7ST+FC_}-v*4@~SQ+W-xK zar}TNXvSnY=N&2O7$+^d5Ig!np-Fkwn&stVZ=CA*&s|A+TLmUxwfCchGcrv)2`D`6 z*o333&mRnPzJ)WM%7M55isLHwW- zpWXwTo(}6XLGIfJQ6d!`Frx)7L1DQ~nxc(7et-fF*9KketfbeXD!co4chti78^ok| zXOwOLRib2xa)CCoy)vIMyASSNYnIDk`5=|{hjnEuWJnvO(GX;yo@EsEJ z!c|DFDCiU%!4qyRxKKDqL!cpbwDA#DB0-Ut1rC&JLP@cfH&{D}pUAMqtwH8RK>`m2 zM=?C_wx;F}Yn^PbFJgEQ8BIzJPwBzMRzYDrV>dE~!NuG|vGqh~LL=ln z{x(A9W5V(80x)(9(xCf>_%>?Wik`jee_O-Y@a4^G!5@Usgfn4oj4`#tjM}b!o7?M# zhEz|1{}2coH9T>UD~EIw5FpRwM~bU=!OF%ymF&y2M>?5=cMRPs;-D8m{i6;E+nmf1shohal+)cc^T+Ks9}Qi(?miQ~&i>ow22Jb;UQZMx z8wH#v4Bax*Hv!+Dx)!Du^8T?wgZxckRxC0BKAruhu;BiuT*t5m>-z>J;;@|QYhh(7 z4Tiuwp2abGmTyUCA$}b_uzr>dr*0;z3zlbfFS<%x#8s1D_rl6PwbZ zOo&Ks9+Fc;l^7=ub7IutZp}?egAu7a5~hlAek^9x9UwpbCc>b!4c!+WG~tRGq+$fV zu4c)falz|FkW;*>SEQ{mh6IIm15{E&2@zq5vfy$sk*hmujf!y~!ttNue{ ztZ<0VbnWO?R#a6?d+-M*a4{@MW5pbrjfgokX3Mt7sYg_i5Z5e1<}cBwzk?lp#0CDY z0EWIs-5pmIzLCj_G!SWOSu25e0t5$?wLQwxP1FUF!Y>bIRvziaPlnupr7K(EnrIf-pvind7x;Rxq(bboX)-`Gp+0O zUc>MgWcsBwJkaR&T>%|iphh=Lw;Qq?cVlXx|7CiH+f=bMY>~@RhT!K35mqv@Q2I>n6|9HQtyT4PiaqB`5NmJ6 z1b|N&?lzD?*8c+VKiRVX&7Bc?GS_{(p-HqwYdz(C2&8?@4*#a?MJbb1jb&4-19)pk z;SkLRJHgYpMQ{RJ6L0yEN1}{0})FrzeMwuU0GCD zbMi({THw<&*W99aIhd|xWTvu=bM4h%_Z~xg;niAr<7Zje=BGS%(Z|`@B=~29yLg|83eJFmAcNAMh2Oa(TqPoEI zX4N*H#jd$L?kvKmW^m!6vuRmY0l{lkZBq<~9 z-{9SZ^mh)02m$GGOh%U>8-~ejoK@^dND2vWK0>9c*mto-MHzc=xFMLY&E|XZc~b6t zsLC=YMci*SRMY(wyPHrlN@BNewAHf?e>?6Qn`2Tb4jXd{r@ec!#>EVs3NI63KPvT_ z$t+;gT(!tB zMe{o$X}%sF>9^4)-Cr)8_oBL4R8>Q{f|^Rw%`qplt4suXQJOG>aT9?In z-EBL@g!&qK&$3B5(gXPy3g?;L^ADjz5%G=yhe$;1WBUISJ`+-{z%ZvKY6+07<;EB$ zMZ#eLK>{kKQ0#mz-n{#(!p32=GQ@$BpdF9~y2Iku@EcJixH(84laM72B(X%0QKXMa z38LTN2R_B2&hz~AsPS;zeNxV0qE;VB*$lt;xv-f`0^4IK(|ov?g&xoz+j@Zf%Cxgi z1jKHxd}1_3J1_RU_OY|G>xg^ky}!1F09LfY4Zj<8>BP@zK_)yO^rZ74J#GW_!jE|0 zBf#!}w^FVvgJ&lPDw>nYqBi#9H3XkBR>qqEODM|Xn_#Bw*`;fvVjj3p7+_;1TRCi@ zE18=!Z^GrLro@DYWennzChnD32t6`w-+D0gl?l{>XW=Yi2o_VLuvre{6Z!42FMIn8Cp)7np!WFh z1V8a&6fnFIKIy%QBN*20*PTaN#*1)|}1x20Q*Cr+@U!B{|`1|GLvld51&1t5L_j+yNDJ`HhQtJTLolmbI|% zowJ`vU?y`QohWEmCEvQ%QW!xrWS@hkh@AjLc~f;0j>U+5MjY9PekaIUE82uNs5hBU z!V7Mjd=E&^%iiseX8Bz;A&x9yIFY^1zwjfk5dd130v0nru>NjSiUzTp#DWILcx{9Y zoQ<62Z48TYHWP*-a_;l_xi}BTFhOkSr+bTD`8y(@_q>N#07BC!{$*mV znvj}GCo@>HJ&zbvT#eXPGqxoUMNk*nNY80HsTmI8$=!;QFMjEgIozMKR{{yP;|Hk{&;6jo;Udv7vJv#G%xqoxzm+(X zmi)kk;B&3eMu8Qa7?N&Hx^X7v?0Ef%pRjRY^>QyjpGHh!cjU^tI4Lko1LH9j6JiQI_~x{F=p)-|+k``LE*n#KC5 z@}kpP03g9${Ex&wP0xDTrq&tXQKJ&x{a1iit7o}f@%#B@BHK!~Es*6xxM8q!Hpj~x z{3!vJxfqtUs3t;zQ-fz6DP$yyDSQ)boAo*9`%uWjbcGm_2XkXsi96}?6^I}UBLIS* zpUIqk1uwlzyV^5TSl5I|S5mm8=T`vDHjW!D-xF#!DzAEXsVJ>LX(P1U#Cxq-rm-F7 z{4W5h()L4|Sr65dN>eQ%X$5au3mgT{KYfiWsv?!F4n$aCRzA(&D0?+Wv#@E<4#ip! zQgd!V85nV89TKh^_8!5!WEiB;SG%@QXQT<-^HBb`oF}Y=f5|a1;4l*0nRlh&1L9|% zCO=^K*c$!7{i1p~JO4CpxG1CJtQq%mWD-t8N)H40lrft5I6ebcbB@SwCVT!&c!{0* zKxuvP*6q<&^VR!8#!k_)Gov!A$SWU0PS#N^ty;-W=RN7hO+Mq=PKphmYlulDAw%yy>44?zRCg2eW80B zjg0l5*6%2LZ>o93zL5db3z*g#E=kMFr=tRsX?xi~3U9S~XCUmNpt;%S82$_+;$Pdb zGh$`?nu6uQW8_2CYPHee6rk^Fp!@Xz=_1ZwZ-d;+5c*MAK8XI^!UC{!9ISmnBcZNl z@HW1l8q`b0SbSdgwfdelc8PPWh_*u5;%vQ?Q(q%PalDpL?|0`~3NxlP0N^*@Ivqqi zq#%@)=(~*M7i&08fu*L!=0O^x&2e^#T4=b(`Oroo#`6^zUxmv+=v5?%!?Jc7Fv|3H zKJK$|CwV?+pGrzRy}N^OtO>X(fkm}2xHTHR0`RU1I|Fi;QKz~_2TlrOs0BDFgS%}F zT9EGj6RkBtJ+Jz~>)~UT$aMenBV{FO!=s@N+w__RXIfwTp>iWiGt;DlE0*gbpsv+q zFDqMXtl>iCT*W;syfzp+5GDba&37XcI0ARoRbEdqPP4srP!EkF6lT^*D-Q`4E0Cn8!E%SvpKhLZT%xqkp?Qkno z!lFl8I_~S~Syu|}w`V1QgE8Ks_VA*(RKW{WIIS+ z!M)+u9*)wXse+KQW z4x*;JMH%L}zG3|VDVTa5LeXj@Dew9{e`n-JkDD)}rPUAE!x@OTC} zqul#t`Xj>Cs{CI+PQ~wA?oyrE{kzh9shuzDZDNF+*IysvDZDpt>Wm4T!3~%Xpb40m zAednri9j1S6a0*mRJ3I`L0pAl{=PVk4*2T23x<9w!_p$o((liJlUgPlkd=^3>xQX; zo!x7L-6KPCMe~1c)fRznJ!m65Lc|9B6^RimzoR1lQLM7X^+{g~;Y=gp3?W}EIaHg5 z_k z66=KZ?@N6vV>;m0n;bFzKJ~svvobkGA-Fg&4q5e$rx{V~4(clJ|L)uHi>!Tw*ZMP` zO$pNHnG_)b2iK0}Cgk!=BgQEGvWn6u*m>T{LG~tIE^{gg-`zrN@inqjP2u{x3V-7B zC+pOQ+I}!nb=+;@$@=v3H?vSxRjOZMXa5;~f>hj(8MM56gAVPk>ECsR z4dtnC^I?AP{R(jU2fM|hASX0j=c67x?jmL!|5Ya$iDjvOSLu@i!b|A8_maj=>s^wg zQ9>WN)`P}!!9nQU@tu9~s#(OAKw~|1YHfefGl}casXzeaxeg7pP^?r_uJ-Y6Q-9CB zO@rd(@SO)e;-%>qF{jVQs!ZxwE^fv6k(5I#4}J7cpKp%v%40RNGTB5xHEzZkbqn!X zP{uWgM|U2F87;HW)Z6Y^$R|JLc374O-uMsozkT1ooZ-53g?0Ce#`CTwcXG6`h+>QH z$$sv6=RX~@^XFPm2&AT_4%xb&;UlswTA<&F1UgSnKT749`>^;x5e3H0gz^U#=+g7Gw!{sr z;6=c>>V)c!v{gskIM!XoI5INQ)TLjUc?AHh`JA3S!>km;b{Y*Q=c@l4ecTT#P9OW` zIijjh5P#%AQ_tMD$1jlbJ6)ncuxq?KZbj=rb;&2`hEfd2Y4jIz3l2;T-&|c~U9_=- zUIU)u23t;O-X;=^4J^pGI9+V1ANr{gsV2*9XQU>KP8?7rGFK6zwSJ+&Pr zz_Hc8k32{k4PUS0QHcwRPM%>@nqfbk)`H`E&6ph$*_K5tG%pPZMa&fJQJNioJgjCP zw&wFYkNb($u>sn2C2jRRrw#FUq|dBD_7Fm-y%oHL(kXu{;XwBPNj+ayLl)+PSnbh6 ztz#Hx35SWUe~Odaa-E>(Z#{nmCCL*aAk7rGj4s!*75AtuO*C3ebq>&!3aIx?=b=!VvEf%3$b|lQ719F{izS6o+&Lf4@h52jlL& zDH6in0B=y(`nyWwk6{DP1^sw2Rr(g;8W|PUg^xe;zkQ+og?OnH@v$Y0krLe2))t2L zn*PK{2nR)(I9XX!M65c}<-7+#>(1_XHP($FzAp99xWF z-A@IW3`Y($UuCMa>&p4rNlxBoSF&ie{W#pTWX1CVWF$$ZEX#~;1k}Moon_O=#Lu0~ zew@r^`YeF0W(M+1mmA0^X#B*chwbRmUS5iQ%~mTb4lFintoVBkDQ*RTV_Wsy2*AnA z2Hin1a|R%E;0QA12oM2>B?cuuNsld0_Se5bU(3<9@LObwy|N3jdT0|K#$BKc6p9JC?ND; zjY0aq0R2ng($~)(`EBA3deUTuS7l+0``cgh9CFOrgh};#@Krif$B;yj7;7ERxjhjw zA!v2t?Aqh!%zjG|AlAPH>Lv+6%-+$goy5aB=&Oq21#@Ej-w|XOe}=3#luda z)OSL3Cr>cht&x%4#M^-Kt@7N~NL%d>g9&}CJ=iUi4vHhy&5;{Pj7<7K9ZfjBVq zb|>s;bjJ*PyoKmZmCMoWH7*(DcrjM{xGyHdg4#wmL8PYRf%#(#WBtPQ#b=!`$DleQ zm*4moAE*-lEjWey$P+dz-52sbTwX$#%3ih>2>P|W4gYyYUN{ShejBWjU|PP5&&?~C zfWF?@KQ>2|e2Z>>P3_YM?=wyht0;p$sqLO{HvUTa)abGjo?PM6H2t46h!x8^N0Yvh6GvNLwfrRp8;t>`PdTS%WBA zTNLr5_~RBJCL$n%I@C5iA9*zPJR=2VH}pM`u?i2c^$QhCRgN-xwL>U9K$mRt?B2By zjk{g$C9#^J?;+9g2d+i}B?)0YUJ+bB24>2{QVkWZBiXOkl$ePEv|>c@{r+2ely z#EKTZmAyTa`o(7%EsK;W<2;R>;@N39YRhZVZlxpCk2GxC+^^!v;u=aM?iYtfGYnz? z7TgwHz)fJkyBzVqmoK!P$T&M*%o>?WDumFlgxVl2O)MYfk~^u2yUTTQV!G+5KNE+mB21<TtkjGxWmAPq`Nd8Ruw)Y336N3S~hUH3xfh5J#0f%T7k0?s4#?FiG18Lc)+ zSKVjT?!W6Ee@PVbsb#g=Pr}Vd`%Y~h4JXQO|C+i$^Y{4GaEYV@Z36|mv0IGoavr(( z{dgW>BarGoucjgyXTR3z>`fBwU1h!)=vlIeiKaYCcylb|yQ=Ez+22>C%2nA~qnYgb z6SE-YcR(=Tgf{ErZ#Gq!bz?2}1>j1uc*$*FRkxx;khttqGaH}xqNhuL*bJgr{HYb1 zYn1SW+#XgOI{n}pN^50xyK8MMc z-d5y6$w8ybP{%kf^N{;?LdwS5D*xqHH;JF@DFV|K?y7#Hp6*p-+vk(C!xy#Z*IZ>7 z1er7KENKx}U$Pclt}bONaelX>UOkEuQ44{m>$7efJnnFxZe~T7hZ#ZN6w!an=|AW- zeHtQoWwI}#RV8WVW+?O{zz2G4D|3fn?s93ImGDg@uGKMnlqT~b zHd87tJjkrc=jn)qPS^e+7oQWwGWS}r%`vjcxqM+Ho<3cfXew29i>kqLN{F%acmLfk*i#P=1m z-{;&;h13O4=C?2%wo7FAfnG8|@ZKN9-}gJx%pbRkc=Lz++aKaJhcoTxrk@O-wvv{2 zAFdBS#LQCDz-y3d9CzPZP7{o}Df>-+kyt^oWJ0rA+CIa3ch;M>LIuKG6wG?t z?8^&6R1BMIo54xFIl0DCO z@g*_$@kQ|Q;iBP^%*S}!jG=ZP=P##xX+jRN`ZMk)TfO?B(yGKQpZd$Qc#kI+Lz&tQ za6lYo7}Vb?F(utNy&v}rj){9;b>jBHAsuRcx9g?T`qU=KPmHxl`y9nd@|aTU^JM{vICnNO<7c<;gdjL`nOt&aaTG{oZiX9yg!s~s*w(5UC_`vGo9 zI6_9jqx0(u&JXCme*2mjT_hY)QBi8mXh5lj?^TCAMMy41Ttky-#?6tMo142jpnYHz zRaI5>71Em(jmyDH0x$kB{e#ThqV#?4Y;&;JXdh7}-pv}7K~fq*Db1D;caEhUhe@VF zq2Kyorkum+jEkc}frY1OqWumrXX4v-x}yTC(H75k`udHI&Q4P2CumSto0>njVM0`% zU$iXiTTqvH<8tocqv%@@h)s-bgzA_xAd3Fh!P&sT;Bs$Lw=ThJyFdE<(oMOocWG4> z21p@;*ZE>+biFq=Haa?`#M#w#o~w|CE@KL!ejr;6he{BSDL@P2B34aG8(n4V)^li& zgO4yFOB@rTLGNPc9`;9ohyS&Dvf3Fshcl@avU)sJjk5}2CEY`K{G+RgsmStmr^?9jUjMZgFq(*#P#&#s0fSZI1RiA zNwK>~op>Lz*I47DKb7Ke?h@T=sxeyY><0@(Vew559Mz>Kaz7lx1_$44Ki7K7JM5IB z#rWPreuySzTn=ZiTdJPLW=xlp@bK`6~Bm{?jUUlGE^DTpN9u}tRXrKXlx!;Zf3v#N#$<*}DrbaMPL z4>#8hBV7-buh4)L{W-odIH$iS)~zyIUNu@A{Bx}5^VHVa>vK0G(e8EF@jU0VQ!}nW z&xTq~X_=!hwH=jWQH_eaUknGD!?P0c{YW;FBb2L?1{LdJ=gTKXgR!^hG1to!~cArk(k-QfB{ zg$x}lQrTMU4sI_+v($X_#|?Uz}R9$6}Ri4&!$vH7vkd$0#0mO0mt$B7$xLzT_M;CEMu7?(NdWpJ-DpTquizSSLyYQmYnxVV`1-j>Om!hyW& zq~lfp>9dYR6yyt*$y|apSwIv!)3VWw^N@RrYwW{CT4dW@(FATIEGXdg`I_WCW8-Of z#`8M+_T$60knhv&_T_-%_AsL#cNEsVtVlKq`^v5qULb(>9Wi33?7qlWZUTI zp9?9fHeQC?CG=a~KBxHK-6l)aOXZLjR<{Ka}PgDdJiXU!%u< zd3{rI1+`-I<9+GzA-`kF7-CNsvUuq(Tii}UACAiZG5z3bJ976IbOL#mOXB!pd z>;8O=yliY^v$NXnO~eBBdqb`to;PoWo_%&kth0EYN89zh&egYVmd=KanA>%~<)5I1RLYey8ZZ5`DWXV21iStpQrwAF3LRUtKYAW3rUFO z_9HjEM?dA2G<+>RJUmRy+h^BBd-!xS0;8|n<(t2$S9e(>JsXq3>3x>JJtWt1F?<3Q z+U)`49~Z5p&&jy^ky|;&G+$WyF|3iJhkjJxihXeyG)gtCnJ&Mqg(w;JExhOL)5&{P~B%d7y|iB#%37%d@s! z*D@Q=1XePRQW~;05+9dHC8+ZSD|a^;%QTT{k9DrXrw)c65r>3=C>~bQz(MfCZw%q_ zZp!$NRwat1(@BQSQSth!y$7P5SkISwHmNOP=8`)89sOgBVRoYO<(;_f5md4KcLHSC=12jhO zq#<9_JnXdaJDSrK(5?5-Olpe68zO7X#e(7owh{5M56MBsxKm>yjN098QExToYx0ez zl!nUH=mIoz9wIIGt>EF|dHML>Tg{9tE$K;~Z~Z99U*_?$AD7!KwpVI>2+wM7TC)YM zw6GTt5(<18Pc}26X;X|EJwn4RJ7vH#9^|hZy90rQgWMGi?z*%>si5&pOPvs=JE=B4 z@AR{HVQ41EW$)x+eZ?e$$ffBCd-+?gTTq1~fqd`#9gm(L`JP+vM^57l6CjMs46K*rf}2D2%@TDI!WA;WNUPLN z^=+sSJK7#qdp>G`Ij?x?a~fg+V+||m#T63N`HanBvKS3{Iu>_{iU79CYasCYYnIHsx?`5&U( zQRV7UN}TZp(G^2pH6u2nTchNuK<%5x$oKxvt~qwVUxMs~k=U8aFZ}o;s4JbLbKCR$ zu&Dn#&9f8I-R|aiZ|QmccqXfF$I2aWgArSy@4bJr>im4)Ep*^+sy*I#?RAxUZaQ4% z5{sTU;KreejdStjq}dxic?1{W1`Re1Bz@`_U#ANo<>js*4-@JDO91GmF@p37T;P3#Y$mR7>+hd*6iF@{1NEnG^wbYo10Z>2Mzx~@8Hu( zN{0|$Jczy_Pfw6}*p<#}JB{e<7T8JdP`=Btf-S~wS+i5#IXcoPXkZwuW*~@`%pKkN z%BcI*91AogGDt&C^KtduM0{JkZXKHAC;5wr<0+v?CBD3Ib=!C(m2NB<5XSOuWg?*IYyiz_Vl5 zq_=ON;c4``J^MiHPN`U%QwdTnA1djk?2c48s7;ue(is}{~UCV&TpT4?9X{)t23 zKrx|-nGR;~Li0O+_uKkDm}A}~zQ_e*PN!InQf)MmJ`Wz)6^ZRYG{OVZZi;Kt{pB?!HKZGhU?6c_Y>208(-U)pWJ-8ToJR_5UcBJzH#8F6sC%Z-V)qZqIx z;;YaV3`6qDitVb72<08DTpu|&~t~FXB)6! zKy)m9UyOBVzY&#cXB*jnjf$fMMXYO~r@#Lcj7Ys6n5V<&T2mvAcxAqf^TYmC;m@#$ z4@6AslHJ!Vq*94?rl<$;;u7d2f!9YAVM4;put2dRe8JEL|DD%q5;8H{=y(}#Fd9j( zo3k@L>o^PtC~8h|!WLsJ+zxL=&{q_Vte!1ou!mXZ^gsfe^*wx(ZUt}5*@xQ;Je%`t z0k}$rge&|CnQatsR7&aLRL;^jp@WXD!z_s$TylKdYnAeR>(EBo4~7Tl`{hK#OFZ1e z_(AnF%R{q;55kT7!=BfyjP6dfcd1XElKwGfFh9ST@?uB*& z0buC~SQLJ-h+G0LcdWGv9qjAt`<=r6 z-g=J1WFVoJ#P>n}*mvdNtIBiFIKLQ#vj4>2?aE1IPzQkHR!Xm=fi!xt@?GcWila0d zYN;eP6&Aj<`DOL2ZD6gmBYk2-5E7H{hd32G#uv}_S|?bZY4g6%k%$cVNebe>oKPJf z)>1M=iNK`8?+0qpQ?hz**PDP%F0xa!wKJZ2 zh(v3xpG-V5&%~0jmaz{wI%k;N7Dbqq3L?8rcK{Y*`U4AlV@Z}9?AKKl1tv#ESe*AJ z1U#=8bZT}+#gD(A3j5Ck`7E{f{?_dxaf=&$Zhm&u7q%MzF;& zKo)YB^bm3%hXCzFYpnI>B6fuKcD3i&?BSMJYhs|y&|j|ENVyQP)MZUAH5qNCQ?6=B zia2T4LdH(Yv2hbYPXaQYiP`g)?rk|3KUXv&A=fGMo}}Rn=Q+<%1(5Jcx_RKeV0B%7 zU|AEl`oW;mHwNj%dpI*|rei7)&4zCk&KRp_CvreTAm9_-jsta_L*)ahHdV}>PC)S= zB)vxNsKGF4gH`HyUZV*Xi97v;iHZwC{LSZm-~0izlCE9Y>bTQzn(vBAlqF=z1~Og} z7~^#JDqA~l zD>QcOp!~3t{_x#jNVo5jy877e0u(;obP9ZXI|sI2^-38nUwi#UG3r^_IQ8;fv7>bw zCIB5KS-+SWu@y%N3VywYK=Hn_OF;zKg?_{+^xO>OKn6Ws(H>+)ZZMY5<6T?(^Uw)} zZ|hBa2x{Ba)d!(l3wn^#qsK}0xhVt1XV(V@glEmJ%cQ29TS@fi)nUShGawKveY|Ws z@yhP%53}^WLK+@Bw_ORX%>14XNrqE-ce9`GkJ|NO!y_g*Gj%PWjsS;$nkE+EZE#%P znJEqd?0CNh;mMfh7|L?jS?xhoX?A1M#DJ}Wo38xd!3WgemdLeDp9l|+#&))3I5G`~ z1mAs7Ys_sfYOwul`j3_IMCaEc7O<{uKN{B}=!rdcvSr3D8~IGpr^TbG5M0|Yo|w*u zJluUfWfX$&^t8(q>~HuurJ`4d8%nsr17AgH`k1#Co|k4=%6G>S$3OcrC=zudhsRZa zOVG%ACywapflvE%hOP2e&%OcVXAWkBd+B5vK1ILB=phvTTM_6)pVb}GlFII|S!F`r zqX(g+9WJ=lV^pm{f=1xqCbb^5K!tZqi&U00fCVf_iz;9tpjr!FjhrbBmV88B z3;RRJ6f+~EMkr5@)f@T>^ewRL$RazC!8l}N0Vz125o=mxnBo03@v3dkil~5)UMdMyP-2Cr6M0;1?w^cRCD(JCNv0zZQW8q>>^w z5JfO^a`ZjF0K^p7y?>3g?hK>$8DHIM>$)gC~p z|2WEj^v-`%?zc`jkp~fLZg9fpH@Y2L5etZpeS>BWtg8~7nE(BqG;D+uR*<7~!0dW0ZJ8I3+W4qBwe`CecZ{GT1u67;ll+q4?P|h29 zfn_e%{aXMtz_ep00-$rtA)unHwB7?`~{ibO(@_cwxA$f-r6I+9^A zfDE$+bUEq}O4FfK^>C~;AYPJX-VzjKIQCDMqbB{StaoXUVvn@utZ5>B`gTRggs74> zk<$qW5{`moi;Ftf1ih)2SRt3}R}!sbgav_kFa}PWld~xLU{%>salPf!GiA(uSc>p; z#=I&KKl>wt{JhCPVK0s>aRM#y3cpKF5M48hIao0S!VDi@+P(2BnKb*_`=0gwg64h;=~yAEs_3BMf3#UZ;n73>sY^Ank! z-LC;}oGE(!;)_MU(dp2>&?$MM;y&)hVFz~PD}9nvf@9vJ{a*0q^NldBLf{t*KU7?R zvHfR5|63sgxr$$x-fX(_I93+*hnuzM`4#G3x*p28gA(zoBGL4tSMkZ3t?AA`ZECCIaX%vI3_$75y zH>x_c_&_*6Py({$TjjaNnfe}V;M6wAUN-mb*5<#yoRt`l5SWmSqw(bM~m2yeJ z0O=x;Z=8r&4rpY)p)@K~IrL1drE)ugMCdv)_B)7yhG$MB0u%BHs5xXIl(o=rL4N=A z1+f4(-4wY02@ir0VL}8i&H7dvDz7gAr++R8wfYO9*qIf0z$e#u9txJ08CS7I^cy8yS)Is1kh7bm#t0yv)0_*LG3*(B=?MvaV!pB)fy zE1Pgq_3W>NOipo=Nl{k-V8Gw%RQ|a12EqE3r9Cfpm1d!Os^PzB0UWE66+$tLMT==e zkr#iOc)Y2G=u2ux@+T-?m{3Yfs-!CBb7#oB0P1hOD8;-L8I>NtRz+)AJ1!$hjk%Y+ zFb14b8g_OWFcf4y@nDem*KEqL2gng}ZrPFj`UoZXYx}pa2xrNRCz7L?O@57t<^g-j zAHd62Xq-~W)bjx6eCvepK_v2)K)t&tM_bRqm|il>4p&yP4-532p)`RO+MpKSM>$gM zA7A``-RH|yJE%>BA^NY4eN5dVabv}3p~%3Kt~%VmH2NA;Li7=Vq}cv{ZQ{IU$J(dO zK_yG`Wdy1FZ-*3-C!yBLboWC_M!T>=kh7Py;iFY6OOc<*Lbd`S6R%-{av}piVhDE0 zt{i=(l+I2vxmEZ}#+B>++vX&rFwJs9I!vmU5F>Hnv01`oCqg?VJ`fL>ZQ+nFbbr?W zR-ICgTJ|NOwviR}y9m`a@aCoEO7$L}l%N6|f-D>NfJ`&O{LX{TVjv+Z9Z`a`0wt-U zC>Y2X5VsXO)F?G6Z*FjPWj!p1X?FTf6+TZW!nm3xJLn~s|8dcQ{`RLH2nFjX=K~x% zgE*OD%uv~@O)YS3jS^vRfWdf6=qD*+ny>1;>b!lD&M)A=sET(d%Pm03IcCEkK+ci>lbz0E4A>u*1HW z`NdjtvzeMWs;_9mM9x$QfCn0lXIlssf1&3*x=$Jw_9LtD^5`alIwg*9#~Mq=!nk@G zV6C;T>u4nE=)RgwJwq7Tc)%c}K0`SqJZs&Yj|f)CoP|-{a7LC{B70##k)?@La2)yg z+Pn?HO&S7=>c(`f2##Wdrl1+d*^%zM)6V_;vC6q&Bffis&fv_6RI#$72X5UASR4#2 z-U&~UP}GlD?}SY@rU!j1(i-E><<%Vv>>NP1F7;)FDB>99`c)nJIaVfU$}{18xJOZ8 z1|AlmfoQD1sm9$0JALa;w?B&;lBOz69h8A2@$?%a(HL0q8303@&la7lqA!%8xX>zA zE(+Q#r3~^To8O_iwJfMwRUO26=!ukt%-d&pfXz}zWOtPK2#-8#8mCjJ0VDvqh!4`; z#n2r+RDtTjNGJ}JDH;Rjs_g#AtSJ4KLxxV=_#~8*Z@8Gc&2&Q}0~vZGq1Gq-`CA=k zIv=j^^QMXwLnHC1?gKE5ZL6B`JKMgSjR>kHy&!$ToTkspbnsQo616UJ3s+#tgUxZQ zY4D*9DW+To4_GZ2x%(As`(l6SRf-1!5ff1M?c@pn%dp@-V8Gv)4t&8G7mSj=$N>}R zfD4SOr~&YoX*6UuVuG-C)s7YRh1Q5wt_mQn6#?K1;rAUiLJpeG(UH+pa3UoN<=kM7 z4ROT?72HG}C%U?~Sdl#v2kP{R)i;D9J!ycE%;<1J(7G<;)#DYqH3AJM8#wA!iV;hC z(JNQyZY?;8m_S@fzML6IuYqyQrnM!+aa@{~fm)O@rB16EBhO+Yq_Z2f^nWd->0Zt2 zz^~0mR57vWUN!8NEHo??sWJlxc+ZukM9aEy;-4a2?%IjGMp_fvb1HAVJAdys2)jnI zH?SJ;7OSgwVz(iJv<+sui|l`6FaHw=5)O@o**i|dMN&5gNF+R0heXPLfLK>24|Y2m z#xH>MgqUxG&zws;H~-Q>PX}+eP*qC*2{A@KFasM70Pk}~(WNCN&~uGx$V#wt4C^ZD z2EY@P%mp+Bg*h3>l1c4h$`ZKonD|7jQalsiJG;qEp+HimI_^V5kS$L?O+w}upnuwG zCJW}2lfnJaDXW1_@e2Ho{;Sk^;Lr5FoiLGs92X)c4ITh8Z5cv?z5z7h3o5#F;O!GV zLUN2B>+U}xM>FwzP1pD#s9DQ8@SC~O#ou+mYQdL&o!z_|ReLw;{pgZG@sKWVrgIA*;N$=mBCqK4K> zF*Qp^5r5>-9>0-!de|m8&73e`=3u>pjzq-(z+r$+XflaY+n@zmfsrsl;!rOi1^q!- z!>I%+XAgpOEg3khc_WywI;X-AnmUBex!G5?pqy0e01ADBD zk!u|LHLIr=Q3V-Dk8mP;e!$jpvz9e!RPX;f>|%PQ%or6hJDrjCtplzY6-WwIR72Mw zW@(jl`SVtb&vW4)FD!}?`=OXOZ3Ccj^JE&h5JKqqz-3B=B=10esMRCvlrXQw@TCfC zf{Qxf87JAwn>MEadiK{hW~p!{@3d!EGihE59_vDmbnLe_e>y&& z6@2+Qz1iFDYIg4n(-C0necWQHiAw}S#3WU|x^<^s&+TIHr~eBYXl2M(o97;~8ENZz zvoRX0;N|vh?ol+(Vr`M5o!*PM*jPs6U&G6VgBmk&YM*o@6vk z7)63*!tD1YFAPn@BonA0E>tUzvg8{?gJ=Bp*16CPU1bHNV^tF5>WB?Wt$3W5Jvt)b zb6<=0HRC%OI6hNX?|qv~trh=KO-G^2NulT7SR#VIz3>3uhuIeX1lsBm#L^g|ffJFxdFnkX zX8XcxY-6xX9ahh&66x)UMg{Q_>&dWVT5Rk6HV>}8<5^$dyrT76Z_C~fzL1y}`YbNf zHlrV_KRG7nPzE~klL~@;@FzsAQEF&w?p+GMH3gf!5-w5XTRo7b%}&*&wZ3_CZ?zQ% z2tPJM7{%ySM~An7PniAq#50rbJNH>m4Y|MhNn}6c*S%t zl7~GW7J{T2GHu2JZZZu^_BZ;xuvlK**}_fJ7Y`-q@dZ?gz6_+^{pg^K#k zE{6~**>`QSh-*arPDE~-1Bt*aulg%6%Tr8Y+nis1;woNv7ewkDF0|Fr8$;B*o#{y_ zUE=ZqrD2CdL;y(z_Nh-D#O-o0<9)rT8O=CfL8|#Rt-+}|Co(&3u3K!oRAC2m{pjdu z?+R9=Bn-EAviYbfayv1Y`lOE{Ry=n!K%QSCQ@b$m`;oqtyXD$MeFYOSu6Ws z&(^K=K6HXt@Asr>miN_HT^nWMWv6j@=C+%)ogK5Mcbk^-RvQeG#WId^5kG|O11P%< zLwXA)-*w+AAFZ@Clkf0 z1Ox)OSb;!dWP7ebRk}4!mf#tY4=Q z%)0g%M~LiUF)!6SZD+VDWC=dj&D+5E0W%){425OD0-%w_#a8$8t+jyYz^ObdD=(UN zO0fZ0fKHJPRHomq=i6d2SweT!g$?j9^7ccw78m(NQ!(LtXlttc38jGaWyrU_bD`0Z zx{MureMPLQGS~wvkA*lDh5`|S@aH4oQC&Fy!nL{W@Uj3^ixQ2v2{j7n|M~*~PYEVu zn%yilVce~0XRa4UHj&kSlwlQ-S&qBMKyP1*1qc5EdUVVQsxqid{B3nQLk@`HIwS!F zvq)d$9THkbC9iT0Q0ZTRLv}HZF5H&%B85^y!HD&$&&V1P-Vc^c1)N05bU#Qod z(YU%Cfg$z*;|Uv;J*=fRg|-;&1rDi4mB_}_?kRtO<7g`AZm5&cts>54e1}VgJD#GU z$Jq_)ex=~3KVN6!@_Sf5aDrAa872vCa;}V5si_(jtIZYb`1pyD~KAB(5RZ5)_+Quxf7lkP+>WgJkf+#z27fVkS=0 zir-YkTv}C0b>3lA(&O!hIHGFpQgJKKced83QP34CR!($w8Kz9cYP|hOi*aHy*lJE^ z*gWzexit;GSk>Y)SpIykCVmapyOzd!TbS%u{|#yJ6jzL&lN=rrYaSqY`rf^v;-$Dl zK8G{Qs{8)6O5x2)8&!tN3wLKZu|$X`Vu6V^aj9jT$-cV>}BZeX;vMyRNU!A$zx+MWh z4*Y{LADooXr?WA6g$rY?sTOBgdwi0Oy?4<-81hd-Ln-+pXuqH~hJCG%3U*!{4NlRB zp@TX-?|`9t^(G&=+X@>5n~ z{xF&2)xYYL_FJPX@^45LzQ`NCRVVBWjH7$JA)n0u>VUn2s=#B7<#{Wd^fM%3$PgGZ zIn#8S1J)Oe8l4oi_exeG-`RAE3;rF45_g^gNZ;a!rY}Q);yGDwtXq_gT81HpgH6&U zSlz)2P0{7V`a1uJ597!|kWZLjMt-w|w;?>7Sb$7@g5fKs06tZ1R7K|*hUcwQs%b(o zeP`j%cR`A`m`=sr{3C$u^YiYDxIPr{KrdieBn-%=9b7Odl0S}chz?60NkoSg57Swnzm<- zE%#(F|BFrnkOqDJZfS@LzxIZc3&BOQF0*Tj8KCug^lwiHfW#D=)+qrrxIi`wkXZSs zPtz;n{=0|jp_?IV^&eL+N_+8j!hgwHe|bcJcn73b;P61wFwCQkz4H1cok^$5%1)|g zi%A=_fg=SPGI~DEJw5z;)t?wu%N!OabiXpdMELl-2M1*=A6419X1=q|!!!cpnPtJ)4#jD`gbCf(*=^F7ZrAeLvo$_ADYXUlH z&D(EYVrL;eAw8jO7fNUQ{gn*2NFYKUdt>wCv0UmHy^9Wsfk6JiM5vV!hZzcW3iknQ<+z=N#}3;*%J3HkB8-Eay2KbvhKV7N$U#$gmj)MA zTnl9yTxCQdn09{KZ5xV6O%;xSy4``TES&=_d`;b??|naceBr&FSg-H?xH#>5)$=Fe z%sjr3_O@84FY=g>34X)pXH(I{(xG8Cijb_k%!@|Nm$W}TGocB0ZgnVSh}-4`v<}=h zHM&&D*03hXbH0eu2E;U1-yyk9RVrliH$s2`Y~;57!$}g!k$a=*(D9U05|zDpMS4CUJa<3;DqG*D7?2HmURJ@;pgtma^=^{(bP zQQT`v^;&EdfHh-SmhO__h?w5Jn_69)c@6W~G@|FbHiA)AD;7T2eh4d8m@*qgMI)$G zF?zngdNlOl%zLEwwrxKniQvfcImoLd7j7sBR7K z-;=XPF){UIy$EG}lAhI4b4VL!r5&bY-}a(t9X&K0t)3zIv@I}D_1l;)j_;b$thDM- z@9Do@=0f$)}}u#_9TN$E6CkM&OtGRiAN6RsQ$# zo(j)6*W>i&4cc-PUNBv@VQ3_BrZS^ie_awdG6K0edBN|9@KX|=5cV*vg$b}BlSMI| z!AC28rs>Nj2&NJ8Mda4ZA>Vm0H=&2pbe(Y%W=z>RX3ew-W4^BwV~4hS6ewMv9e-S9 zau=l!L`?!(dti`Y5e^B_>vFg|T9K;?p_{rgM6s+X(n=c_;d=8)DifIF@Gj(+Xmvd8 zHF1(2+684?6-im;vxxg2%@U@kx6(JsPEHJb>oiH{+N2MSR4it{1Rfo|UBz|}9~kUB z<@ijp|I^@Gt^vf*e;VWbyWa30?&Di$H(aeW9BNXvr%jYn<00HB)L-YwkIJNQeg!1e zfIV(7Nalz~r4aaNR~IiB=>mM**8K)jD}}Oolzdsm8ROih$I1Lkh5sKjCV2@UAhb$J z6JrX*bXVo5$p5EbJqXlKMkZ{rj;?DF((lPmUO-5@fgO=4npst8*k*$4YxQ@+dPv8u ziG)UKiT+)%%35V#=JrcA01J&5TykJXJK?C?Duqvs2{2W5W+mHHA`t*tyIw;J zygF0h-=WB*-EkWrv8JS8;YT$Oiv{Mg!1+uMJWY%|oPVXx{z@PI*ECFakrzBcf=0aT zT;f2kw)Lg_pj_F735c3wzir`ASphz1%AFEP(qjrllS0r?PuV#6HEAOLgi3dDh#^o_J;GRhM>PQ9~mKV zH2BV6^u?A(giKubn9;)E2(hlC*uo;jyJ4*d<~qK$iMgwCTCxD^i7~XdAQZHM#8-_A z%vzO0xJQt*973mti65O*LzZw@xTZl;A()239F78VG-Q;WumE@YPoz}w3c*%Z=%Ckp-Y0(1s#&x`=eJBQ8; z7JA=2mhw3o*irza%`Bj|4;RxR%6-76iJfiOXuo~^4^x=R{l8POCnL@)b#--s?ro!T zd}3l^d0B|{Q3PFaHQV0#Po@BK%Ly>CzO6T4qmU|J%Lad}Htq*xY;WJb)hO4wRD8Zr zG?1Ry986MF(md!UsS^d2k1%S6F_9E=zfm!AGeLa-NP(+BG(oL)9{~wv-FlnW`=e&y zfP>)UuHydf?Js0zIdIdP)jTYhO6gNq+>$elti^{AIYhnwNjLsBKzuaF)QkdRYJWJp z+@H3ctJxjTda7Y7qLW)_(2@6YJ11Zx1MbpdInAV^s{sY_7hVB?8MNQ#+i&tAhxXN; zS{bww;Zj!JBw|xTJTz)i^WU|EqAneqOcP?maB`7Uj@_s<)6&xFt>+7b7Mq+cWo41g zRQ0K3GkVocn?q+)RMNw`n5sn{zAVEVRy!w`kx0rdvJZSPi&Tayc5Q)_`d+*Gx?V53 zwqMOzeuyEQtu`5q^?g`Rvu&GI>$L|D8C|pRs77FY!K2XaCb_jH)zA&4h>^hs(HN+S z?4ebrSJu_nFT2cJ13U^K8+>wF4aRLdALi54bI&hUfZHww7&l>OnAD0zHxV4e1LA<0 z^+bF1)zJ?m-banw#NHRmo5hgyyY`s%l3bb2H91-d@f^vz2%!UOQV&c|-O!NJ1NPW4 zI3zsvxVui>MvJb5qJegKd3hJ-T|mo19+53)0P8)YmQMR3^lT{D!{i>Z`Ya(;yrY#a zFChh?3g(SyiD$L)N3EW+l&xDF|ALt<6|(=$|A-~ikHR@BbgB|U>HfkecpkS} zPFJ)Z*3AQ?4?|{e1}*V1@fuGHXT_3zFOmN9-Slz8dW?lDtO$RoW(6Y@NPhhNqSJUH z@Us0>N&HtcMw3UV0dB}Z|A_%G1NB=ShymRG|B>?lrn>(>PHLeMm7j&>yVLF%QeYXl z(P6wme(DUMlW0{7yzb|hxtLPL;ygMtcuoKx;bmc2k)hFzA>woSBXF(eMIE1LuSKx; z^*5Y|gFUt82T4ibEJH8f$K&SXw$sStw?M{R%?J#;Z*XaA0?t|t4-X>{yL~(B|NhF` zaA9%r(8d_{6rof(CDv0`P?)u-cA59mB}c`zb`!Hm^44r2{kA6Xj1T2nP8 zUmY-{+H>@gO5wbBd^za{s8{9L#O3W}49i_OgU>|e{= zz6Vvk6-|33{qaAj$ELxKL!D?sU?<=}U+#lG5d)R4?fF-R!!Aqaiyd84eKXu9H{sVU3L zf!Ls;Fh=rQ0TQ0nN(PtN}kair;;0wOhp#x+d1=b=%MGAtpdS{?S5{Udm9 zwHaQr{D0u#J~tO&Zi@ZQ?4=!wT4Bo7%wa-~{teN5>m~FQCBt`@`3uViRfk!>NP0&8N436*JO;S+DfR{WQ zPyJzD#N~qkJSng{^r{u54f0ZIBXbus5?dG3_n^7G+|c~$1qX^r=dP}C-5tgJ!0fR? zzA3Wg1gE4KQX*@Ep7-?x(C_|V_NEr2WdGdf;SsY%F6_4P zo!!cJ0i@k4TaPcDD4)y0&cT5fa9mGTU99C{YVf_ji=&ZPeio5K4mH3*cnI0>j?+oK z$-Y;G)HqDryp(70IwgQ60HMm2gA5^9FeXHbIf1B{ptvnhJP`;YtBhnH3boW5DBwWt zMZ~A|xwk{O@e?+$H4>N_-k{Rr0`mWN?-eo^44zhKOi;_-s^bZw|EY-1P3D5`_?cx$ zZ^~K+9r*{2ls+;$uuN~fM8E3J5E%2q(qaHBp-mCGK5i9%qIER5oPz`^<}=8gG-5%~ zeT*9b_9*`zbFs4RanJRx?R;RqvgPS$U&wRaROYs(e>~w~f+QiZT&P=P*syEQkv8hH zL)CRRUIM`Ekpmh@F#q#fX#0cRpFsgjpZd>t=Ho)1tEL}!li{tm6{`||;1OthGj$uC zcKb>129V~jl7-50(#i}6kWO}G@O*E_R8Ra-!=>3w0C2l#Jm7cfIhzcKYfyjHZlM2| esh>PU9k*5<*XU$20e}7kBrTyJULk4_@c#jn^XdHn From 284b3de6d4e37de47746c1351046a3f01304a294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 9 Nov 2024 23:31:20 +0300 Subject: [PATCH 14/18] Add guide info to the template doc --- docs/en/solution-templates/index.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/en/solution-templates/index.md b/docs/en/solution-templates/index.md index aba26d01da..700b45ea0e 100644 --- a/docs/en/solution-templates/index.md +++ b/docs/en/solution-templates/index.md @@ -1,6 +1,11 @@ # Solution Templates -ABP provides pre-architected and production-ready templates to jump start a new solution. The following solution templates are provided out of the box: +ABP provides pre-architected and production-ready templates to jump start a new solution. + +> **The Template Selection Guide** +> Please [check that guide](guide.md) if you are not sure which solution template is suitable for you. + +The following solution templates are provided out of the box: * **[Single-Layer Solution](single-layer-web-application/index.md)**: A single-project solution. Recommended for building an application with a **simpler and easy to understand** architecture. * **[Layered Solution](layered-web-application/index.md)**: A fully layered (multiple projects) solution based on [Domain Driven Design](../framework/architecture/domain-driven-design) practices. Recommended for long-term projects that need a **maintainable and extensible** codebase. From 3ca49b130bf41dd91fa69fe0325265af350053cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 9 Nov 2024 23:34:15 +0300 Subject: [PATCH 15/18] Update index.md --- docs/en/solution-templates/index.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/en/solution-templates/index.md b/docs/en/solution-templates/index.md index 700b45ea0e..b5bf59688d 100644 --- a/docs/en/solution-templates/index.md +++ b/docs/en/solution-templates/index.md @@ -2,8 +2,7 @@ ABP provides pre-architected and production-ready templates to jump start a new solution. -> **The Template Selection Guide** -> Please [check that guide](guide.md) if you are not sure which solution template is suitable for you. +> **You can see the [Solution Template Selection Guide](guide.md) if you are not sure which solution template is suitable for you.** The following solution templates are provided out of the box: @@ -14,4 +13,9 @@ The following solution templates are provided out of the box: * **Others** - [MAUI Application](../get-started/maui.md) - [WPF Application](../get-started/wpf.md) - - [Console Application](../get-started/console.md) \ No newline at end of file + - [Console Application](../get-started/console.md) + +## See Also + +* [Solution Template Selection Guide](guide.md) +* [Get Started with ABP Platform](../get-started/index.md) \ No newline at end of file From 0e7aebd5c50f3fcfae0fa3fed5ec60a427be19fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 9 Nov 2024 23:36:40 +0300 Subject: [PATCH 16/18] Update index.md --- docs/en/get-started/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/en/get-started/index.md b/docs/en/get-started/index.md index 1f8d864450..d8e1ce0260 100644 --- a/docs/en/get-started/index.md +++ b/docs/en/get-started/index.md @@ -12,3 +12,7 @@ Please select one of the following documents best fits for your application: - [MAUI Application](maui.md) - [WPF Application](wpf.md) - [Console Application](console.md) + +## Which Startup Template is Suitable for Me? + +You can see the *[Solution Template Selection Guide](guide.md)* if you are not sure which solution template is suitable for you. From aa49322a5f70463b9ac2fad9ee6e979b65a60463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alper=20Ebi=C3=A7o=C4=9Flu?= <9526587+ebicoglu@users.noreply.github.com> Date: Sun, 10 Nov 2024 14:31:43 +0300 Subject: [PATCH 17/18] Update guide.md --- docs/en/solution-templates/guide.md | 90 +++++++++++++++++------------ 1 file changed, 53 insertions(+), 37 deletions(-) diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index 7ad0549216..cb14f57ef3 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -11,23 +11,23 @@ The following **architectures** will be discussed based on ABP startup templates ## What is a Startup Template? -Before going further, it is important to understand what is a startup solution template and **what it provides** for you. +In the following section, you will understand what a startup template is and what it provides. ### Pre-Architected Solution Structure -A startup solution template is a **pre-architected** structure for a purpose. For example, the [layered startup template](layered-web-application/index.md) is a great starting point if you want to build a layered application codebase based on [Domain-Driven Design](../framework/architecture/domain-driven-design/index.md) principles and patterns. +A startup solution template is a **pre-architected** structure. For example, the [layered startup template](layered-web-application/index.md) is a great starting point if you want to build a layered application code-base based on [Domain-Driven Design](../framework/architecture/domain-driven-design/index.md) principles and patterns. -However, starting with any startup template **doesn't limit you**. After creating a solution, you can add or remove projects, layers, integration packages, create other applications and services. You can start by a [single-layer application template]() and convert it to a microservice solution by doing these. However, if your purpose is to build a microservice solution, it is best to start with the [microservice startup template](microservice/index.md). +However, starting with any startup template **doesn't limit you** on adding or removing projects, layers, integration packages, and creating other applications/services. You can even start with a [single-layer application template]() and convert it to a microservice solution. However, if you want to build a microservice solution, starting with the [microservice startup template](microservice/index.md) is the best. So, it is **best to start with the most suitable startup template** for your purpose and then modify the solution to fit your custom requirements. ### Well-Structured Code Organization -Beside the overall solution structure, internals of each project in a solution template is well-structured. It is clear where will you place your [entities](../framework/architecture/domain-driven-design/entities.md), [repositories](../framework/architecture/domain-driven-design/repositories.md), [data access code](../framework/data/index.md), [application services](../framework/architecture/domain-driven-design/application-services.md), [API controllers](../framework/api-development/index.md), [UI elements](../framework/ui/index.md), etc. You don't spend your time to think about how to **organize your codebase** in every new project. Tests projects are also included and pre-configured if you prefer to build automated tests for your application. +Besides the overall solution structure, the internals of each project in a solution template are well-structured. It is clear where will you place your [entities](../framework/architecture/domain-driven-design/entities.md), [repositories](../framework/architecture/domain-driven-design/repositories.md), [data access code](../framework/data/index.md), [application services](../framework/architecture/domain-driven-design/application-services.md), [API controllers](../framework/api-development/index.md), [UI elements](../framework/ui/index.md), etc. You don't spend time thinking about how to **organize your codebase** in every new project. If you prefer to build automated tests for your application, the test projects are also included and pre-configured. ### Library Integrations & Configurations -When you use ABP startup solution templates to create a new solution, some **fundamental library installations** (Serilog, Autofac, AutoMapper, Swagger, HealthCheck, etc..) and their fine-tuned configurations are already prepared for you. Also, required **[ABP packages](https://abp.io/packages)** are just installed (based on your preferences) and configured for **development and production environments**. +When you use ABP startup solution templates to create a new solution, some **fundamental library installations** ([Serilog](https://serilog.net/), [Autofac](https://autofac.org/), [AutoMapper](https://automapper.org/), [Swagger](https://swagger.io/), [HealthCheck](https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks) and others..) and their fine-tuned configurations are already prepared for you. Also, required **[ABP packages](https://abp.io/packages)** are just installed based on your preferences and configured for **development and production environments**. ### Development Ready @@ -35,17 +35,17 @@ When you create a new solution, or when a new teammate starts to work on your ex ### Production Ready -ABP's startup templates are ready for production. You can just create a new solution and **deploy it** to your production environment. It is not only about **technical readiness**, but also about **functional readiness**. +ABP's startup templates are ready for production out of the box. You can just create a new solution and **deploy it** to your production environment. It is not only about **technical readiness**, but also about **functional readiness**. -When you create a new ABP solution, **fundamental modules are already installed**. Your application have a robust [account module](../modules/account.md) (user registration, login, social logins, 2-factor authentication, user lockout, password complexity control...), an advanced [identity module](../modules/identity.md) (user, role and permission management), and many other production-ready [pre-built application modules](../modules/index.md) are just working as a part your application in the first day. +When you create a new ABP solution, **fundamental modules are already installed**. Your application has a robust [account module](../modules/account.md) (user registration, login, social logins, 2-factor authentication, user lockout, password complexity control...), an advanced [identity module](../modules/identity.md) (user, role and permission management), and many other production-ready [pre-built application modules](../modules/index.md) are just working as a part your application in the first day. ## The Startup Solution Templates -If you've understood what is a startup solution template, we can **explore** the startup solution templates are provided by the ABP Platform to understand **which one is best for you**. +Up to this point, it is explained what a startup template is and the features it offers. In the following section, you will see the types of startup solution templates and **which one is best for you**. ### Single-Layer Application Solution Template -The [single-layer solution template](single-layer-web-application/index.md) is the most simple one. It provides a **minimal solution architecture** while starting a new project. Your .NET solution typically contains a **single, or a few .NET projects** depending on your UI and other preferences while creating your solution. +The [single-layer solution template](single-layer-web-application/index.md) is the simplest. It provides a **minimal solution architecture** while starting a new project. Your .NET solution typically contains a **single, or a few .NET projects** depending on your UI and other preferences while creating your solution. The following figure shows a single-project web application that has [MVC (Razor Pages) UI](../framework/ui/mvc-razor-pages/overall.md) and [Entity Framework Core](../framework/data/entity-framework-core/index.md) database provider with the default configuration: @@ -53,17 +53,19 @@ The following figure shows a single-project web application that has [MVC (Razor As you see in the preceding figure, all the application code (entities, data access, services, UI pages, etc.) are located in a **single .NET project**. -#### When to use the Single-Layer Solution Template? +#### When Should You Start a Single-Layer Solution Template? In the following conditions, you may consider to use the single-layer solution template: -* If **your project is small** and you don't expect that it will grow by the time. But remember that many projects are thought as small in the beginning. -* If your project is a **temporary project** and it will be thrown away in a short time. It can be a POC project or a temporary application for a short-term advertisement campaign. -* If you are a **single developer** or there are only 2-3 developers working on your solution, and these developer(s) are not experienced and are not willing to understand the structure and benefits of a layered application. +* If **your project is small** and you don't expect that it will grow by the time. But remember that many projects are thought of as small in the beginning. +* If your project is a **temporary project** and it will be trash in a short time. It can be a POC project or a temporary application for a demo or advertisement campaign. +* If you are a **single developer** or there are only 2-3 developers working on your solution, and these developers are not experienced and are not willing to understand the structure and benefits of a layered application. -If the preceding conditions are meet with your case, you can consider to start with this solution template. However, be noticed that your solution can quickly become a **[big ball of mud](https://thedomaindrivendesign.io/big-ball-of-mud/)**. We think that only a **very small portion of applications** are suitable for that kind of solution structure. +If the preceding conditions are met with your case, you can consider starting with this solution template. +However, keep in mind that your solution can quickly become a **[big ball of mud](https://thedomaindrivendesign.io/big-ball-of-mud/)**. +We think that only a **very small portion of applications** are suitable for that kind of solution structure. -Last, but not least, the single-layer solution template doesn't provide the following options/features: +Note that the single-layer solution template doesn't provide the following options/features: * Mobile application integration * Public website (a second web application for landing page of your product) @@ -72,13 +74,15 @@ Last, but not least, the single-layer solution template doesn't provide the foll * Kubernetes / Helm configuration * Automated (unit/integration) test projects -These options are not implemented to keep the solution structure as simple as possible. If you need some of these, consider to use the layered solution template. +These options are not implemented to keep the solution structure as simple as possible. If you need some of these, please feel free to use the layered solution template. ### Layered Solution Template -The [layered application startup template](layered-web-application/index.md) is a .NET solution that consists of many projects. Each project represents a layer of the application or has a specific functionality for the solution. +The [layered application startup template](layered-web-application/index.md) is a .NET solution that consists of several projects. +Each project represents a layer of the application or has a specific functionality for the solution. -Exact project count in your solution depends on the options you've selected. The following figure shows a solution with [MVC (Razor Pages) UI](../framework/ui/mvc-razor-pages/overall.md) and [Entity Framework Core](../framework/data/entity-framework-core/index.md) database provider with the default configuration: +The exact project count in your solution depends on the options you have selected. +The following figure shows a solution with [MVC (Razor Pages) UI](../framework/ui/mvc-razor-pages/overall.md) and [Entity Framework Core](../framework/data/entity-framework-core/index.md) database provider with the default configuration: ![layered-abp-application](images/layered-abp-application.png) @@ -92,22 +96,25 @@ The solution is layered based on Domain-Driven Design principles and extended ba While it may seem a little complicated at the beginning, once you **complete the [Book Store tutorial](../tutorials/book-store/index.md)**, you will easily understand the purpose and usage of each project. -#### When to use the Layered Solution Template? +#### When Should You Start a Layered Solution Template? In the following conditions, you may consider to use the layered solution template: -* If your project **codebase** is relatively **larger**. +* If your project **code-base** is relatively **larger**. +* If your project is **relatively complex** and involves multiple business domains or complex workflows. * If your project is a **long-term** project and you want to design it as **maintainable** for long years. -* If you are **a team of developers** working on your solution. +* If you are **a team of developers** working on your solution. When multiple teams or developers work on different parts of the system. * If your solution will have **multiple** web, mobile or other type of **applications** that need to **share** the same business logic. +* If your project needs **scalability**, solutions that may need to scale in functionality or user load over time. +* If your project needs **extensibility**, which requires the addition of new features or integration with third-party services. ### Modular Monolith Applications -ABP doesn't provide a specific modular monolith application startup template. However, it is not needed. Let us explain why. +ABP does not provide a specific modular monolith application startup template. However, it is not needed. Let us explain why. The ABP Framework and [ABP Studio](../studio/index.md) are already designed to support modular application development from their beginning. ABP framework provides all the **necessary infrastructure** for [modularity](../framework/architecture/modularity/basics.md) and all other framework features are **compatible with modular solutions**. -On the other hand, the main purpose of ABP Studio's [Solution Explorer panel](../studio/solution-explorer.md) is to **architect and build modular and complex software solutions**. You can easily create new modules, arrange dependencies between the modules and import/install these modules into a monolith application. While you can do all these manually yourself, ABP Studio make it extremely easy to do and understand it. +On the other hand, the main purpose of ABP Studio's [Solution Explorer panel](../studio/solution-explorer.md) is to **architect and build modular and complex software solutions**. You can easily create new modules, arrange dependencies between the modules and import/install these modules into a monolith application. While you can do all these manually yourself, ABP Studio makes it extremely easy to do and understand it. #### How to Build a Modular Monolith Application? @@ -115,7 +122,7 @@ A **modular monolith** application consists of a **single host** application and ![example-modular-solution](images/example-modular-solution.png) -In this example, `MyCrm.Host` is an almost-empty host application that has package references to other modules. Every module consists of two-packages (implementation and contracts). +In this example, `MyCrm.Host` is an almost-empty host application that has package references to other modules. Every module consists of two packages: implementation and contract packages. You can follow the steps below to create such a modular solution with ABP Studio: @@ -125,33 +132,37 @@ You can follow the steps below to create such a modular solution with ABP Studio > You can follow the **[Modular Monolith Application Development Tutorial](../tutorials/modular-crm/index.md)** to learn how to build a modular application step by step. -#### Which Startup Template to use for a Modular Application? +#### Which Startup Template should be used for a Modular Application? -So, both of [single-layer](single-layer-web-application/index.md) and [layered](layered-web-application/index.md) application startup templates are inherently modular. Just use one of them and start your modular solution. You may wonder which one to start: +So, both [single-layer](single-layer-web-application/index.md) and [layered](layered-web-application/index.md) application startup templates are inherently modular. Just use one of them and start your modular solution. You may wonder which one to start: * Use the **[single-layer startup template](single-layer-web-application/index.md)** for the host application of your modular monolith if you will leave the host application as empty. It will contain some configuration code of course, but it won't contain any actual application code. **This is the suggested approach.** -* Use the **[layered application startup template](layered-web-application/index.md)** if you will write some application code into the hosting application. You may want that to write some code that makes multiple module operations that is not easily to implement in a particular module. In that case, a layered hosting application will be a better way to organize your codebase. However, this approach can quickly move your solution away from a modular system. So, take your own risk. +* Use the **[layered application startup template](layered-web-application/index.md)** if you will write some application code into the hosting application. You may want to write some code that makes multiple module operations that are not easy to implement in a particular module. In that case, a layered hosting application will be a better way to organize your codebase. However, this approach can quickly move your solution away from a modular system. So, take your own risk. -#### When to Build a Modular Monolith Application? +#### When Should You Start a Modular Monolith Application? In the following conditions, you may consider to build a modular software solution: * If your **domain is too complex** to develop and maintain in a single monolith codebase. -* If your business domain is possible to **split into sub-domains**. +* If your business domain has clear functional boundaries and is possible to **split into sub-domains**. * If you have **multiple teams** that will work on the solution. -* If you are considering to **migrate** your application to a **microservice system**. +* When you need to **reduce complexity** early on. And if you are considering migrating your application to a **microservice system**. -While all these are also suitable for microservice solutions (will be discussed in the next section), a modular solution is more suitable than microservices for most of the projects. Especially, if you don't need to have technology diversity, deploy and scale services independently and serve too many users concurrently with a fault tolerant system, a modular monolith application would be a better choice to not deal with complexity of a microservice system. +While all these are also suitable for microservice solutions (which will be discussed in the next section), a modular solution is more suitable than microservices for most of the projects. +Especially if you don't need to have technology diversity, deploy and scale services independently and serve too many users concurrently with a fault-tolerant system, a modular monolith application would be a better choice to not deal with the complexity of a microservice system. Also, it is better to start with a thin architecture when you have a small team that can focus on building features without spending time managing distributed architecture complexities. Another advantage is that the modular monoliths avoid the network latency and communication overhead inherent in microservices, so debugging and monitoring are easier as all modules run within a single application. In summary, if you anticipate that your application may grow to require a microservices architecture in the future, a modular monolith is a great starting point. -Also, even if you are considering to build a microservice system, most of the times it is advised to [start with a monolith modular first](https://martinfowler.com/bliki/MonolithFirst.html), then migrate to microservices later once your business and module boundaries are more stable. +> Build for Now, Scale for Tomorrow + +Even if you are considering building a microservice architecture, it is usually advised to [start with a monolith modular first](https://martinfowler.com/bliki/MonolithFirst.html), then migrate to microservices later once your business and module boundaries are more stable. ### Microservice Solution Template -ABP's [microservice startup template](microservice/index.md) includes multiple services, API gateways and applications that are well integrated to each other and ready to be a great **base solution for your microservice system**. Here, is an overall diagram that shows the main components of the solution (they vary based on the options while you are creating your solution): +ABP's [microservice startup template](microservice/index.md) includes multiple services, API gateways and applications that are well integrated into each other and ready to be a great **base solution for your microservice system**. +In the following picture, you can see an overall diagram that shows the main components of the solution (they vary based on the options while you are creating your solution): ![ms-overall-architecture](microservice/images/overall-architecture.png) -#### When to use the Microservice Solution Template? +#### When Should You Start a Microservice Solution Template? In the following conditions, you may consider to build a microservice system: @@ -159,10 +170,15 @@ In the following conditions, you may consider to build a microservice system: * If your business domain is possible to **split into sub-domains**. * If you have **multiple teams** that will work on the solution in parallel. * If you need to **develop**, **test**, **deploy** and **scale services** independently. -* If you need to use **multiple technology stacks** (some services can be built with .NET and some others can be built with other technologies). +* If you need to use **multiple technology stacks** so, some services can be built with .NET, and others can be built with Java, Python, etc... * If you need to serve **too many users** concurrently with a **high available** and **fault tolerant** system. -* If you have **devops** knowledge and culture in your company. If you can deal with **complex** development, build, test, deployment and production environments. +* If you have **DevOps** knowledge and culture in your company. If you can deal with **complex** development, build, test, deployment and production environments. + +**Use Case Examples** +* **E-Commerce Platforms**: Separate services for cart, checkout, inventory, and shipping. +* **Streaming Services**: Modules for content delivery, user preferences, and recommendations. +* **SaaS Platforms**: Independent services for billing, user accounts, and analytics. ## Conclusion -In summary, the ABP Platform offers a variety of solution templates tailored to different architectural needs, including layered applications, microservices, and modular development. These templates provide a great foundation for building robust applications by implementing best practices and providing essential features. By selecting the right template, you can streamline the development process, ensuring scalability and maintainability in your project. \ No newline at end of file +In summary, the ABP Platform offers a variety of solution templates tailored to different architectural needs, including layered applications, microservices, and modular development. These templates provide a great foundation for building robust applications by implementing best practices and providing essential features. By selecting the right template, you can streamline the development process, ensuring scalability and maintainability in your project. From 13a1b3e2fb7b3a7b4cbf01f5ac102c2a0e4d55f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 11 Nov 2024 09:37:31 +0300 Subject: [PATCH 18/18] Added guide to navigation menu --- docs/en/docs-nav.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index bcaafb4aa7..91e8b527be 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -1638,6 +1638,10 @@ "text": "Overview", "path": "solution-templates" }, + { + "text": "Template Guide", + "path": "solution-templates/guide.md" + }, { "text": "Single-Layer Solution", "path": "solution-templates/single-layer-web-application"