Products

Solutions

Resources

Partners

Community

About

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeDNN Open Source...DNN Open Source...Module ForumsModule ForumsStoreStoreArchitecture Enhancement ProposalArchitecture Enhancement Proposal
Previous
 
Next
New Post
2/2/2006 2:05 AM
 


My previous thread "Kudos, Issue Tracking & Project Architecture" was void of the architecture topic that I had intended to present, so I'll start the discussion here in this new thread...

I'll start by sharing a bit about myself.  In my real job (aka day job) I provide technical and design support for enterprise purchasing applications, with our current system built upon a product developed by SAP (unfortunately our requirements have required significant customization to the base product).  Those who have worked with SAP applications will have recognized that they are very far from technical beauty, but there are certainly very good conceptual design concepts that can be borrowed and/or learned from.  In this case I am speaking of the modularization of specific business functions into configurable components that can be assembled in different ways using provided APIs.  This has actually evolved into the latest corporate buzz known as Service Oriented Architecture (SOA), but I'm getting off track... (sorry)

Anyways, I feel that there is a really good opportunity to increase the value of this new DNN Store module by further modularizing this module's capabilities into smaller components... thus I am posting these thoughts here to share with project team and other interested community members

Concept: Abstraction and/or separation of Catalog and Shopping Cart store components.

Purpose: Provide enhanced business capabilites for DNN Store project through provision of flexible and extensible function-specific components

Description:

-> Separate DNN Store module into two conceptual components: Catalog and Shopping Cart (would not necessarily require separate PA)
-> DNN Catalog component provides capabilities for display/management of products, categories and collaboration (user reviews, email to friend, cross-sell, etc...)
-> DNN Shopping Cart (or perhaps "Order Management") component provides shopping cart, payment gateway and other future enhancements (perhaps shipping calculation, tax engine, etc)
-> DNN Catalog uses "shopping cart provider" model to allow interaction with different shopping cart systems
-> DNN Shopping Cart provides API to receive line items from different catalog systems.
-> Catalog and Shopping Cart components can be used together or configured to 3rd-party components using custom provider and provided API

Scenario 1 - "Classic" DNN Store

Identical in functionality to DNN Store 01.00.00 with catalog, cart, payment and order management functions all provided via standard DNN components

DNN Catalog -> [DNN cart Provider] -> [DNN Cart API] -> DNN Shopping Cart -> [PaymentProvider] -> Payment Gateway (PayPal, etc)


Scenario 2 -  Alternate Shopping Cart

In this example, PayPal Shopping Cart API could be used to provide more-basic cart/gateway solution that does not require DNN user registration or address maintenance.  Order management occurs within paypal application.

DNN Catalog -> [PayPal Cart Provider] -> [PayPal Cart API] -> PayPal Cart/Gateway

Scenario 3 - Alternate product catalog

This scenario provides ability to develop/utilize specialized product catalogs.  For example, a photo album is enhanced to provide ability to order prints online...  A specialized catalog application is used to market softare - something like SnowCovered... an online booking module allows users to reserve and pay for events.  In any case, this scenario 3 depicts a 3rd-party DNN module communicating with the DNN cart an available API.

3rd-Party DNN Catalog -> [DNN Cart API] -> DNN Shopping Cart -> [PaymentProvider] -> Payment Gateway

Scenario 4 - External product catalog

This final scenario could be used to provide an API that allows other websites to submit items into a DNN cart, perhaps by placing a custom module on a hidden page.  Why would you want this?  I personally don't have the need, but this is something that is commonly known as "punch out" within enterprise purchasing systems like Ariba and SAP.  In our case a DNN portal module is configured to direct the user ("punch out") to a preconfigured web site where he/she is able to shop from that supplier's catalog.  When shopping is completed the external catalog uses HTTP to post the cart contents back to the origin system for purhcase order generation and/or payment.  Probably not a huge need for this in DNN, but this is simply another example of capability that could be custom developed with provision of a 'DNN Cart API'.

External Web Site -> [HTTP protocol] -> Custom DNN Control/WebService -> [DNN Cart API] -> DNN Shopping Cart -> [PaymentProvider] -> Payment Gateway


Okay... so this might be considered a major change to the current project architecture, but let's at least consider that the current technical design is actually not that far off.  The Catalog and Cart module controls are for the most part function specific already.  The DNN Store team has already developed a paymentprovider model whose concepts might be reusable for a cartprovider.  The Cart already has functions that are used to insert items - these could be wrapped into an API.

So I post this idea for community discussion and project team consideration. 

Thanks,

Chris

 
New Post
2/2/2006 1:35 PM
 

Chris,

Thanks for the input. We have actually been discussing these concepts already, but its nice to hear someone in the enterprise purchasing industry confirm they are good ideas.

 
New Post
4/12/2006 5:47 PM
 

There are two other provider models that may benefit the store:

Order Provider: A repository interface to hold and report against all orders. Useful for trend analysis, member order history. This also might be used for extending valid orders into other modules (ie. enrollment management in the events module)

Notification Provider: A general store wide event notification interface. This will alleviate the project team from implementing every possible feature request for custom projects... This could be used for:

  • Emailing users when a product ships
  • Email distributors for low invetory levels
  • Preparing serial numbers for software key codes
  • etc...

For an example of a 3rd party app that is using providers like this quite well, look at Peter Donker's DMX 3.0.  I have personally implemented a custom notification provider for the DMX resulting in unrestricted customization, without any re-compiling of his code (simply a change to the web.config).

just some thoughts...

 
Previous
 
Next
HomeHomeDNN Open Source...DNN Open Source...Module ForumsModule ForumsStoreStoreArchitecture Enhancement ProposalArchitecture Enhancement Proposal


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out