1"use strict";(self.webpackChunkdev_architecture=self.webpackChunkdev_architecture||[]).push([[8268],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return h}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(r),h=a,m=d["".concat(c,".").concat(h)]||d[h]||p[h]||o;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var l=2;l<o;l++)i[l]=r[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},6368:function(e,t,r){r.r(t),r.d(t,{contentTitle:function(){return c},default:function(){return d},frontMatter:function(){return s},metadata:function(){return l},toc:function(){return u}});var n=r(7462),a=r(3366),o=(r(7294),r(3905)),i=["components"],s={id:"projectlayers",title:"Architecture"},c=void 0,l={unversionedId:"projectlayers",id:"projectlayers",isDocsHomePage:!1,title:"Architecture",description:"The hierarchy and workflow between the project layers are in the following order.",source:"@site/docs/projectlayers.md",sourceDirName:".",slug:"/projectlayers",permalink:"/docs/projectlayers",tags:[],version:"current",frontMatter:{id:"projectlayers",title:"Architecture"},sidebar:"someSidebar",previous:{title:"Running The Web API Project With Angular",permalink:"/docs/runprojectangular"},next:{title:"Project Development Approaches",permalink:"/docs/developmentapproaches"}},u=[{value:"Core",id:"core",children:[]},{value:"Entities",id:"entities",children:[]},{value:"DataAccess",id:"dataaccess",children:[]},{value:"Business",id:"business",children:[]},{value:"Tests",id:"tests",children:[]},{value:"WebAPI",id:"webapi",children:[]},{value:"UIPreparation",id:"uipreparation",children:[]}],p={toc:u};function d(e){var t=e.components,r=(0,a.Z)(e,i);return(0,o.kt)("wrapper",(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The hierarchy and workflow between the project layers are in the following order.\nWhen developing manually, the development can be done by maintaining the following order.\nHowever, using the ",(0,o.kt)("strong",{parentName:"p"},"DevArchitecture Code Generator")," is recommended\nby the ",(0,o.kt)("strong",{parentName:"p"},"DevArchitecture")," developer team."),(0,o.kt)("h2",{id:"core"},"Core"),(0,o.kt)("p",null,"It includes all core systems of the ",(0,o.kt)("strong",{parentName:"p"}
1,"DevArchitecture")," infrastructure."),(0,o.kt)("p",null,"This layer includes Cross Cutting Concern, Generic Repository, Jwt, Mail, RabbitMQ, Elastic Search etc. It is the layer where structures are presented ready-made with AOP methods and/or single-line codes."),(0,o.kt)("p",null,"No specific changes are expected. As the ",(0,o.kt)("strong",{parentName:"p"},"DevArchitecture")," team, necessary updates\nand additional developments are constantly being made by us. However, there is no\nharm in changing it as desired. You can change it yourself for project needs or\nyou can contact us."),(0,o.kt)("h2",{id:"entities"},"Entities"),(0,o.kt)("p",null,"It is the layer where you will represent the database entities of your project.\nThis is the layer where you define these entities as relational database or\ndocument-oriented database objects."),(0,o.kt)("p",null,"This layer is the first entry point in the development of a project. All layers are formed through a class created here."),(0,o.kt)("h2",{id:"dataaccess"},"DataAccess"),(0,o.kt)("p",null,"It is the data access layer of your project. This layer is the layer where database relations are made, Contexts are determined and database access technologies are used (EFCore, MongoDb etc.)."),(0,o.kt)("h2",{id:"business"},"Business"),(0,o.kt)("p",null,"It is the layer where all the business rules of your project will be written and integration mechanisms will be placed.\nThanks to the ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"CQRS"))," approach, you can present all the rules in a flexible structure. Service delivery can be performed\nin accordance with monolithic or microservice architectures."),(0,o.kt)("h2",{id:"tests"},"Tests"),(0,o.kt)("p",null,"It is the test layer of your project. All business rule tests are written here under the relevant units.\nWith ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"DevArchitecture Code Generator")),", test setups and routines for the test layer and related classes are\nautomatically created in an error-free manner. However, it is left to the discretion of the developer to\nchange the explanation lines in the test routines and the algorithms to be developed. It will be discussed\nin detail under the title of ",(0,o.kt)("a",{parentName:"p",href:"testroutines"},(0,o.kt)("strong",{parentName:"a"},(0,o.kt)("em",{parentName:"strong"},"Test Routines"))),"."),(0,o.kt)("h2",{id:"webapi"},"WebAPI"),(0,o.kt)("p",null,"It is the API surface layer where your project will communicate with the front-end frameworks.\nIt comes with security mechanism. It expects a logged in user information for the entire API surface,\nexcept for ",(0,o.kt)("strong",{parentName:"p"},"Auth")," module methods."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"User Management, Multi-Language Support, Performance Metrics, Authorization Modules"))," are available ready-made. It can be used with a preferred front-end framework."),(0,o.kt)("p",null,"With the help of ",(0,o.kt)("strong",{parentName:"p"},"Swagger and DevArchitecture Code Generator"),", method documentation is available. Thus, it is foreseen to facilitate communication with different developer teams."),(0,o.kt)("h2",{id:"uipreparation"},"UIPreparation"),(0,o.kt)("p",null,"It is the necessary installation project for the installation of the ",(0,o.kt)("em",{parentName:"p"},"Angular")," interface. It was used to visually present the capabilities of the ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"DevArchitecture"))," project and to guide the developers.\n(",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"Note: It is optional to use.")),")"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"authors:")," Kerem VARI\u015e, Veli G\xd6RG\xdcL\xdc"))}d.isMDXComponent=!0}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.