First time here?
Hi there. I’m Udi. Welcome to my blog.
After blogging since 2003, with over 500 posts I’ve pulled together the “best of the best” for you in the top 3 areas in which my clients use my expertise. Click to skip the introductions.
[ SOA - Domain Models - Smart Clients ]
Service-Oriented Architecture
Before you roll your eyes at me, believe me I do know that SOA has been hyped to death and that you’re probably sick of it. Me too. I’m interested in actually implementing SOA, not just talking about it - it’s actually what I do for a living; from high-level architecture, to detailed design, to choosing frameworks and technologies, and actually building the thing.
What I’ve got online includes podcasts on SOA, webcasts, books I’ve contributed to, full-lenth articles, and open-source frameworks I’ve written to help developers do the right thing by default. So, if you’d like to hear more about the practical aspects of doing SOA, you can jump to the relevant part of this page by clicking here.
Domain Models
You won’t find much of the more theoretical aspects of the domain model pattern or other patterns of application architecture - rather you’ll find presentations I’ve given on the subject, samples, and even an extension to NHibernate. All of these are derived from the work I’ve done around using these patterns - not the least of which is actually making them performant.
Also on the topic of Domain Models and Data Access, you’ll be able to find information on writing highly concurrent systems. This includes an object-oriented development style for service layers that yeild the best multi-user throughput. Jump to the Domain Model section here.
Smart / Rich / Occasionaly Connected Client
I know that Microsoft has been pretty active here, putting out the Composite User Interface Application Block (CAB) and the Smart Client Software Factory (SCSF). The only thing is that those are both complex and not thread-safe - I know, I’ve been burned.
So, here you can find the set of patterns, technologies, and frameworks that make for a thread-safe, multi-threaded client that a team can develop in parallel. Jump to the Smart Client section here.
Doing SOA
If you’re tasked with architecting, designing, or implement a Service-Oriented Architecture then the resources below should help you get to the bottom line of all the theory and get you going in terms of actual development.
If you’d like to more of these kinds of podcasts, check out the “Ask Udi” podcast.
I’ve also be interviewed on SOA on several other podcasts:
Webcasts:
- SOA Distilled for UML China [PDF] [Audio - 90MB via EMule]
- Why you can’t do SOA without Message [TechEd USA 2005]
Books:
- Applying Domain-Driven Design and Patterns [Chapter] An introduction to SOA
- SOA Expertise - Methods, Concept, & Practice [Article] The ESB and Your SOA—A Great Team
Full-length Articles:
- Autonomous Services and Enterprise Entity Aggregation [MS Architecture Journal]
- SOA Support, Therapy, and Treatment [IBM DevX Portal]
Open Source Frameworks:
- nServiceBus - communications framework for making enterprise .NET systems easier to build
Using Domain Models
If you’re looking for how to implement business logic and data access in your application, then you’ve come to the right place. Here you’ll find the patterns, design, and code that will make your business logic cohesive, your data access simpler, and keep everything performing at its peak.
Introductory info:
- What is a domain model?
- Where should (and more importantly, shouldn’t) you use a domain model
- Don’t tie your architecture to a specific object/relational mapping product [Developer.com]
Make it perform:
- Fetching Strategy Design - UML diagrams describing performance enhancing patterns
- Samples + NHibernate modifications for Fetching Strategies
- Presentation on High-Performance, Persistent Domain Models [TechEd Europe 2007]
Concurrency for multi-user throughput:
- Concurrency for Occasionally Connected Systems [Developer.com]
- Podcast on DataSets and Web Services [ Ask Udi podcast ]
- Realistic Concurrency (difference between optimistic and pessimistic)
Multi-core efficient Smart Clients
If you’re tasked with building a desktop application that communicates with a server, needs to be able to work offline, makes use of multiple cores for a better user experience, and can be developed without having to remember 5 books worth of theory, then this is for you.
Patterns:
- Sample implementation of Model-View-Presenter pattern
- Unit-testing still critical to project success even when using the relevant patterns
- Generic validation using the service locator pattern
- Podcast on occasionally connected smart clients (and why ADO.NET Sync Services doesn’t help)
- Passing data from the UI to SOA Services [Podcast]
- Threading issues when smart clients reconnect [Developer.com article]
Thread-Safety = Just-plain Safe




