Coder Social home page Coder Social logo

aspnetboilerplate / aspnetboilerplate Goto Github PK

View Code? Open in Web Editor NEW
11.6K 780.0 3.8K 61.94 MB

ASP.NET Boilerplate - Web Application Framework

Home Page: https://aspnetboilerplate.com

License: MIT License

C# 97.17% JavaScript 2.04% CSS 0.14% HTML 0.38% PowerShell 0.10% Batchfile 0.01% Shell 0.04% Less 0.12%
c-sharp best-practices aspnet aspnetcore domain-driven-design architecture framework dotnet multi-tenancy abp

aspnetboilerplate's Introduction

ASP.NET Boilerplate

Build Status NuGet MyGet (with prereleases) NuGet Download

What is ABP?

ASP.NET Boilerplate is a general purpose application framework specially designed for new modern web applications. It uses already familiar tools and implements best practices around them to provide you a SOLID development experience.

ASP.NET Boilerplate works with the latest ASP.NET Core & EF Core but also supports ASP.NET MVC 5.x & EF 6.x as well.

Modular Design

Designed to be modular and extensible, ABP provides the infrastructure to build your own modules, too.

Multi-Tenancy

SaaS applications made easy! Integrated multi-tenancy from database to UI.

Well-Documented

Comprehensive documentation and quick start tutorials.

How It Works

Don't Repeat Yourself! ASP.NET Boilerplate automates common software development tasks by convention. You focus on your business code!

ASP.NET Boilerplate

See the Introduction document for more details.

Layered Architecture

ABP provides a layered architectural model based on Domain Driven Design and provides a SOLID model for your application.

NLayer Architecture

See the NLayer Architecture document for more details.

Nuget Packages

ASP.NET Boilerplate is distributed as NuGet packages.

Package Status
Abp NuGet version
Abp.AspNetCore NuGet version
Abp.Web.Common NuGet version
Abp.Web NuGet version
Abp.Web.Mvc NuGet version
Abp.Web.Api NuGet version
Abp.Web.Api.OData NuGet version
Abp.Web.Resources NuGet version
Abp.Web.SignalR NuGet version
Abp.Owin NuGet version
Abp.EntityFramework.Common NuGet version
Abp.EntityFramework NuGet version
Abp.EntityFramework.GraphDiff NuGet version
Abp.EntityFrameworkCore NuGet version
Abp.NHibernate NuGet version
Abp.Dapper NuGet version
Abp.FluentMigrator NuGet version
Abp.AspNetCore NuGet version
Abp.AspNetCore.SignalR NuGet version
Abp.AutoMapper NuGet version
Abp.HangFire NuGet version
Abp.HangFire.AspNetCore NuGet version
Abp.Castle.Log4Net NuGet version
Abp.RedisCache NuGet version
Abp.RedisCache.ProtoBuf NuGet version
Abp.MailKit NuGet version
Abp.Quartz NuGet version
Abp.TestBase NuGet version
Abp.AspNetCore.TestBase NuGet version

Module Zero

What is 'Module Zero'?

This is an ASP.NET Boilerplate module integrated with Microsoft ASP.NET Identity.

Implements abstract concepts of ASP.NET Boilerplate framework:

Also adds common enterprise application features:

Module Zero packages define entities and implement base domain logic for these concepts.

NuGet Packages

ASP.NET Core Identity Packages

Packages integrated into ASP.NET Core Identity and Identity Server 4 (supports .NET Standard).

Package Status
Abp.ZeroCore NuGet version
Abp.ZeroCore.EntityFrameworkCore NuGet version
Abp.ZeroCore.IdentityServer4 NuGet version
Abp.ZeroCore.IdentityServer4.EntityFrameworkCore NuGet version
Abp.ZeroCore.IdentityServer4.vNext NuGet version
Abp.ZeroCore.IdentityServer4.vNext.EntityFrameworkCore NuGet version

ASP.NET Identity Packages

Packages integrated into ASP.NET Identity 2.x.

Package Status
Abp.Zero NuGet version
Abp.Zero.Owin NuGet version
Abp.Zero.AspNetCore NuGet version
Abp.Zero.EntityFramework NuGet version

Shared Packages

Shared packages between the Abp.ZeroCore.* and Abp.Zero.* packages.

Package Status
Abp.Zero.Common NuGet version
Abp.Zero.Ldap NuGet version

Startup Templates

You can create your project from startup templates to easily start with Module Zero:

A screenshot of the ASP.NET Core based startup template:

Links

Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.

.NET Foundation

This project is supported by the .NET Foundation.

License

MIT.

aspnetboilerplate's People

Contributors

