Clemens Vasters announced the release to the wild of the Fabriq sample that newtelligence has been working on with Microsoft EMEA, et al.
I downloaded the bits and have started reading through the code. Clemens explains the architecture and configuration in several recent posts, so you probably want to start there if you didn't get to see this stuff at the various Tech Eds.
One interesting observation is that, though you will find several references to some of the wse namespaces such as Addressing, Security.*, and the base namespace, you will not find references to the WSE messaging layer. Fabriq roles its own transport(s). I have recently come to that decision myself. I have been trying to implement a msmq-based, reliable, transacted transport for wse 2.0. I basically gave up the ghost Friday, after a week of load testing revealed nit after nit that made the code far more complicated than it really needed to be. I basically reimplemented the whole transport in a much more dumbed-down, straight forward fashion, and it took a lot less code. I am going to try to take some time to write up the experience notes, and I will publish them here when I get a chance.
One Nice-to-have would be for the code to be structured so that the architecture was as clear in the projects as it is in the documentation, e.g. adding sub-namespaces to the Core project to package up the concepts, maybe MessageHandler, Pipeline, Node, Action, Router, Transaction, Transport, IO, Utility. It would improve understandability, I think. FWIW -- I tend to use the [most likely fabricated] 7+- 2 rule in packaging things. If a namespace has 10+ classes, I strongly consider reorganizing it. Most of the time, this ends up making the code much better, if only because it is easier to understand. This is what I have always called Extract Package, stealing the pattern naming convention from Martin Fowler. Apparently, I am not the only one. Patterns are like that.
Comments