3 weeks ago, 212 views
3 weeks ago, 168 views
4 weeks ago, 2470 views
1 month ago, 733 views
1 month ago, 1189 views
The ABP Framework & and the ABP Commercial v2.7 have been released. We hadn't created blog post for the 2.4, 2.4 and 2.6 releases, so this post will also cover what's new with these releases and what we've done in the last 2 months.
Reminding that we had started to release a new minor feature version in every two weeks, generally on Thursdays. Our goal is to deliver new features as soon as possible.
We've completed & merged hundreds of issues and pull requests with 1,300+ commits in the last 7-8 weeks, only for the ABP Framework repository. Daily commit counts are constantly increasing:
ABP.IO Platform is rapidly growing and we are getting more and more contributions from the community.
In the last few releases, we've mostly focused on providing ways to extend existing modules when you use them as NuGet/NPM Packages.
The Object Extending System allows module developers to create extensible modules and allows application developers to customize and extend a module easily.
For example, you can add two extension properties to the user entity of the identity module:
ObjectExtensionManager.Instance
.AddOrUpdate<IdentityUser>(options =>
{
options.AddOrUpdateProperty<string>("SocialSecurityNumber");
options.AddOrUpdateProperty<bool>("IsSuperUser");
}
);
It is easy to define validation rules for the properties:
ObjectExtensionManager.Instance
.AddOrUpdateProperty<IdentityUserCreateDto, string>(
"SocialSecurityNumber",
options =>
{
options.Attributes.Add(new RequiredAttribute());
options.Attributes.Add(
new StringLengthAttribute(32) {
MinimumLength = 6
}
);
});
You can even write custom code to validate the property. It automatically works for the objects those are parameters of an application service, controller or a page.
While extension properties of an entity are normally stored in a single JSON formatted field in the database table, you can easily configure to store a property as a table field using the EF Core mapping:
ObjectExtensionManager.Instance
.AddOrUpdateProperty<IdentityUser, string>(
"SocialSecurityNumber",
options =>
{
options.MapEfCore(b => b.HasMaxLength(32));
}
);
See the Object Extensions document for details about this system.
See also the Customizing the Existing Modules guide to learn all the possible customization options.
Volo.Abp.TextTemplating is a new package introduced with the v2.7.0. Previously, Volo.Abp.Emailing package had a similar functionality but it was limited, experimental and tightly coupled to the emailing.
The new text templating package allows you to define text based templates those can be easily localized and reused. You can define layout templates and share the layout from other templates.
We are currently using it for email sending. A module needs to send an email typically defines a template. Example:
<h3>{{L "PasswordReset"}}</h3>
<p>{{L "PasswordResetInfoInEmail"}}</p>
<div>
<a href="{{model.link}}">{{L "ResetMyPassword"}}</a>
</div>
This is a typical password reset email template.
model
is used to pass data to the template (just like the ASP.NET Core MVC).L
is a special function that localizes the given string.It is typical to use the same layout for all emails. So, you can define a layout template. This is the standard layout template comes with the framework:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
</head>
<body>
{{content}}
</body>
</html>
A layout should have a {{content}}
area to render the child content (just like the RenderBody()
in the MVC).
It is very easy to override a template content by the final application to customize it.
Whenever you need to render a template, use the ITemplateRenderer
service by providing the template name and a model. See the text templating documentation for details. We've even created a UI for the ABP Commercial (see the related section below).
ABP Framework's exception handling system automatically handles exceptions and returns an appropriate result to the client. In some cases, you may want to have a callback that is notified whenever an exception occurs. In this way, for example, you can send an email or take any action based on the exception.
Just create a class derived from the ExceptionSubscriber
class in your application:
public class MyExceptionSubscriber : ExceptionSubscriber
{
public override async Task HandleAsync(ExceptionNotificationContext context)
{
//TODO...
}
}
See the exception handling document for more.
There are many minor features and enhancements made to the framework in the past releases. Here, a few ones:
AbpLocalizationOptions.DefaultResourceType
to set the default resource type for the application. In this way, the localization system uses the default resource whenever the resource was not specified. The latest application startup template already configures it, but you may want to set it for your existing applications.IsEnabled
to permission definition. In this way, you can completely disable a permission and hide the related functionality from the application. This can be a way of feature switch for some applications. See #3486 for usage.The goal of the ABP Commercial is to provide pre-build application functionalities, code generation tools, professional themes, advanced samples and premium support for ABP Framework based projects.
We are working on the ABP Commercial in the parallel to align with the ABP Framework features and provide more modules, theme options and tooling.
This section explains what's going on the ABP Commercial side.
Module entity extension system is a higher level API that uses the object extension system (introduced above) and provides an easy way to add extension properties to existing entities. A new extension property easily automatically becomes a part of the HTTP API and the User Interface.
Example: Add a SocialSecurityNumber
to the user entity of the identity module
ObjectExtensionManager.Instance.Modules()
.ConfigureIdentity(identity =>
{
identity.ConfigureUser(user =>
{
user.AddOrUpdateProperty<string>( //property type: string
"SocialSecurityNumber", //property name
property =>
{
//validation rules
property.Attributes.Add(new RequiredAttribute());
property.Attributes.Add(
new StringLengthAttribute(64) {
MinimumLength = 4
}
);
//...other configurations for this property
}
);
});
});
With just such a configuration, the user interface will have the new property (on the table and on the create/edit forms):
The new property can be easily localized and validated. Currently, it supports primitive types like string, number and boolean, but we planned to add more advanced scenarios by the time (like navigation/lookup properties).
See the Module Entity Extensions guide to learn how to use it and configure details.
There are also some other pre-defined points to customize and extend the user interface of a depended module:
See the Customizing the Modules guide to learn all the possible ways to customize a depended module.
We are introducing a new module with the v2.7 release: Text Template Management. It is basically used to edit text/email templates (introduced with the ABP Framework 2.7) on the user interface and save changed in the database.
A screenshot from the content editing for the password reset email template:
This module comes pre-installed when you create a new project.
Audit logging UI module now shows all the entity changes in the application with property change details.
You can also check history for an entity when you click to the actions menu for the entity:
We are creating more advanced sample applications built with the ABP Commercial. Easy CRM is one of them which will be available in a few days to the commercial customers.
Here, a screenshot from the Easy CRM dashboard:
It has accounts, contacts, product groups, products, orders and so on.
We continue to improve existing modules and creating new modules. In addition to the new text template management module introduced above;
More modules, theme and tooling options are being developed for the ABP Commercial and the ABP Framework.
We (Volosoft - the core team behind the ABP.IO platform), are spending almost equal time on the ABP Framework and the ABP Commercial and we consider the ABP.IO platform as a whole.
ABP Framework provides all the infrastructure and application independent framework features to make you more productive, focus on your own business code and implement software development best practices. It provides you a well defined and comfortable development experience without repeating yourself.
ABP Commercial provides pre-built functionalities, themes and tooling to save your time if your requirements involve these functionalities in addition to the premium support for the framework and the pre-built modules.
Great updates!
Great!
good
I love very much all your updates..!! ABP Framework & Commercial product features promising for enterprise level application development. I request you to implement Google Material UI as default template in both Angular and ASPNET Core MVC Razor Views. Also you can add as a pre-built module voice, video conferencing and group chat App using WebRTC in ABP Commercial product. Thanks!
Tried to add the new Volo.Abp.TextTemplating module using the CLI, but it reported the following error "ERROR: 'Volo.Abp.TextTemplating' module could not be found!" Also, the link to the documentation for the new module does not contain anything yet.
It should work now, was a temporary problem because we hadn't defined the package in the abp.io db.
ABP Studio (beta) is generally available to everyone and ready for download. Continue Reading
Some big changes and improvements are coming to the ABP.IO Platform soon Continue Reading
Introducing the ABP.IO Platform version 7.1! Continue Reading
Introducing the ABP.IO Platform version 5.2.0! Continue Reading
Introducing the new features and changes coming with ABP Framework and ABP Commercial version 5.2. Continue Reading
Introducing the new features and changes coming with ABP Framework and ABP Commercial version 5.1. Continue Reading
Introducing the ABP 5.0 release. Continue Reading
Introducing the ABP v5.0 RC and the new features coming with this version. Continue Reading
ABP Framework and ABP Commercial 4.4 versions have been released. Continue Reading
This post covers the new features and changes coming with the ABP.IO platform version 4.4. Continue Reading
Introducing the ABP.IO Platform version 4.3.0! Continue Reading
Introducing the ABP Commercial v4.3 RC and the new features coming with this version Continue Reading
Introducing the ABP v4.3 RC and the new features coming with this version Continue Reading
ABP Framework and ABP Commercial 4.2 versions have been released today. Continue Reading
This post covers the new features and changes coming with the ABP.IO platform 4.2 version. Continue Reading
ABP Framework and ABP Commercial 4.1 versions have been released. Continue Reading
Released ABP.IO Platform v4.1 RC. Some new features: Module Entity Extensions, Blazor UI Improvements, Spanish Language Translation etc. Learn more... Continue Reading
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
See microservice solution demo documentation for a detailed explanation of the solution. It aims to demonstrate a simple yet complete microservice ... Continue Reading