(CORE) CORE (2022)

Key future of RPAT backend project

This is part of my ASP.NET MVC Handbook.



I done job to refactoring of RPAT project and I need to understanding how this project build and key future of this project.



1. Common project description.

Backend created with NET Core 6. Volume of this project: project has 97 tables, 105 Dbsets, 31 controllers.

Solution structured to TestProject, EntityProject, ModelProject, BLLproject, ReportProject. And this Project has Angular frontend.



Project also can loading XLS file as parts of postback, select XLS stream by MultipartFormDataParser and analyze it. Also project use CSVreader.



2. MediatR and Generic CRUD-controllers

Project use MediatR pattern to call concrete function from API.




Project use one generic controller and than any CRUD-controllers inherits from generic controller and make GetValue/SetValue with the same code but difference datatype.



3. FluentScheduler

Sending Email and SMS project doing with FluentScheduler events.



4. EF, Dapper, Mapster (for map Entity to POCO classes).

Project use EF Code first approach with a lot of tables. Than tables deployed to MS SQL.



And about EF model. All entity inherits from IsDeleted fields.



Than project define 3 type of relation. HashSet (the define ICollection)

Project use Dapper, Mapster to map Response to POCO-classes. AutoMapper vs Mapster in .NET.

5. Amazon file service

Project working with Amazon file service.



6. Selenium

Project activate Chrome browser by Selenium and download report from site to 3-party site.



7. Working with Excel (Reader and Creator, OpenXml,ClosedXML), MultipartFormDataParser (to select Excel stream) , CSV.

Project creating Excel document dynamically by OpenXml. Also project use ClosedXML library.



8. Attributes to restrict Access

Project use Filter attribute to restrict access to some methods and other custom attribute.



9. Third-party library - Twilio (to send SMS), SMTP client, Serilog (to serialize object to string), Ionic.Zip (to Zip), Dawn.Guard (to check Model and avoid exception), TripleDES, SixLabors.ImageSharp (to Resize image), MimeMapping (to check file type).

Project has Twilio client to send SMS.



Project has Email client.



Project use Serilog library to serialize object to string.



Project use PrimaryConstructor library and attributes to create private fields automatically.



Project can read/write ZIP files, doing it with lehacy Ionic.Zip library.



Project use Dawn.Guard to check various values to avoid exception.



Project use PhilosophicalMonkey library to analyze assembly.



Project use TripleDES for cryptography.



Project use SixLabors.ImageSharp to resize image.



Project use MimeMapping library to analyze file type.



10. Programming style.

And at common, technically first project creator loves abstract class for any entity. And universal extension. And Generic. And various C# syntax sugar like ??=



11. Improve Performance - Prometheus (for collect performance), SqlJob (to check SQL performance), LazyCache, MemoryCache, SpaServices.Extensions.

Project use Prometheus client to collect server performance.



Project use tags from SpaServices.Extensions to create server-side prerendering and prepare ASP page to Webpack.



Project use improving performance by LazyCache ,MemoryCache and other methods to improve performance. And permanently checking performance.





Comments ( )
Link to this page: http://www.vb-net.com/RpatBackend/Index.htm
< THANKS ME>