!!! note Welcome to v3.0. Meet the new major version of Virto Commerce Platform. Our development efforts were focused on moving to ASP.NET Core, performance, architecture improvements and further enhancements. The changes below are a subset of the larger list of changes in update to ASP.NET Core.
- Improved extensibility and unification
- Increase in development speed and decrease in time to market
- Unified architecture and usage of good architecture practices leads to shorter learning curve for developers who are new to Virto Commerce
- Cross-Platform Support: run on Windows, Mac or Linux
- .NET Core 3.1.X
- ASP.NET Core 3.1.X
- ASP.NET Core Identity
- ASP.NET Core SignalR
- OpenIddict 2.0.X
- Entity Framework Core 3.1.X
- HangFire 1.7.X
- AngularJS 1.4
- Docker
- npm
- Webpack
- xUnit
- Jenkins
- Nuke-based utility VirtoCommerce.GlobalTool (aka vc-build)
- Swagger UI
- ASP.NET Core in-memory caching is used
- Strongly typed cache regions and change tokens for cache dependencies
- Ability to manage cached objects' expiration time and disabling the caching
- Hybrid caching policy for keeping cached data consistent in multiple Platform instances
- The dedicated "VirtoCommerce.Cache" module was removed; now caching is implemented in place where it is needed
- Unity DI replaced by built-in .NET Core DI (Microsoft.Extensions.DependencyInjection)
- Virto Commerce developmet switched to GitFlow Workflow model
- GitVersion tool to ease Semantic Versioning
- Both Platform and all modules repository structure unified to have build, docs, src, tests folders on the top.
- The recommended structure of a module solution was updated:
- Permissions, Settings and other constants should be defined in the .Core project
- Caching should be defined and done in the .Data project
- All v3 modules were refactored to follow the recommended structure
- All methods in search and CRUD services made asynchronous:
- Returning async Task or async Task<T>
- The methods renamed to end with "Async"
- All API controller methods made asynchronous:
- Returning async Task or async Task<T>
- The endpoint names left unchanged for backward compatibility (not ending with "Async")
- Dynamic properties registration logic changed. Now manual registration used instead of reflection
- Export/Import is now streamed for all modules
- Now permissions are defined only in design-time using a special fluent syntax
- Localization for permissions added
- Storefront switched to work using barrier token authentication
- Settings are defined in design-time, using special fluent syntax
- Localization for settings added
- Now setting value can be changed using any .NET Core configuration provider
- Module.manifest file structure changed (scripts, styles, settings and permissions declarations removed)
- IModule abstraction changed to have only Initialize and PostInitialize methods; Module.cs structure simplified.
- Object-relational mapper (ORM) switched to Entity Framework Core (EF Core)
- New EF Core migrations generated
- Only Table per Hierarchy (TPH, hierarchy mapping to a single table) inheritance model now supported
- DbContext defined separately from repository
- EntityFramework.Triggers for auditing and change logging
- Calls to DbContext methods refactored to be asynchronous
- Functionality specific implementations were split into dedicated projects (Assets, Modules, etc.)
- ASP.NET Core configuration providers used together with the options pattern.
- Assembly and dependency loading completely reworked into platform process
- Authentification and authorization fully updated to ASP.NET Core Identity without any extensions
- OpenIddict used as an OpenID Connect server to support all OAuth flows; it's also used for token based authentication
- OAuth2 Password and Client credentials flow for Machine to Machine (M2M) applications
- HMAC and simple key authorization support removed for API calls
- Built-in .NET Core ILogger abstraction and logic instead of ICommonLogging and NLog
- Webpack + npm instead of Gulp + Bower
- New make-up for Commerce Manager app UI
- Functionality, which was spread across the system, now gathered into a dedicated module
- Unlimited channel types for notification sending (email, SMS, social networks, etc.):
- Notification availability management for each store
- Possibility to activate/deactivate each notification individually for each store
- New flexible extendibility model
- Notification template preview with data
- Support of LIQUID syntax for templates based on Scriban engine
- New notification messages feed enables to search and preview individual messages
- Enhanced notifications management UI
- Tax calculation functionality, which was spread across the system, now gathered into a dedicated module, responsible for tax settings and calculation
- The new module is a single integration point for third party software and custom extensions
- Shipping costs calculation functionality, which was spread across the system, now gathered into a dedicated module, responsible for shipping methods, related settings and shipping costs calculation
- The new module is a single integration point for third party software and custom extensions
- Payment methods functionality and integrations, which were spread across the system, now gathered into a dedicated module, responsible for payment methods and related settings
- The new module is a single point for payment gateways integrations
- Provides a generic UI and programming components for indexed search
- The new module is a single point for search engine integrations
VirtoCommerce.Domain
project removed- Now each module self-defines domain model and abstractions in corresponding
.Core
projects. Multiple packages from corresponding modules will be distributed instead. - Nuget package
VirtoCommerce.Domain
was left unupdated from previous version. There won't be any update to v3, nor any replacement package in v3.
- Now each module self-defines domain model and abstractions in corresponding
- Common functionality and model moved from
Virto Commerce dynamic expression library module
- support for model extending added
VirtoCommerce.CatalogModule.Web.Core
project removed. Model from.Core
project used in API directly
- "Dynamic expression" building refactored to "compile time" expressions
- New serialization logic for expressions. Serialized expression format changed to JSON (backwards compatible)
Smart caching module
- Now caching is implemented in place where it is needed (Platform and modules)
Virto Commerce dynamic expression library module
- Common functionality and model moved to
Commerce core module
- Module specific functionality was split to corresponding modules (Marketing, Pricing, etc.)
- Common functionality and model moved to
- The following list of breaking changes have the potential to break existing solutions when upgrading them to 3.x
- Both versions are compatible on API level. API clients should be able to switch between the versions only by changing the Platform endpoint URL and credentials
- v2 and v3 swagger API specifications comparison generated by swagger-diff tool: v2v3Changelog.html
- The v2 and v3 databases have structural differences;
- Special migrations were added to upgrade Platform and VC modules from v2 database to v3 automatically;
- Any database related extensions made in custom modules, should be upgraded by adding special DB migrations in module code (no manual changes to DB)
- Any custom existing v2 database should be upgraded before using by Platform v3
Id | Title | Version |
---|---|---|
vc-module-core | Commerce core module | 3.1.0 |
vc-module-tax | Tax general logic module | 3.1.0 |
vc-module-search | Search module | 3.1.0 |
vc-module-azure-search | Azure Search module | 3.1.0 |
vc-module-lucene-search | Lucene Search module | 3.1.0 |
vc-module-elastic-search | Elastic Search module | 3.1.0 |
vc-module-inventory | Inventory module | 3.1.0 |
vc-module-image-tools | Image tools module | 3.1.0 |
vc-module-notification | Notifications module | 3.1.0 |
vc-module-export | Export module | 3.1.0 |
vc-module-content | CMS Content module | 3.1.0 |
vc-module-payment | Payment module | 3.1.0 |
vc-module-store | Store module | 3.1.0 |
vc-module-customer | Customer management module | 3.1.0 |
vc-module-bulk-actions | Bulk Actions general logic module | 3.1.0 |
vc-module-catalog | Catalog management module | 3.1.0 |
vc-module-shipping | Shipping general logic module | 3.1.0 |
vc-module-sitemaps | Sitemaps module | 3.1.0 |
vc-module-pricing | Pricing module | 3.1.0 |
vc-module-cart | Shopping cart module | 3.1.0 |
vc-module-order | Orders management module | 3.1.0 |
vc-module-marketing | Marketing management module | 3.1.0 |
vc-module-subscription | Subscriptions management module | 3.1.0 |
vc-module-customer-review | Customer reviews module | 3.1.0 |
vc-module-Authorize.Net | Authorize.Net DPM payment gateway integration | 3.1.0 |
vc-module-avatax | Avalara Tax automation integration | 3.1.0 |
vc-module-catalog-personalization | Catalog personalization | 3.1.0 |
vc-module-catalog-publishing | Catalog publishing module | 3.1.0 |
vc-module-catalog-csv-import | Imports management module-catalog-csv | 3.1.0 |
vc-module-quote | Quotes module | 3.1.0 |
List of currently released v3 modules till the moment of writing. Additional modules might have been added.