Coder Social home page Coder Social logo

abpframework / abp Goto Github PK

View Code? Open in Web Editor NEW
12.2K 337.0 3.3K 903.52 MB

Open Source Web Application Framework for ASP.NET Core. Offers an opinionated architecture to build enterprise software solutions with best practices on top of the .NET and the ASP.NET Core platforms. Provides the fundamental infrastructure, production-ready startup templates, application modules, UI themes, tooling, guides and documentation.

Home Page: https://abp.io

License: GNU Lesser General Public License v3.0

C# 77.28% CSS 0.40% PowerShell 0.33% JavaScript 4.72% Batchfile 0.01% HTML 8.53% Dockerfile 0.03% Shell 0.02% Smarty 0.01% TypeScript 8.18% Go 0.10% SCSS 0.31% Less 0.08%
abp csharp aspnetcore domain-driven-design multi-tenancy architecture framework dotnet-core c-sharp aspnet-core

abp's People

Contributors

armanozak avatar bariscanyilmaz avatar berkansasmaz avatar bnymncoskuner avatar braim23 avatar cotur avatar ebicoglu avatar engincanv avatar enisn avatar erolarkat avatar gterdem avatar hikalkan avatar honurbu avatar ilkayilknur avatar ismcagdas avatar mahmut-gundogdu avatar malikmasis avatar maliming avatar masumulu28 avatar mehmet-erim avatar muhammedaltug avatar onurpicakci avatar realliangshiwei avatar salihozkara avatar sinan997 avatar skoc10 avatar stsrki avatar thediaval avatar voloagent avatar yekalkan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

abp's Issues

Abp.Identity.Application layer

Specifications

  • It will be the application layer which will contain application services for Abp.Identity.
  • It can be able to be consumed as REST style remote API.
  • It can be used as services to be injected by a 3-layer MVC application controllers.
  • It can be deployed as a microservice.

Should be developed based on #53

Functionality

  • User app service: CRUD for users including their roles. Also unit tests.
  • Role app service: CRUD for roles. Also unit tests.
  • Rename Abp.Identity to Abp.Identity.Domain.
  • Create Abp.Identity.Domain.Shared dll and move consts and enums here.
  • Add data annotation properties to Dtos.

UI notification system

Similar to ABP1 notification system.
Real time system will be implemented by SignalR Core.

ICurrentUser

  • Should be more and easier extensible, by extension methods?.
  • It should work by claims by default.

By default, it will only contain UserId. TenantId, Impersonator informations, organization units... should all be extensions.

IClock abstraction

  • Should be injectable, rather than a static instance.
  • Check if AspNet Core or MS provides such an abstraction.

Multiple DB + Multiple Context + MultiTenancy

Should support;

  • Each dbcontext can have different connection string. (uses default if not wanted)
  • Implement module-name / database-name logic to be used on conn string resolving.
  • On database per tenant, each tenant can have different connection string. (uses same db if not wanted)
    together in multitenancy.

Logging

Make logging works with a real logger, like log4net or serilog.

Basic Unit Of Work

  • Begin/Commit/Rollback unit of work which can contain multiple database connection and/or multiple dbcontext
  • Support multiple ORM in a UOW.
  • Implement UOW via EF Core

Object Mapping abstraction

Like in ABP1. But also;

  • Abstraction: IObjectMapper
  • AutoMapper integration as default mapper: AutoMapperObjectMapper
  • Allow to register special mapper classes per object-to-object (IObjectMapper<TSource,TDestination>), which overrides default mapper if defined.

Detailed Audit System

Functionality

  • Log all requests just like in old ABP.
  • Log all entity changes just like in old ABP.

Additional

  • logs can be sent to different destinations (like to elastic search...).
  • Audit log module will have its own dbcontext and layers.
  • Allow to easier contribute to audit logging.

Also investigate this project: https://github.com/thepirat000/Audit.NET

Distributed Event Bus

IDistributedEventBus abstraction

  • Publishes events

LocalDistributedEventBus

  • Publishes events using IEventBus

RabbitMQ Integration

  • Implements IDistributedEventBus and publish events to RabbitMQ
  • Receive events of RabbitMQ, dispatches them to subscribers, acknowledges the message then.

AspNet Core UOW filter/middleware & UOW improvements

General Requirements

  • Ensure that ambient UOW scope works properly.
  • Nested unit of works.
  • Should be lazy. That means actually it does nothing until a real database operation is needed.
  • Pass HttpContext.RequestAborted to UOW.Complete automatically.

AspNet Core Middleware & ActionFilter

  • Should be located just before UseMvc() as a middleware.
  • Reservation option to reserve a started UOW for later usage. Reserved by middleware and obtained by action filter.
  • UOW Action filter should be able to work without middleware too.
  • Should allow ActionFilter to control UOW properties (like istransactional, transaction isolation level etc)
  • Should allow to rollback UOW without throwing exception.
  • Should allow exception filter to rollback uow/transaction on error.
  • Middleware completes the transaction/uow if no rollback and no error.
  • What if we have exception on razor view execution..?
  • If we have an exception on commit stage in the middleware, we should handle it as just like in ActionFilter, so client side gracefully handle it.

EF Core

  • Create unit test with SQLite in memory.
  • Create unit test with multiple dbcontextes (with same connstring) share same transaction.

Interception

Requirement

We need interception for two purposes;

Cutting Edge code

Especially needed for non-web projects. Because, they can be done via AspNet Core filters in a web project.

  • Auditing
  • Authorization
  • Unit of work
  • Validation

Dynamic proxying

  • Dynamic c# proxies to call remote methods

Ideas

Veawing

  • Mono.Cecil: Best performance, independent, supports .NetStandard (it's still beta). Hard to implement.
  • Fody: Does not support .NetStandard and probably will not be in a short time.

DynamicProxying

  • Rely on Castle Windsor (which does not support .NetStandard yet) for AutoFac. It's also DI framework depended.
  • TODO: Seach for alternatives.

Per tenant services

Requirement

We need to able to use different implementations for same service per tenant. Autofac support it. We may provide a way to select a service implementation based on the current tenant name.

Basic server side modularity

  • Load modules beginning from startup module
  • Integrate to AspNet Core Startup class
  • Make running in a Console application
  • Load plugin modules

Connection string per module

  • A module / database access object (like DbContext for EF) can declare a database name.
  • Get module specific connection string using database name. Design it to easily be used with other database api providers.

Online Clients System

like in ABP1. But should consider web farm scenarios better. Create AspNet Core SignalR implementation.

Fundamental Setting Management

Setting Manager

  • Get settings
  • Set settings
  • Extensibility (chain of resp. pattern)

Setting Definition Properties

  • Name
  • DefaultValue
  • VisibleToClients
  • IsInherited
  • Custom Data

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.