ABP Framework v3.1 RC Has Been Released

User Avatar
4 years ago, 5948 views, 0 comments
Cover Image

Today, we are releasing the ABP Framework version 3.1 Release Candidate (RC). The development cycle for this version was ~7 weeks. It was the longest development cycle for a feature version release ever. We have completed ~150 issues, merged ~150 PRs and made ~1,000 commits only in the main abp repository. See the related milestone on GitHub.

There were two main reasons of this long development cycle;

  • We've switched to 4-weeks release cycle (was discussed in this issue).
  • We've re-written the Angular service proxy generation system using the Angular schematics to make it more stable. There were some problems with the previous implementation.

This long development cycle brings a lot of new features, improvements and bug fixes. I will highlight the fundamental features and changes in this blog post.

3.1.0 final stable version has been published. See this post for details.

About the Preview/Stable Version Cycle

As mentioned above, it is planned to release a new stable feature version (like 3.1, 3.2, 3.3...) in every 4-weeks.

In addition, we are starting to deploy a preview version 2-weeks before the stable versions for every feature/major releases.

Today, we've released 3.1.0-rc.1 as the first preview version. We may release more previews if it is needed until the stable 3.1.0 version.

The stable 3.1.0 version will be released on September 3, 2020. Next RC version, 3.2.0-rc.1, is planned for September 17, 2020 (2 weeks after the stable 3.1.0 and 2 weeks before the stable 3.2.0).

We won't add new features to a version after publishing the preview version. We only will make bug fixes until the stable version. The new features being developed in this period will be available in the next version.

We will use -rc.x suffix (like 3.1.0-rc.1 and 3.1.0-rc.2) for preview releases. However, we may also publish with -preview.x suffix before RC (Release Candidate) releases, especially for major versions (like 4.0, 5.0...).

About the Nightly Builds

Don't confuse preview versions vs nightly builds. When we say preview, we are mentioning the preview system explained above.

We will continue to publish nightly builds for all the ABP Framework packages. Nightly pages are built from the development branch. You can refer to this document to learn how to use the nightly packages.

Get Started with the RC Versions

Please try the preview versions and provide feedback to us to release more stable versions. Please open an issue on the GitHub repository if you find a bug or want to give feedback.

Update the ABP CLI to the 3.1.0-rc.4

Since this is the first preview version, you need to upgrade the ABP CLI to the 3.1.0-rc.4 to be able to use the preview features:

dotnet tool update Volo.Abp.Cli -g --version 3.1.0-rc.4

New Solutions

The ABP.IO platform and the ABP CLI are compatible with the RC system. You can select the "preview" option on the download page or use the "--preview" parameter with the ABP CLI new command:

abp new Acme.BookStore --preview

This command will create a new project with the latest RC/Preview version. Whenever the stable version is released, you can switch to the stable version for your solution using the abp switch-to-stable command in the root folder of your solution.

Existing Solutions

If you already have a solution and want to use/test the latest RC/Preview version, use the abp switch-to-preview command in the root folder of your solution. You can return back to the latest stable using the abp switch-to-stable command later.

Note that the abp switch-to-preview command was being used to switch to nightly builds before the v3.1. Now, you should use the abp switch-to-nightly for nightly builds.

Breaking Changes / Special Notes

ABP & ABP Commercial

  • You may need to upgrade the Microsoft.Extensions.FileProviders.Embedded package in your projects to 3.1.6 or a later version.
  • If you are using EF Core, you may need to add a new migration after upgrading the packages. Just run the standard "Add-Migration" command, check the generated migration code and execute the "Update-Database" command to apply changes to the database.
  • If you have implemented social/external logins for your MVC / Razor Page UI application before, you may want to check this issue. We made some improvements and changes that you may want to take action for your application. Beginning from v3.1, the users created their accounts via social login can still set a local password to login with local username/email & password.
  • See the "Angular Service Proxies" section below for the Angular applications.