acjh avatar akinix avatar alirizaadiyahsi avatar antheus-s avatar beriniwlew avatar demirmusa avatar diogodamiani avatar ebicoglu avatar emisand avatar gpcaretti avatar gterdem avatar hcss-josephdoty avatar hikalkan avatar ismcagdas avatar iyhammad avatar jefftindall avatar m-aliozkaya avatar maliming avatar matkoch avatar ogix avatar oguzhanagir avatar osoykan avatar realliangshiwei avatar ryancyq avatar shessane avatar totpero avatar virtualcca avatar yekalkan avatar yuzukwok avatar zhaord 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

aspnetboilerplate's Issues

Database

I can't get Taskever to work, it complains about the database.

I created a blank DB, but still errors.

Shouldn't this work out of the box, or am I missing something?

Add a IDeletionAudited

Add a IDeletionAdudited interface that extends ISoftDelete and adds a 'long? DeleterUserId' and a 'DateTime? DeletionDate'.
Then we should automatically set this property on soft delete!

Loading modules

There is a problem on loading modules. AppDomain.CurrentDomain.GetAssemblies() doesn't work since all assemblies are not loaded on startup. So, must find a proper way of resolving dependencies and initializing modules.

Always use UTC datetime

Using local times leads application proper for single time zone. It should save times to database in UTC. Also send/receive UTC times between server and client.

Running as vitrual directory in iis

Currently, ABP samples work properly in IIS if we deploy as web site. But there may be some problems if it's deployed in a virtual directory.

EntityFramework support

Complete basic EntityFramework module.

  • It can work with more than one dbcontexes.
  • It can enable extending entities without polymorphism.

Enchance IsTransactional property

In a non-transactional scope, we may need to enter a transactional scope. So, should also handle it and start/commit transaction for this scope.

ASP.NET Identity Framework Implementation

Implement ASP.NET Identity Framework, so;

  • Implement in Abp.Core module
  • Use custom (AbpUsers, AbpRoles...) tables
  • Use custom (User, Role...) entities
  • Allow user to extend entities and tables
  • Use NHibernate
  • Use ASP.NET Identity framework 2.0

enhance javascript log api

  • Write string logs in single-line.
  • Set info/warn/error icons on console.
  • Define abp.log.logger(loggerName) to get a logger with specific name. Then we can show/hide logs by loggerName. (like Log4Net)
  • May define logFormat (may write time and loggerName before log)
  • May use angular's logging where possible?

Split IUnitOfWork methods

Split IUnitOfWork methods, so methods should be called by ABP should be seperated. Initialize, Begin, End and Cancel are should be called by only ABP!
IsTransactional, SaveChanges and OnSuccess can be used also by users.

Background task schedule system

Develop a system that we can scnedule and queue background tasks.

A task consists of;

  • A class implements IBackgroundTask (or something like that)
  • A schedule (one time, hourly, daily... etc).

There should be a schedular class that can be worked in single or multiple threaded. Their working should be logged (and measured duration optionally) and so on...

This schedular should work in IIS process. Thus, application should be alive always. If it's not a web app, it should work in-process.

This may be a good feature of an application framework.

NOTE: We should implement these feature as extensible. Also, anyone may want to use Quartz.Net or other tools. So, it should be possible to create adapters to these libraries.

Dynamic javascript proxy for AngularJs

Dynamic javascript proxy creation should be adapted for AngularJs.
It should use Angular's $http instead of jQuery's ajax.
It also should register services to an 'abp' module.

Generate batch dynamic proxy

Javascript proxies are generated per application service. It's needed also genarete a single javascript file for all.

Taskever migrations

When running the Taskever migrations using the file: RunMigrations.bat I receive an error when creating 'CreateForeignKey FK_TeTasks_AssignedUserId_AbpUsers_Id TeTasks(AssignedUserId) AbpUsers(Id)' as the table dbo.AbpUsers does not yet exist. See attached screenshot.

Am I missing some Migrations?

Regards

Walter

runmigrations_taskever

Prevent Concurrency Conflicts

The reason I'm such a huge fan of checking for this is that most web applications have multiple users. Take your TaskEver example, a task could easily be updated by more than one user at the same time, thus creating the concurrency conflict.

"A concurrency conflict occurs when one user displays an entity's data in order to edit it, and then another user updates the same entity's data before the first user's change is written to the database. If you don't enable the detection of such conflicts, whoever updates the database last overwrites the other user's changes. In many applications, this risk is acceptable: if there are few users, or few updates, or if isn't really critical if some changes are overwritten, the cost of programming for concurrency might outweigh the benefit. In that case, you don't have to configure the application to handle concurrency conflicts."

Example of how this can be done.
http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-application

Recursive DTO validation

ABP now validates an input DTO. It should also validate if a property of the DTO is another DTO that implements IValidate. This should be done recursively.

Create a base ApplicationService class

It can contain Logger and Localization methods as like MVC controllers.

@halil: Are same needs exists for domain services and other classes? Is it good for a general-purpose helper base class? Or it breaks best practices? Think that...

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.