ABP Framework v3.0 Has Been Released

User Avatar
4 years ago, 7455 views, 8 comments
Cover Image

We are excited to announce that the ABP Framework & and the ABP Commercial version 3.0 have been released. As different than the regular release lifecycle, which is 2-weeks, this version has taken 4-weeks with 119 issues closed, 89 pull requests merged and 798 commits done in the main framework repository.

Since this is a major version, it also includes some breaking changes. Don't panic, the changes are easy to adapt and will be explained below.

See the GitHub release notes for a detailed change log.

What's New with the ABP Framework 3.0?

This post will only cover the important features/changes. You can see all the changes on the GitHub release notes.

Angular 10!

Angular version 10 has just been released and we've immediately migrated the startup templates to Angular 10! So, when you create a new solution with the Angular UI, you will take the advantage of the new Angular.

We've prepared a migration guide for the projects created an older version and want to migrate to Angular 10.

The Oracle Integration Package

We had created an integration package for the Oracle for EF Core based applications using the Devart's library since the official Oracle EF Core package was not supporting the EF Core 3.1. It now supports as a beta release. While it is in beta, we've created the integration package, so you can use it in your application.

See the documentation for details.

Azure BLOB Storage Provider

We had created a BLOB storing system in the previous version with a file system and database storage provider. This release introduces the Azure BLOB Storage provider. See the documentation.

Distributed Cache Bulk Operations & the New Redis Cache Package

The standard IDistributeCache interface of the ASP.NET Core doesn't contain bulk operations, like setting multiple items with a single method/server call. ABP Framework introduces new methods those can be used for bulk operations on the ABP's IDistributedCache<T> interface:

  • GetManyAsync / GetMany
  • SetManyAsync / SetMany

Then we needed to implement these new methods for Redis cache and had to create a Redis integration package which extends the Microsoft's implementation.

These methods are also used by the ABP Framework to cache settings, features and permissions for a user/role/tenant and brings a significant performance improvement.

See the caching document for details.

Embedded Files Manifest Support for the Virtual File System

Virtual File System now supports to use GenerateEmbeddedFilesManifest in your projects to add the real file/directory structure of your embedded resources in the compiled assembly. So, you can now access to the files without any file name restriction (previously, some special chars like . in the directory names was a problem in some cases)

See the documentation to learn how to take the advantage of new system.

New Samples

Based on the requests from the community, we've prepared two new sample applications:

DynamicStringLength & DynamicMaxLength Attributes

The standard StringLength and MaxLength data annotation attributes is useful to validate properties of a class when the class is used as a Model or DTO. However, just like any other attribute, the length values should be literal (constant) values known at compile time.

Example: Using the StringLength

public class CreateBookDto
{
    public const int MaxNameLength = 128; //CONSTANT!
    
    [StringLength(MaxNameLength)]
    public string Name { get; set; }
}

ABP Framework now has the DynamicStringLength & DynamicMaxLength properties to allow to determine the lengths at runtime.

Example: Using the DynamicStringLength

public class CreateBookDto
{
    public static int MaxNameLength { get; set; } = 128;
    
    [DynamicStringLength(typeof(CreateBookDto), nameof(MaxNameLength))]
    public string Name { get; set; }
}

DynamicStringLength gets a class type and the name of a static property on this class to read the max length (there is also a minimum length option just like the StringLength).

This allows you to get the max value from a configuration and set on the application startup (generally, in the PreConfigureServices method of your module):

CreateBookDto.MaxNameLength = 200;

This feature is used by the pre-built application modules, so you can now override the max lengths of the properties defined in these modules.

Auto Distributed Events

ABP can automatically publish distributed events for all entities on their create, update and delete events. That's pretty useful since you commonly interest in these basic events in a distributed system.

This feature is mature and documented with the v3.0. You can easily configure some or all the entities to be published.

IAsyncQueryableExecuter

When you work with LINQ extension methods, you need to call ToListAsync(), FirstOrDefaultAsync()... methods on your queries. Unfortunately, these methods are not standard LINQ extension methods. They are defined in the Microsoft.EntityFrameworkCore package (or in the MongoDB.Driver package if you are using the MongoDB).

So, you need to depend on this package if you want to use the async extension methods. That breaks the layering and makes your application or domain layer depends on the EF Core / MongoDB package.