ABP Commercial Only

  • We've moved favicons into /wwwroot/images/favicon/ folder for the ASP.NET Core MVC / Razor Page UI applications. There are 10 favicon related files (including the favicon.ico) under this directory to better work with different browser and cases. You can create a new application to check this folder and copy the files into your own application. Then you can customize the icons for your own brand (hint: you can use a tool like that to create the favicons with various formats).
  • Removed direct Twitter & Facebook social login integrations from the account module, for MVC / Razor Pages UI. Follow this documentation to easily add social logins to your applications if you need. The account module provides all the infrastructure to handle social/external logins, you just need to configure it.

What's New with the ABP Framework 3.1 RC

abp-framework-release-v3.1

Angular Service Proxies

ABP provides a system to generate Angular service proxies (with TypeScript) to consume the HTTP APIs of your application. Service proxy generation system has been completely re-written with the ABP Framework 3.1. The main goal was to build more stable and feature rich system that is better aligned with other ABP Framework features (like modularity).

You will continue to use the same abp generate-proxy command, however it internally uses an NPM package that implements the command using the Angular schematics. It will come pre-configured for new solutions. However, implement the following steps for existing solutions;

  • Add @abp/ng.schematics package to the devDependencies of the Angular project.
  • Add rootNamespace entry into the /apis/default/ section in the /src/environments/environment.ts, as shown below:
apis: {
  default: {
    url: 'https://localhost:44360',
    rootNamespace: 'Acme.BookStore' //<-- ADD THIS
  },    
}

Acme.BookStore should be replaced by the root namespace of your .NET project. This ensures to not create unnecessary nested folders.

  • Finally, add the following paths to the tsconfig.base.json to have a shortcut while importing proxies:
"paths": {
    "@proxy": ["src/app/proxy/index.ts"],
    "@proxy/*": ["src/app/proxy/*"]
}

See the documentation to learn more about the service proxy generation for Angular applications.

The application development tutorial has been updated based on the new Angular Service proxy system.

Authorization Code Flow for the Angular UI

We were using the resource owner password authentication flow for the Angular UI login page. We've implemented Authorization Code Flow for the Angular account module and made it default for new projects. With this change, the Angular application now redirects to the login page of the MVC UI which was implemented using the Identity Server 4. We also removed the client secret from the Angular side with this change.

Old behavior remains exist. If you want to switch to the new flow (which is recommended), follow the steps below:

  1. Add authorization_code to the IdentityServerClientGrantTypes table in the database, for the client used by the Angular UI (the ClientId is YourProjectName_App by default, in the IdentityServerClients table).

  2. Add http://localhost:4200 to IdentityServerClientRedirectUris and IdentityServerClientPostLogoutRedirectUris tables for the same client.

  3. Set RequireClientSecret to false in the IdentityServerClients table for the same client.

ABP Commercial users can make these changes on the Identity Server Management UI.

  1. Change the oAuthConfig section in the src/environments/environment.ts file of the Angular application.

You can take this new configuration as a reference. Main changes are;

  • Added responseType as code.
  • Added redirectUri
  • Added offline_access to the scope.
  • Removed oidc: false option.
  • Removed the client secret option.

Global Feature System

The new "Global Features" system allows to enable/disable features of an application or a module in a central point. It is especially useful if you want to use a module but don't want to bring all its features into your application. If the module was so designed, you can enable only the features you need.

When you disable a feature;

  • The database tables related to that feature should not be created in the database.
  • The HTTP APIs related to that feature should not be exposed. They returns 404 if they are directly requested.

So, the goal is that; when you disable a feature, it should behave like that feature doesn't exists in your system at all.

