Looking to do something a bit more custom? No problem. You can still utilize the provided View Models and JSON Services to built your own front-end functionality, or work directly with the Domain layer.
Comprised of extendable factories and value objects, the View Model layer is responsible for obtaining data from the Domain layer and assembling it for presentation, whether that be directly on a page or as serialized JSON data.
View Model objects and factories are registered and managed via the Microsoft Unity container. This means that Active Commerce developers can register their own extensions of these classes when additional data or display logic customization is needed in the Presentation layer.
The core Active Commerce business logic is comprised of a series of services and entities for handling common e-commerce needs: product catalog, shopping cart, stock, pricing, taxes, shipping, orders, and so on.
Domain services and entities are registered and managed via the Microsoft Unity container, and injected or located as needed within each other, the View Model, or directly within the Presentation layer. This means that Active Commerce developers can register their own extensions or implementations of these services in order to customize business logic, or integrate with external systems.
Active Commerce utilizes two primary data repositories. The first is Sitecore itself. “Publishable” content is modeled and managed like any other data in Sitecore. This includes product data, e-commerce pages, and e-commerce configuration. This data can be extended via the Sitecore Template Engine, approved via workflow, translated using language versions, etc. This also means that you can access product data using standard Sitecore APIs such as the Item API and Content Search API. You can even import or manipulate product data using tools such as Sitecore PowerShell Extensions. To map Sitecore item data into the Domain layer, Active Commerce utilizes the popular object-item mapper Glass Mapper.
There is other data which Active Commerce needs that does not lend itself well to the Sitecore data model. Transactional data and user-created content required by Active Commerce is stored instead in a separate SQL database that sits alongside your other Sitecore databases. This data includes orders, product stock/inventory, wish lists, and customer shopping carts. Active Commerce utilizes the open source object-relational mapper NHibernate to access this data. You can extend these entities or add your own to the Active Commerce database utilizing Fluent NHibernate.