Giter Club home page Giter Club logo

awesomeapp's Introduction

Awesome App

Aplikacia sluzi ako demo s pouzitim Clean architektury, backend .NET Core 5.0, frontend ASP.NET Core a desktopova aplikacia pomocou Electron.NET.

Aplikacia implementuje nakupny zoznam.

Core

Je centrom aplikacie s Clean architekturou, obsahuje triedy:

  • entity
  • agregacie
  • domenove udalosti
  • DTO triedy
  • interface
  • handlery udalosti
  • specifikacie

Obsahuje domenove triedy a business logiku aplikacie. Core ma velmi malo externych zavislosti, vsetky ostatne komponenty zavisia na Core.

Clean Architektura

Infrastructure

Obsahuje manazment externych zdrojov ako su databazy, suborovy system, externe servisy (API). Pouziva Entity Framework Core na pristup k databazam.

SharedKernel

Pouziva sa ako oddeleny projekt s kodom zdielanym medzi roznymi bounded kontextmi (DDD metodologia). Obsahuje zakladne base triedy pre domenovu udalost, ValueObject a interface IRepository a IAggregateRoot.

Web

Implementuje API endpointy ako aj weboveho klienta pomocou ASP.NET Core.

Dektopovy klient

Pre desktopoveho klienta je pouzity projekt Electron.NET, ktory zaobali ASP.NET Core webstranku do Electron aplikacie. Vyhodou je multi-platformove riesenie beziace na Win/macOS/Linux systemoch. Nevyhodou a riskom je relativne mala rozsirenost kniznice Electron.NET aj ked parametre githubu nie su az take nepriaznive (5.7k stars, 543 forks, 82 issues).

Tests

Pouziva xunit, Moq a TestHost.

Databaza

Aplikacia pouziva lokalnu sqlite databazu. Bohuzial som nestihol podporu inych databaz. Implementacia by potrebovala tri oddelene DbContext triedy, pre kazdu databazu. EF Core podporuje MySQL, MS SQL aj Oracle data providerov. Toto riesenie ma limitacie, napriklad nemoznost previazania databaz pomocou cudzich klucov ako aj absencia distribuovanych transakcii cez vsetky databazy.

Spustenie

Webovy klient sa spusti:

cd src\AwesomeApp.Web
dotnet run

a otvorenim weboveho prehliadaca s adresou http://localhost:57679. Na adrese http://localhost:57679/swagger je swagger dokumentacia k API.

Desktopovy klient sa spusti:

dotnet tool install ElectronNET.CLI -g
cd src\AwesomeApp.Web
electronize start

Alternativne riesenie

Mozne zdokonalenie riesenia by bolo pouzit:

  • Backend a API: .NET Core s Clean architekturou
  • Front end webovy klient: Angular
  • Front end desktopovy klient: Electron

Vyhodou by bolo robustnejsie riesenie, kedze ElectronNET pravdepodobne nebude riesenim do produkcneho prostredia.

awesomeapp's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.