ABP Framework v2.9.0 Has Been Released

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

The ABP Framework & and the ABP Commercial version 2.9 have been released, which are the last versions before v3.0! This post will cover what's new with these this release.

What's New with the ABP Framework 2.9?

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

abp-framework-290-.png

Pre-Compiling Razor Pages

Pre-built pages (for the application modules) and view components were compiling on runtime until this version. Now, they are pre-compiled and we've measured that the application startup time (especially for the MVC UI) has been reduced more than 50%. In other words, it is two-times faster than the previous version. The speed change also effects when you visit a page for the first time.

Here, a test result for the startup application template with v2.8 and v.2.9:

v2.8

2020-06-04 22:59:04.891 +08:00 [INF] Starting web host.
2020-06-04 22:59:07.662 +08:00 [INF] Now listening on: https://localhost:44391
2020-06-04 22:59:17.315 +08:00 [INF] Request finished in 7756.6218ms 200 text/html;

Total: 12.42s

v2.9

2020-06-04 22:59:13.720 +08:00 [INF] Starting web host.
2020-06-04 22:59:16.639 +08:00 [INF] Now listening on: https://localhost:44369
2020-06-04 22:59:18.957 +08:00 [INF] Request finished in 1780.5461ms 200 text/html;

Total: 5.24s

You do nothing to get the benefit of the new approach. Overriding UI pages/components are also just working as before. We will be working on more performance improvements in the v3.0.

Organization Unit System

The Identity Module now has the most requested feature: Organization Units!

Organization unit system is used to create a hierarchical organization tree in your application. You can then use this organization tree to authorize data and functionality in your application.

The documentation will come soon...

New Blob Storing Package

We've created a new Blob Storing package to store arbitrary binary objects. It is generally used to store the content of the files in your application. This package provides an abstraction, so any application or module can save and retrieve files independent from the actual storing provider.

There are two storage provider currently implemented:

Azure BLOB provider will be available with v3.0. You can request other cloud providers or contribute yourself on the GitHub repository.

One of the benefits of the blob storing system is that it allows you to create multiple containers (each container is a blob storage) and use different storage providers for each container.

Example: Use the default container to save and get a byte array

public class MyService : ITransientDependency
{
    private readonly IBlobContainer _container;

    public MyService(IBlobContainer container)
    {
        _container = container;
    }

    public async Task FooAsync()
    {
        //Save a BLOB
        byte[] bytes = GetBytesFromSomeWhere();
        await _container.SaveAsync("my-unique-blob-name", bytes);
        
        //Retrieve a BLOB
        bytes = await _container.GetAllBytesAsync("my-unique-blob-name");
    }
}

It can work with byte[] and Stream objects.

Example: Use a typed (named) container to save and get a stream

public class MyService : ITransientDependency
{
    private readonly IBlobContainer<TestContainer> _container;

    public MyService(IBlobContainer<TestContainer> container)
    {
        _container = container;
    }

    public async Task FooAsync()
    {
        //Save a BLOB
        Stream stream = GetStreamFromSomeWhere();
        await _container.SaveAsync("my-unique-blob-name", stream);
        
        //Retrieve a BLOB
        stream = await _container.GetAsync("my-unique-blob-name");
    }
}

TestContainer is an empty class that has no purpose than identifying the container:

[BlobContainerName("test")] //specifies the name of the container
public class TestContainer
{

}

A typed (named) container can be configured to use a different storing provider than the default one. It is a good practice to always use a typed container while developing re-usable modules, so the final application can configure provider for this container without effecting the other containers.

Example: Configure the File System provider for the TestContainer

Configure<AbpBlobStoringOptions>(options =>
{
    options.Containers.Configure<TestContainer>(configuration =>
    {
        configuration.UseFileSystem(fileSystem =>
        {
            fileSystem.BasePath = "C:\\MyStorageFolder";
        });
    });
});

See the blob storing documentation for more information.

Oracle Integration Package for Entity Framework Core

We've created an integration package for Oracle, so you can easily switch to the Oracle for the EF Core. It is tested for the framework and pre-built modules.

See the documentation to start using the Oracle integration package.

Automatically Determining the Database Provider

When you develop a reusable application module with EF Core integration, you generally want to develop your module DBMS independent. However, there are minor (sometimes major) differences between different DBMSs. If you perform a custom mapping based on the DBMS, you can now use ModelBuilder.IsUsingXXX() extension methods:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<Phone>(b =>
    {
        //...
        if (modelBuilder.IsUsingPostgreSql()) //Check if using PostgreSQL!
        {
            b.Property(x => x.Number).HasMaxLength(20);
        }
        else
        {
            b.Property(x => x.Number).HasMaxLength(32);
        }
    });
}

Beside the stupid example above, you can configure your mapping however you need!

ABP CLI: Translate Command

abp translate is a new command that simplifies to translate localization files when you have multiple JSON localization files in a source control repository.

The main purpose of this command is to translate the ABP Framework localization files (since the abp repository has tens of localization files to be translated in different folders).

It is appreciated if you use this command to translate the framework resources for your mother language.

See the documentation to learn how to use it. Also see the contribution guide.

The New Virtual File System Explorer Module

Thanks to @realLiangshiwei created and contributed a new module to explore files in the Virtual File System. It works for MVC UI and shows all the virtual files in the application. Example screenshots:

virtual-file-explorer-11

virtual-file-explorer-2

See the documentation to learn how to use it.

Sample Application: SignalR with Tiered Architecture

Implementing SignalR in a distributed/tiered architecture can be challenging. We've created a sample application that demonstrate how to implement it using the SignalR integration and the distributed event bus system easily.

See the source code of the sample solution.

