docs/en/Community-Articles/2020-03-19-abp-framework-v230-has-been-released/post.md
In the days of coronavirus, we have released ABP Framework v2.3 and this post will explain what's new with this release and what we've done in the last two weeks.
We are very sad about the coronavirus case. As Volosoft team, we have remote workers working in their home in different countries. Beginning from the last week, we've completely started to work remotely from home including our main office employees.
We believe in and pray for that the humanity will overcome this issue in a short time.
Beginning from the ABP v2.1.0, we have started to release feature versions once in two weeks, on Thursdays. This is the 3rd release after that decision and we see that it works fine for now and improved our agility.
We will continue to release feature versions (like v2.4, v2.5) in every two weeks. In addition, we may release hotfix versions (like v2.3.1, v2.3.2) whenever needed.
We've completed & merged 104 issues and pull requests with 393 commits in this two weeks development period.
I will introduce some new features and enhancements introduced with this release.
We have finally completed the react native mobile application. It currently allows you to login, manage your users and tenants. It utilizes the same setting, authorization and localization systems of the ABP Framework.
A few screenshots from the application:
It doesn't have much functionality but it is a perfect starting point for your own mobile application since it is completely integrated to the backend and supports multi-tenancy.
It is common to call a REST endpoint in the server from our Angular applications. In this case, we generally create services (those have methods for each service method on he server side) and model objects (matches to DTOs in the server side).
In addition to manually creating such server-interacting services, we could use tools like NSWAG to generate service proxies for us. But NSWAG has the following problems we've experienced:
So, we've decided to create an ABP CLI command to automatically generate the typescript client proxies (#2222) for your REST API developed with the ABP Framework.
It is easy to use. Just run the following command in the root folder of the angular application:
abp generate-proxy
It only creates proxies only for your own application's services. It doesn't create proxies for the services of the application modules you're using (by default). There are several options. See the CLI documentation.
CrudAppService is a useful base class to create CRUD application services for your entities. But it doesn't support entities with composite primary keys. AbstractKeyCrudAppService is the new base class that is developed to support entities with composite primary keys. See the documentation for more.
The application startup template comes with some application modules pre-installed as NuGet & NPM packages. This have a few important advantages:
However, when you need to make major customizations for a depended module, it is not easy as its source code is in your applications. To solve this problem, we've introduces a new command to the ABP CLI that replaces NuGet packages with their source code in your solution. The usage is simple:
abp add-module --with-source-code
This command adds a module with source code or replaces with its source code if it is already added as package references.
It is suggested to save your changes to your source control system before using this command since it makes a lot of changes in your source code.
In addition, we've documented how to customize depended modules without changing their source code (see the section below). It is suggested to use modules as packages to easily upgrade them in the future.
Source code of the free modules are licensed under MIT, so you can freely change them and add into your solution.
ABP Framework is rapidly evolving and we are frequently releasing new versions. However, if you want to follow it closer, you can use the daily preview packages.
We've created an ABP CLI command to easily update to the latest preview packages for your solution. Run the following command in the root folder of your solution:
abp switch-to-preview
It will change the versions of all ABP related NuGet and NPM packages. You can switch back to the latest stable when you want:
abp switch-to-stable
See the ABP CLI document fore more.
We've created a huge documentation that explains how to customize a depended module without changing its source code. See the documentation.
In addition to the documentation, we've revised all the modules (#3166) to make their services easily extensible & customizable.
We've recently created a guide to explain the migration system that is used by the ABP startup templates. This guide also explains how to customize the migration structure, split your modules across multiple databases, reusing a module's table and son on.
If you have a solution built on the ASP.NET Boilerplate, we've created a guide that tries to help you if you want to migrate your solution to the new ABP Framework.
IRepository.GetAsync and IRepository.FindAsync methods (#3184).See the release notes for all feature, enhancement and bugfixes.
We have the following goals for the next few months:
See the GitHub milestones for details.