I’ve been fairly busy lately, working on interesting things at work, getting ready for an imminent birth, preparing some sessions as well … and also, thinking about a dozen of blog posts I wouldn’t have time to write. So anyway, here’s a quick & dirty cheap list of ramblings, not sure if it’s gonna be of any use, but it’ll hopefully free up some memory slots in my brain
- Complex Data Model != Domain Model : don’t get the “Let’s do DDD because it’s trendy. And, woohoo, that CQRS thingie would look nice on my CV as well” tendency too quickly. Knowing when not to apply DDD is almost as important as knowing how to apply it properly.
- WCF RIA Services : I played a bit with it at work … and I like it. It was designed to address 80% (more ?) of the needs of developers writing n-tiers Data-Driven applications (also known, in the .Net world, as ‘Business applications’), and it does … just that. And that’s good. Sure, it can be misused and it’s bad because it doesn’t use Pattern ‘Blah’ and it violates Rule ‘MoreBlah’, but you’re smart right, so you’ll know when to use it, and when not to. I’m just a bit annoyed that the attributes, I mean, data annotations, are scattered in 25 different namespaces. “Bah, just press ‘Alt-Enter’ dude, API design is so overrated these days”.
- Agatha : Using it, works well, like it. I’m a fan, it’s WCF for mere mortals. Keep up the good work Davy.
- RavenDB : This will deserve a post of its own to describe just how cool I think this NoSQL-for-.Net-written-by-guess-who is. Not only it makes domain-modeling and application prototyping dirt cheap (no more mapping & OR impedance mismatch bro !), it will also give a run for their money to the existing NoSQL databases out there (I mean, how can you compete with 25 blog posts & 12 releases per week
lol). Oh, and if you’re into it, DDD will be most welcome as well (“But Ma, there’s no lazy-loading ! How can I do DDD without lazy-loading & bi-directional navigation properties ?” … “Kiddo, lazy-loading sucks. Big time”).
- Frameworkitis : It’s a nasty disease, I had it in the past, went through a long detox and now (I think) I’m clean. Unfortunately, I still have a lot of peers that are addicts. Wish they could see the light.
- “KISS-Mantra” : Repeat 5 times per day “I’m a complexaholic, I will not generify, I will simplicate”. Anybody has a nice wallpaper with a giant yellow Bath duck ?
Ah, I feel lighter now.
My house will look like a bookstore soon
I've been reading & ordering too many books lately … lol
(Guess it's gonna slow down soon, our most awaited friend 'Sun' is finally coming back to Belgium, my lovely rainy home-country. No wonder why beers are so popular here.)
In case you missed them, here is a quick list of some highly recommended books:
- Domain-Specific Development with Visual Studio DSL Tools: Good read to discover Domain-Specific Development with Visual Studio.
- Programming WCF Services: another masterpiece from Juval Lowy. Cautious: This is a tough read, not an introductory book. But it will surely help you appreciate the design of WCF in all its glory (am I exaggerating ?). Also, if you have the opportunity to attend Juval's stellar presentation 'Beyond the endpoints', don't hesitate 1 second: it was an enlightening experience.
- Patterns of enterprise application architecture: Not new, but you'll find yourself often coming back to it as it provides so much insight about the design of so-called 'enterprise applications'. Don't call yourself senior .net developer or architect if you haven't read it yet
- Java persistence with Hibernate: Yeah, I said 'Java' & 'Hibernate' … why ? because if you wanna know (mostly) everything about persistence with an ORM tool, that's the book. You can then learn any other ORM in 5 minutes.
Other books as recommendable as the previous, that I have at home but haven't read yet (and will read asap lol):
- Release It!: Just received it today, and by looking at the back cover and table of contents, I wish I had read it several years ago. One advice: Read It!
That's what I'm going to do …
- Visual Studio Extensibility: The perfect companion for Domain-Specific Development with Visual Studio if you want to create DSL that are highly integrated into VS. I'd like to know more about that Visual Studio 2008 Shell also … looks promising.
- Essential Windows Workflow Foundation: Wanna gain more insight about the design of WF? Everything's in here.
- Framework Design Guidelines – Conventions, Idioms, and Patterns for Reusable .NET Libraries: Do I have to say that it's a must-read for any framework-developer ? Shamefully, I haven't read it yet. Gonna fix that.
Well … gotta go, I have 4 books to read
You are using an Inversion of Control container for your application components and you are exposing some services through WCF. Wouldn’t it be nice if you could host those services in your container and benefit from Dependency Injection ?
Well, that’s easy if you’re using Castle Project‘s Windsor container: just register the WcfIntegration facility and you’re on track:
- Public properties or Constructor arguments will automatically be injected by the container.
- Any component registered in the container that implements the IServiceBehavior or IOperationBehavior interfaces will be easily applicable to your WCF services.
Similarly, there is also a Workflow Foundation integration facility that provides the following functionalities:
- Host the WorkflowRuntime engine in the container, making it available for any workflow-aware components.
- Automatically add to the WorkflowRuntime any Workflow services (components inherited from WorkflowRuntimeService base class) or External Data exchange services (components with ExternalDataExchange attribute).
Hope one finds that interesting …
For those who are interested in Domain-Specific Languages (anybody reading this blog except myself?), there are a couple of interesting news this week:
As a side note, the feature I’m eagerly awaiting in the next version of the DSL Tools is the DSL extensibility one. Imagine being able to extend your base DSL model using plugins, whether it be classes, properties, rules, validations … this opens up a whole new world.
For one of my current project in which I need basic extensibility, I tried to mix the System.Plugin framework with the DSL Tools … I stopped during the process, too complex, too heavy, and used a simpler Provider architecture instead. For more advanced scenarii, I’ll wait for the new model provided by Visual Studio codename “Rosario“.
Those are the technologies I will definitely try to master in 2008, because they add a real value to the art of software development and allow developers / architects to work at a higher level (less dirty code on the hands lol):
1. Visual Studio DSL Tools : I recently got interested in Domain-Specific Development especially with the wonderfull Visual Studio DSL Tools. Definitely have to practice this more. Guess I will order the book 'Domain-Specific Development with Visual Studio DSL Tools'.
2. WCF : The great (r)evolution that Microsoft delivered as part as .Net 3.0. Any .Net developer should know about it. Need to finish the book 'Programming WCF Services'.
3. WF : The 'unknown sibling' of WCF. I already have some advanced practice with that one (advanced custom activities) as I had a course & used it on a project for several months. Still have to finish reading the book 'Essential Windows Workflow Foundation'.
4. Linq : Definitely need to check the inner workins of Linq to gain a better understanding of it and be able to use it correctly with abstract Repositories & ORM.
5. DDD : Already got a good knowledge of that one, but I want to become an expert as it is gaining more & more popularity as well as visibility while Microsoft is adopting it slowly but surely (Linq to SQL, Entity Framework). 'Applying Domain-Driven Design and Patterns: With Examples in C# and .NET' is a real eye-opener on the subject.
Well, it seems that my schedule for 2008 is already full
lol