An article is on the road that will deeply explain the solution. Follow the @abpframework Twitter account.

signalr-tiered-demo

A picture from the article that shows the communication diagram of the solution

About gRPC

We've created a sample application to show how to create and consume gRPC endpoints in your ABP based applications.

See the source code on GitHub.

We were planning to create gRPC endpoints for all the pre-built application modules, but we see that ASP.NET Core gRPC integration is not mature enough and doesn't support some common deployment scenarios yet. So, deferring this to the next versions (see this comment for more). However, it is pretty standard if you want to use gRPC in your applications. ABP Framework has no issue with gRPC. Just check the sample application.

Others

See the GitHub release notes for others updates.

What's New with the ABP Commercial 2.9

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 2.9.

abp-commercial-290

Organization Unit Management UI

We've created the UI for manage organization units, their members and roles for the ABP Commercial Identity Module:

organization-units

OU management is available for both of the MVC (Razor Pages) and the Angular user interfaces.

See this entry if you're upgrading your solution from an earlier version.

Chat Module Angular UI

We had introduced a new chat module in the previous version, which was only supporting the ASP.NET Core MVC / Razor Pages UI. Now, it has also an Angular UI option.

abp-chat-module

A screenshot from the chat module - two users are sending messages to each other

Easy CRM Angular UI

Easy CRM is a sample application that is built on the ABP Commercial to provide a relatively complex application to the ABP Commercial customers. In the version 2.7, we have lunched it with MVC / Razor Pages UI. With the 2.9 version, we are releasing the Angular UI for the Easy CRM application.

easy-crm-1

A screenshot from the "Order Details" page of the Easy CRM application.

See the Easy CRM document to learn how to download and run it.

Module Code Generation for the ABP Suite

ABP Suite is a tool that's main feature is to generate code for complete CRUD functionality for an entity, from database to the UI layer.

suite

A screenshot from the ABP Suite: Define the properties of a new entity and let it to create the application code for you!

It was working only for the application template until this release. Now, it supports to generate code for the module projects too. That's a great way to create reusable application modules by taking the power of the code generation.

In addition to this main feature, we added many minor enhancements on the ABP Suite in this release.

Notice: Generating code for the module template is currently in beta. Please inform us if you find any bug.

Lepton Theme

Lepton Theme is the commercial theme we've developed for the ABP Commercial;

  • It is 100% bootstrap compatible - so you don't write theme specific HTML!
  • Provides different kind of styles - you see the material style in the picture below.
  • Provides different kind of layouts (side/top menu, fluid/boxed layout...).
  • It is lightweight, responsive and modern.
  • And... it is upgradeable with no cost! You just update a NuGet/NPM package to get the new features.

We've create its own web site: http://leptontheme.com/

You can view all the components together, independent from an application:

lepton-theme

This web site is currently in a very early stage. We will be documenting and improving this web site to be a reference for your development and explore the features of the theme.

Coming Soon: The File management Module

Based on the new blob storing system (introduced above), we've started to build a file management module that is used to manage (navigate/upload/download) a hierarchical file system on your application and share the files between your users and with your customers.

We plan to release the initial version with the ABP Commercial v3.0 and continue to improve it with the subsequent releases.

About the Next Version: 3.0

We have added many new features with the v2.8 and v2.9. In the next version, we will completely focus on the documentation, performance improvements and and other enhancements as well as bug fixes.

For a long time, we were releasing a new feature version in every 2 weeks. We will continue to this approach after v3.0. But, as an exception to the v3.0, the development cycle will be ~4 weeks. The planned release date for the v3.0 is the July 1, 2020.

Bonus: Articles!

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

8 comments

Leave Comment
User Avatar
dmeagor 4 years ago

We've been using ABP framework for a while now and love it. We were considering purchasing ABP commercial but the direction you are taking with it concerns me. I think you may have underestimated the complexity of developiong a useful bulling system. Tax law is complex, you can't just do a "basic" version, EU VAT location verification, multuiple gateways, accounting software integration. There are also about a million CRM/Chat platforms around and they're not hugely expensive. If I can make a suggestion, what would be useful is if your CRM was a link to third party services like chargebee, recurly, helpscout, zendesk, intercom, etc. Love the organisational units. The file manager is interesting too.

User Avatar
hikalkan 4 years ago

Hi, Thank you for using the ABP Framework and loving it :) Easy CRM is just a sample application. It is not something we are trying to sell. It is an example (like a TODO app, but much more complex) for the customers. For the modules; We are not trying to compete to leader vendors when we create a module. For example, we will have a file management module, but we are not trying to compete with Google Drive, or we will create an email sending system but much more simple than MailChimp. How opposite can be possible? We should establish a 100-developers company for each more to compete to these vendors. Our aim to provide basic modules, so you can save time and develop your own additional business on top of it. This is a base solution. But, surely, we are continously developing the modules. How can we compare a chat module that is developed in a few weeks with a company who's main work is chat. Thanks for your interest :)

User Avatar
edirkzwager 4 years ago

Great work guys. The modular system makes life a lot easier and saves us a lot of time. Keep up the good work.

User Avatar
hikalkan 4 years ago

Thanks, modularity is one of the main goals of the framework :)

User Avatar
ukocabicak 4 years ago

The dream of every developer is the modular system, the basic requirements for software, rapid development tools, fast, easy and beautiful theme management. Excellent. Soon Blazor will come. Thanks Volosoft. We continue to follow you.

User Avatar
hikalkan 4 years ago

Thanks a lot :))

User Avatar
StevenOwenNell 4 years ago

Well done guys - very excited and extremely impressed with the rate of output you guys are achieving considering all the projects you are looking after! Keep up the good work!

User Avatar
hikalkan 4 years ago

Thanks :)

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