IAsyncQueryableExecuter is a service defined by the ABP Framework to execute queries asynchronously without depending the specific provider (EF Core / MongoDB) package.

See the documentation to read the details and learn our recommendations.

API documentation

We are now publishing API documents for the ABP Framework and modules in every release. So, you can explore the ABP Framework classes much more easier than before. Click the the API Documentation link on the navigation menu of the documentation.

Package List

We have created a page to list all the ABP-related official NuGet and NPM packages.

Others

  • Implemented front-channel server-side clients sign out for the identity server.
  • abp.currentUser (CurrentUser service in the Angular UI) now has a roles array that contains role names of the current user.
  • Upgraded all the NuGet and NPM package dependencies.
  • Introduced ReadOnlyAppService base class (which has only the get operations) in addition to the CrudAppService base class (which has get, create, update and delete operations).

See the GitHub release notes for others updates.

What's New with the ABP Commercial 3.0?

In addition to all the features coming with the ABP Framework, the ABP Commercial has additional features with this release, as always. This section covers the ABP Commercial highlights in the version 3.0.

New File Management Module

We've created a new module that is used to store and manage files in your application. This new module is based on the BLOB Storing system, so it can use different storage providers to store the file contents.

Example screenshot

file-management-ui

You can upload, download and organize files in a hierarchical folder structure. It is also compatible to multi-tenancy and you can determine total size limit for your tenants. In the next versions, we will be working on a "share" system to share files between users in a more controlled way or share your files with your customers with a public link.

File Management module is currently available only for the MVC / Razor Pages UI. We are working on the Angular UI and it will be released in the next versions.

Breaking Changes

Since this is a major version, we've redesigned some APIs and introduced a few "easy to fix" breaking changes.

ABP Framework

  • Changed some consts in the pre-built application modules to static properties that is possible to change by your code. If you've used these consts on an attribute, then use the DynamicStringLength as explained above.
  • Changed ConcurrencyStamp max length to 40. You need to add a database migration and update your database after upgrading the ABP Framework.
  • Using ~ instead of ^ for NPM package dependencies anymore, to be more stable.

ABP Commercial

  • Changed file names for the application logos. Previously, it was using separate logo files for each theme, like theme1.png, theme1-reverse.png, theme2.png, theme2-reverse.png (... 6). Now, we have only two logo files: logo-light.png and logo-dark.png. So, rename your logo in the wwwroot/images/logo/ folder for the MVC UI and /src/assets/images/logo/ folder for the Angular UI.
  • We've added the API documentation for the ABP Commercial too.

Also, see the migration guide for Angular UI.

Known Issues

  • 3.0.0 version has a problem with tiered architecture. See this issue to fix it for your application until we release the v3.0.1.

About the Next Versions

We will continue to release a new minor/feature version in every two weeks. So, the next expected release date is 2020-07-16 for the version 3.1.

In the next few versions, we will be focused on the Blazor UI, as promised on the road map. We will continue to improve the documentation, create samples, add other new features and enhancements. Follow the ABP Framework Twitter account for the latest news...

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.

8 comments

Leave Comment
User Avatar
pkouame 4 years ago

Will an Angular based File Management Module be available in 3.1? What enhancements/ bug fixes are planned for 3.1 Suite? Thanks and Regards

User Avatar
hikalkan 4 years ago

File Management module Angular UI will be available with the v3.2. We've completely re-written the ABP Suite Angular UI code generation with v3.2 and made a lot of minor enhancement and bug fixes.

User Avatar
Sharafudeen 4 years ago

Hi, Any plan for document management module (such as doc, docx, pdf, etc.,) Like docuviewer tool? For drop-down control, please provide select2 ajax samples with ABP framework best practice. Thanks and regards!

User Avatar
hikalkan 4 years ago

We had created a file management module, but it is not a specific document management module. What do you expect from a document management module? Can you send your thoughts to info@abp.io as a feedback. Thanks. I noted your select2 example request.

User Avatar
ukocabicak 4 years ago

All the tools in the toolbox are complete. After that, it will depend on the capabilities of the developers. Thanks for everything, Volosoft.

User Avatar
hikalkan 4 years ago

Thanks a lot :)

User Avatar
behzad 4 years ago

Do you have any plan for UI?

User Avatar
hikalkan 4 years ago

In the next few versions, we will be focused on the Blazor UI. Are you asking that?

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.1 RC Has Been Released

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

hikalkan August 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