Whats wrong with Commerce Server 2009
Whats wrong with Commerce Server 2009 from a developer perspective?
- Configuration: There is no single source of object mapping configuration.
Multiple places to insert properties.
- FaultException does not include the original exception.
- The CS2009 api's look very dynamic... It promises a lot more than it can deliver since it is based upon CS2007 API and thus quite limited.
- No transactions for some of the entities. For instance profiles and catalog.
- Integration with SharePoint by putting the configuration in SharePoint web.config. That's not the way to go.
- Granular permissions for all the web services, for all the databases. There is a lot of work just setting up CS.
How do you improve the experience?
- Configuration: Just try to write integration tests to catch any errors due to configuration.
- Problem with FaultException is fixed in CS2009 r2 CTP ... Until an actual release, you might need to write your own logging for operation sequences (theres an extension point for this, just look at Microsoft.Commerce.Common.TextLoggingExceptionHandler and the configuration). I've not tried this, so I have had to look in the console output or Event log.
- You could, if you had the time, write a different implementation of the operation sequence that does the queries for the basket or any other CS entity. I don't know what level of the API the pipelines depend on. Probably easier to just ignore this issue and write some code that searches the CS database.
- This is a serious issue. This means that you will need to clean up manually after any integration test. Just keep your integration tests small and write fake implementations of the CS entities repositories so that you can write unit tests.
- If you're not using default configuration and don't need any serious modification of the web parts distributed with CS2009 then try to as early as possible, put CS within it's own web site and implement your web service wrapper around the methods using CS. Could be a bit tricky, but might save you a lot of work. It's simple math, one big product configuration inside another big product with a lot of configuration equals a lot of work if you're unlucky. I've heard rumors that Microsoft is implementing a service oriented version of CS (but until then, you'll have to implement it yourself).
- Permissions: RTFM! To install CS you need to make sure that everything is setup correct.
- Pipelines: If possible try to avoid using them.
Comments or errors?
Fork this post and do a pull request on github