Whatever CRUD means to you, architecturally speaking it is now dead. CRUD is dead? Long live CRUD, then. A more abstract approach to software design and development, summarized by the CQRS/ES acronym, has been around for a quite some time now. Many have coded it already and shared their experience and each did it in a kind of unique and personal way. It’s about time, however, we standardize to a few reusable patterns.
Here’s where “Architecting for the .NET Platform — UX, DDD, Events, Polyglot persistence” fits is.
Three days of SDD Deep Dive are enough to see a few of these CQRS/ES patterns in action within a new framework in development that aims at bringing the same smooth and familiar sense of programming of old CRUD to the next step. Join me then and I promise that in three days you’ll take a tour of the “known” (requirements, estimates, domain analysis, modeling, coding) and how it needs to change in order to remain mainstream and largely used.
Architecting for the .NET Platform — UX, DDD, Events, Polyglot persistence is a 3-day workshop taking place in London 8-10 November 2016. Register now. (Save £200 if within Sept 23).
As I progress on the second edition of bestselling Microsoft .NET: Architecting Applications for the Enterprise (NAA4E). I learn more and more about Domain-driven Design (DDD) and, above all, I’m seeing it through the lens of a different perspective. Instead of just blindly applying my understanding of it built on top of tips, tricks and advice collected here and there, I’m truly learning it from the foundation. And guess what? I can now fully answer the following (simple but tricky) question I got on LinkedIn. The question apparently is completely unrelated to DDD. At a deeper look, though, it’s DDD that is related to nearly every aspect of software architecture; even when it could lead to a CRUD software.
For ASP.NET web applications requiring only CRUD operations(like automating paper forms), do you think using Entity Framework is slower than using DAL, BAL and presentation layer using stored procedures? Is using EF with stored procedure the right solution for this?
There are two distinct parts in DDD. You always need one; and may sometimes happily ignore the other.
- DDD has an analytical part that sets an approach to express the top level architecture of the business domain in terms of bounded contexts.
- DDD has a strategic part that relates to the definition of a supporting architecture for the identified bounded contexts. The default supporting architecture is Domain Model. A quickly emerging alternate option–in many ways fully replacing Domain Model–is CQRS.
The real added value of DDD lies in using the analytical part to identify bounded business contexts. This is the part of DDD that relies on the ubiquitous language–the key factor.
Once this has been done, the next problem is identifying the ideal way to tackle (read, implement) each bounded context. In doing so, you can certainly consider the two recommended supporting architectures of DDD. You can even–probably should–consider event sourcing in combination with CQRS.
But, in the end, it’s all about finding the ideal way to meet requirements in a well-understood business context. So “ideal” should be measured against actual business requirements and NOT against ideal principles of code elegance, cleanliness, future extensibility, readability and the like. If, as in the question, all you need is CRUD and you need it quickly and probably don’t need it after a short amount of time, by all means go with a quick ASP.NET CRUD and stored procedures.
Stay tuned on Facebook for the progress of #NAA4E!
A few weeks ago, Andrea and I started working on a new edition of teh book Microsoft .NET: Architecting Applications for the Enterprise which will likely be available in 2014—hopefully in the first half. We aim at another 300 pages book with a completely different table-of-contents. In particular, the table-of-contents reflects our experience on real projects and the outline of software design classes we’ve been teaching lately. The full story has been published today by MS Press.
We plan to publish updates primarily on this blog and Andrea’s blog and link them from within the Facebook page where we invite you to share comments, suggestions, tips and any kind of feedback. If you tweet, please use #naa4e. More official news will also appear on MS Press blog.
In the book we propound a revised layered architecture (presentation, application, domain and infrastructure) and a sort of revolutionary approach to design that starts from presentation and addresses multi-device concerns, separation of concerns, as well as the Big Ball of Mud problem at its root.
- Mechanics of software projects
- Principles of software design
- Writing software of quality
- The Presentation Layer
- The Mythical Business Layer
- Introducing Domain Modeling
- Implementing Domain Modeling
- Introducing CQRS
- Implementing CQRS
- Introducing Event-sourcing Models
- Implementing Event-sourcing Models
- The Infrastructure Layer
Let us know if you’re interested in reviewing some chapters and feel free to share suggestions. We encourage you do that through the Facebook page .
I could be wrong but it really seems that I haven’t been in the US for two years now. First week of October, I’ll be back in Las Vegas, proud speaker at the DevConnections show. I will have quite a busy schedule, with three breakout sessions in two days and, to finish with the flourish, a mobile architecture full-day workshop the Friday, Oct 4. Here’s my schedule:
I just want to spend a few extra keystrokes here to call your attention on the workshop. It’s about ASP.NET MVC 4 and Bootstrap; you’ll get a complete solution that works beautifully on smartphones, tablets and PCs and IS NOT primarily based on responsive templates.
What??? Read the abstract:
Usually a solution is sought for a clear and well-defined problem. In mobile, instead, sometimes it seems that we’re looking for solutions without having first clarified what the problem is. “Mobile”, however, is a term that is quickly getting obsolete replaced by the term “device”. Any solution that involves mobile devices should be planned for a multitude of devices. This basic fact changes the approach to the design of the presentation layer (and to a good extent, also the application layer) putting the user experience on top of everything and, at least for new systems, taking precedence over domain and infrastructure. In this demo-laden workshop, we’ll first focus on multi-view client-side aspects such as Responsive Web Design and related frameworks such as Bootstrap and AngularJS. Next, we will identify possible pitfalls of Responsive Web Design and ways to work around them. In doing so, we’ll introduce server-side feature detection and device capabilities.
Key passages in the text:
- We’re looking for solutions without having first clarified what the problem is
- Changes the approach to the design of the presentation layer (and to a good extent, also the application layer
Being responsive is obvious and foregone. There will be no point in being responsive in a few months. You must be responsive.
I’d say you must work to provide a responsive experience much more than a responsive design. This is a sort of Copernican revolution in software architecture. And event-sourcing (no matter how implemented, DDD/CQRS/Transaction Script) is another REAL revolution–this one truly the biggest thing after object-orientation.
I suggest you also attend Stephen Bohlen sessions as well if this topic is catching you.