1. In order to make nopCommerce more pluggable I think that all methods must take only 1 business object parameters instead of n parameter like now. I’m talking about the Manager Classes and Data Access Classes. Look at PlaceOrder method in OrderManager it takes almost 90 parameters ( a nightmare if you want to extend this method), if this method will have only 1 bussiness object (Order) as parameter if you want to extend this you will have to add a new property in Order and DBOrder and change only The Sql Data Access method.
2. All the manager classes should be interfaces and loaded with dependency injection (Ex: Unity). With this if you make some modification you will have to extend the manager and override only the target method (which will have only 1 business object)
3. The mapping methods between Business object and Data objects should use something like AutoMapper (http://automapper.codeplex.com/ ) it’s faster to write the mapping rules and if you want to extend an object you will add only a new mapping rule instead of overriding the mapping method.
4. Split the application in 2 : the admin app and client app. All the methods used in client site should be web service methods (WCF). In this way you can make your presentation site in whatever technology you want. With this it will be put the foundations of managing multiple client sites from one admin app
Thanks guys. You are making a great job.
Now we are talking...
Especially part 4.
I can easily see a scenario where we develop a flash site that talks to back-end for one customer, a regular website for another, or why not an android/iPhone app for someone else...
And I'd really appreciate a really clean theme without all grid/column definitions.
Let (advanced) end users develop their own interfaces with their own master pages. We just need clean webcontrols so we can implement the interface as we will.
I'm pretty new to nopCommerce, but can definitely see a reallly nice future for this if we could separate admin and public parts much more.
Good ideas paliktar, I really hope that some of this will be implemented, and I'd love to see a much more involved developer community behind this one.
I suppose a good API is a way to go, it'd make developing plugins and extensions much easier...
We are now working on web-service based functionality that will place all orders into our distributors system and also update products and order statuses automatically. It'd definitely be much faster if we had an API to play with.
And nop team, thank you for really good work.