There is no way to enable/disable a global feature on runtime. You should decide it in the development time (remember, even database tables are not being created for disabled global features, so you can't enable it on runtime).

"Global Features" system is different than SaaS/multi-tenancy features, where you can enable/disable features for your tenants on runtime.

Assume that you are using the CMS Kit module (this module is in a very early stage) where you only want to enable the comment feature:

GlobalFeatureManager.Instance.Modules.CmsKit().Comments.Enable();

You can check if a feature was enabled:

GlobalFeatureManager.Instance.IsEnabled<CommentsFeature>();

Or you can add [RequiresGlobalFeature(...)] attribute to a controller/page to disable it if the related feature was disabled:

//...
[RequiresGlobalFeature(typeof(CommentsFeature))]
public class CommentController :  AbpController
{
    //...
}

See the issue #5061 until this is fully documented.

Social/External Logins

Implemented the infrastructure for social/external logins in the account module. So, now you can easily configure your application to support social/external logins by following the documentation. Once you configure a provider, a button will appear on the login page to use this provider.

The social logins will work as expected even if you are using the Angular UI, since the Angular UI uses the MVC login using the authorization code flow implemented with this new version (as explained above).

Forgot/Reset Password

Implemented forgot password / password reset for the account module.

You can now enter your email address to get an email containing a password reset link:

forgot-password

When you click to the link, you are redirected to a password reset page to determine your new password:

reset-password

External Login System

The standard Social/External Login system (like Facebook login) works via OpenID Connect. That means the user is redirected to the login provider, logins there and redirected to your application.

While this is pretty nice for most scenarios, sometimes you want a simpler external login mechanism: User enters username & password in your own application's login form and you check the username & password from another source, not from your own database.

ABP v3.1 introduces an External Login System to check username & password from any source (from an external database, a REST service or from an LDAP / Active Directory server).

You can check the issue #4977 until it is fully documented.

We've implemented LDAP authentication for the ABP Commercial, using this new login extension system (see the ABP Commercial section below).

User Security Logs

The new Security Log System (of the Identity module) automatically logs all authentication related operations (login, logout, change password...) to a AbpSecurityLogs table in the database.

New BLOB Storage Providers

Implemented AWS and Aliyun providers for the BLOB storing system with this version.

Module Entity Extensibility

We had introduced a entity extension system that allows to add new properties to existing entities of depended modules by a simple configuration. When you add a new property, it appears on the create, edit and list views on the UI and created a new field in the related database table. We've implemented this system for the identity and tenant management modules, so you can extend entities of these modules. See the documentation.

Other Features / Highlights

Here, some other highlights from this release;

  • UOW level caching system #4796
  • Refactored the console application template to better integrate to the host builder #5006
  • Volo.Abp.Ldap package now supports multi-tenancy.
  • Introduce BasicAggregateRoot base class #4808
  • Sets GUID Id in the InsertAsync method of the EF Core repository if it was not set by the developer #4634
  • Added GetPagedListAsync methods to the repository to simplify paging #4617
  • Configured Prettier for the startup template #4318
  • Defined new layout hooks for the MVC UI: before page content & after page content #4008
  • Allow to put static resources (js, css... files) under the Components folder for ASP.NET Core MVC UI.
  • Upgraded to AutoMapper 10 and Quartz 3.1 for the related integration packages.

What's New with the ABP Commercial v3.1 RC

abp-comm-release-v3.1

Security Logs UI

We've created a UI to report user security logs for authentication related operations, under the Identity Management menu:

security-logs-ui

Also, every user can see his/her own security logs by selecting the "My security logs" under the user menu:

my-security-logs

LDAP Authentication

We've implemented LDAP authentication using the new external login system explained above. Also, created a UI to configure the server settings:

ldap-settings-ui

In this way, you can simply check passwords of the users from LDAP in the login page. If given username / password doesn't exists on LDAP, then it fallbacks to the local database, just like before.

Since it supports multi-tenancy, you can enable, disable and configure it for your tenants.

Email / Phone Number Verification

User profile management page now supports to Email & Phone Number verification flow:

email-phone-verification

When user clicks to the verify button, a verification email/SMS (that has a verification code) sent to the user and the UI waits to submit this code.

User Lock

Implemented to lock a user for a given period of time. Locked users can not login to the application for the given period of time:

user-lock

ABP Suite: Angular UI Code Generation Revisited

Angular UI code generation has been re-written using the Angular Schematics for the ABP Suite. It is now more stable and produces a better application code.

ABP Suite also supports code generation on module development.

Others

  • Social logins and authorization code flow are also implemented for the ABP Commercial, just as described above.
  • Added breadcrumb and file icons for the file management module.

The ABP Community

We've lunched the community.abp.io ~two weeks ago with its initial version. It only has "Article submission" system for now. We are developing new exciting features. There will be an update in a few days and we'll publish a new blog post for it.

Conclusion

The main goals of the 3.1 version were;

  • Complete the missing authentication features (like social logins, LDAP authentication, authorization code flow for the Angular UI...) for the ABP Framework & ABP Commercial.
  • Re-write a stable and feature complete Angular service proxy generation system for the ABP Framework and CRUD UI generation system for the ABP Commercial.
  • Develop a system to lunch preview versions of the platform. 3.1.0-rc.1 was the first preview version that has been published with this new system.
  • Complete the fundamental documentation & tutorials (we've even created a video tutorial series).

ABP.IO platform will be more mature & stable with the v3.1. Enjoy Coding!

 

Bonus: Articles!

Beside developing our products, our team are constantly writing articles/tutorials on various topics. You may want to check the latest articles:

 

We’d love to hear from you. Please leave your comments, suggestions, feeedbacks below.

More From Hikalkan

Announcing ABP Studio (beta) General Availability

ABP Studio (beta) is generally available to everyone and ready for download. Continue Reading

hikalkan July 2024

Unifying the ABP Platform

Some big changes and improvements are coming to the ABP.IO Platform soon Continue Reading

hikalkan April 2024

ABP.IO Platform 7.1 Final Has Been Released

Introducing the ABP.IO Platform version 7.1! Continue Reading

hikalkan March 2023

ABP.IO Platform 5.2 Final Has Been Released

Introducing the ABP.IO Platform version 5.2.0! Continue Reading

hikalkan April 2022

ABP.IO Platform 5.2 RC Has Been Published

Introducing the new features and changes coming with ABP Framework and ABP Commercial version 5.2. Continue Reading

hikalkan March 2022

ABP.IO Platform v5.1 Has Been Released

Introducing the new features and changes coming with ABP Framework and ABP Commercial version 5.1. Continue Reading

hikalkan January 2022

ABP.IO Platform 5.0 RC.1 Has Been Released

Introducing the ABP v5.0 RC and the new features coming with this version. Continue Reading

hikalkan November 2021

ABP.IO Platform 4.4 Final Has Been Released!

ABP Framework and ABP Commercial 4.4 versions have been released. Continue Reading

hikalkan August 2021

ABP Platform 4.4 RC Has Been Released

This post covers the new features and changes coming with the ABP.IO platform version 4.4. Continue Reading

hikalkan June 2021

ABP.IO Platform v4.3 Has Been Released!

Introducing the ABP.IO Platform version 4.3.0! Continue Reading

hikalkan April 2021

ABP Commercial 4.3 RC Has Been Published

Introducing the ABP Commercial v4.3 RC and the new features coming with this version Continue Reading

hikalkan April 2021

ABP Framework 4.3 RC Has Been Published

Introducing the ABP v4.3 RC and the new features coming with this version Continue Reading

hikalkan April 2021

ABP.IO Platform 4.2 Final Has Been Released!

ABP Framework and ABP Commercial 4.2 versions have been released today. Continue Reading

hikalkan January 2021

ABP.IO Platform v4.2 RC Has Been Released!

This post covers the new features and changes coming with the ABP.IO platform 4.2 version. Continue Reading

hikalkan January 2021

ABP.IO Platform v4.1 Final Has Been Released!

ABP Framework and ABP Commercial 4.1 versions have been released. Continue Reading

hikalkan January 2021

ABP.IO Platform v4.1 RC Has Been Released!

Released ABP.IO Platform v4.1 RC. Some new features: Module Entity Extensions, Blazor UI Improvements, Spanish Language Translation etc. Learn more... Continue Reading

hikalkan December 2020

ABP.IO Platform 4.0 with .NET 5.0 in the 4th Year!

Released ABP.IO Platform v4.0 Final. Some new features: Migrated to .NET 5.0, Stable Blazor UI, Identity Server 4 Upgrade, Moved to System.Text.Jso... Continue Reading

hikalkan December 2020

ABP.IO Platform v4.0 RC Has Been Released based on .NET 5.0!

Released ABP.IO Platform v4.0 RC. Some new features: Migrated to .NET 5.0, Stable Blazor UI, Identity Server 4 Upgrade, Moved to System.Text.Json, ... Continue Reading

hikalkan November 2020

ABP Framework & ABP Commercial 3.3 Final Have Been Released

Released ABP v3.3. Some new features: New modules & features for the Blazor UI, Automatic Validation for AntiForgery Token for HTTP APIs, Rebus Int... Continue Reading

hikalkan October 2020

ABP Framework & ABP Commercial v3.3 RC Have Been Released

Released ABP v3.3 RC. Some new features: New modules & features for the Blazor UI, Automatic Validation for AntiForgery Token for HTTP APIs, Rebus ... Continue Reading

hikalkan October 2020

ABP Framework v3.2 Final Has Been Released

Released ABP v3.2 final. Some new features: The Blazor UI, MongoDB ACID Transactions, Kafka Integration for the Distributed Event Bus etc. Learn mo... Continue Reading

hikalkan October 2020

ABP Framework & ABP Commercial 3.2 RC With The New Blazor UI 🚀

Released ABP v3.2 RC. Some new features: The Blazor UI, MongoDB ACID Transactions, Kafka Integration for the Distributed Event Bus etc. Learn more ... Continue Reading

hikalkan September 2020

Introducing the Angular Service Proxy Generation

ABP Framework has introduced the new Angular Service Proxy Generation system with the version 3.1. This post introduces the service proxy generatio... Continue Reading

hikalkan September 2020

ABP Framework v3.1 Final Has Been Released

Released ABP v3.1 final. Some new features: Angular Service Proxies, Authorization Code Flow for the Angular UI, Global Feature System etc. Learn m... Continue Reading

hikalkan September 2020

ABP Framework v3.0 Has Been Released

Released ABP v3.0. Some new features: Angular 10, The Oracle Integration Package, Azure BLOB Storage Provider etc. Learn more about what's new with... Continue Reading

hikalkan July 2020

ABP Framework v2.9.0 Has Been Released

Released ABP v2.9.0. Some new features: Organization Units System, Blob Storing Package, EF Core Oracle Integration Package, Chat Module Angular UI... Continue Reading

hikalkan June 2020

ABP v2.8.0 Releases & Road Map

Released ABP Framework and ABP Commercial v2.8. Some new features: SignalR Integration Package, RTL Support for the MVC UI, New Lepton Theme Styles... Continue Reading

hikalkan May 2020

ABP Framework v2.7.0 Has Been Released!

Released ABP Framework v2.7. Some new features: Object Extending System, Text Templating Package, Subscribing to the Exceptions etc. Learn more abo... Continue Reading

hikalkan May 2020

ABP Framework v2.3.0 Has Been Released!

Released ABP Framework v2.3. Some new features: React Native Mobile App, Angular TypeScript Proxy Generator, CRUD app service etc. See the GitHub m... Continue Reading

hikalkan March 2020

ABP Framework v2.0 and the ABP Commercial

Released ABP Framework v2.0 and ABP Commercial. See the release notes for changes. Create a demo to see application startup template of ABP Commerc... Continue Reading

hikalkan January 2020

ABP v1.0 Has Been Finally Released

Released the first stable ABP v1.0, after ~3 years of continuous development! Start playing with the new ABP framework now. See the GitHub mileston... Continue Reading

hikalkan October 2019

ABP v0.21 Has Been Released based on the ASP.NET Core 3.0

Released ABP v0.21 with no new feature. The release is just upgrade to the stable AspNet Core 3.0. Check v0.20 release notes for new features, and ... Continue Reading

hikalkan September 2019

ABP v0.19 Release With New Angular UI

Released ABP v0.19 with 90+ issues resolved and 650+ commits pushed. Some new features: Angular UI, Widget System. See the roadmap for all upcomings. Continue Reading

hikalkan August 2019

ABP CLI, New Templates & Features v0.18 Release

Released ABP v0.18 with 80+ issues resolved and 550+ commits pushed. Changes: ABP CLI command line tool, and new startup templates. See the roadmap... Continue Reading

hikalkan June 2019

Microservice Demo, Projects Status and Road Map

See microservice solution demo documentation for a detailed explanation of the solution. It aims to demonstrate a simple yet complete microservice ... Continue Reading

hikalkan February 2019