July 2011 Meeting
Onion Architecture With ASP.NET MVC
Onion Architecture is a specific type of solution architecture that was first introduced to me by Jeffrey Palermo. Over the years nearly every project Ive worked on used a traditional layered architecture under the guise of loose coupling. Yet in every single case as the project progressed we realized more and more that our layer abstractions werent actually abstractions at all. Sure we may be coupling ourselves between layers using interfaces — but a giant DAL interface with 30 members is almost certainly going to be tied to a specific implementation, despite our best intentions.
Layering also opens to the door to too much developer decision making, causing a great deal of inconsistency. When you need to add a new feature to the UI, the developer is completely free to put the code for his feature in any layer he chooses — from the presentation layer on down, or perhaps in the dreaded “Shared/common/utility” project.
Onion architecture helps us fight this by enforcing true loose coupling. As you will see throughout the talk, our UI layer has no reference to any infrastructure/DAL, just the Core business logic. Even the business logic (Core) has no access to any infrastructure concerns. Rather than build on top of the database, it externalizes it. It defines what it needs using its own interfaces, and they are implemented as far outward as possible in Infrastructure. We then bind them together using an IoC container to bring the application to life.
Video
Matt Hidinger is a .NET developer and enthusiast. He is currently doing .NET consulting at Triton-Tek focusing on ASP.NET MVC, Silverlight, and Windows Phone 7.
Where: Redpoint Technologies, 233 South Wacker Dr, Suite 750, Chicago (map)
-
Resources
- Mailing List
- @ChicagoAltNet on Twitter
- Chicago Code Camp
-
A Few Members
- jdn
- Derik Whittaker
- Mike Two
- andrewbadera
- Chris May
-
ALT.NET Links
-
Sponsors
-
Associated with
-
All Past Events
- Getting deeper into microcont…
- Async Programming With .NET 4…
- Real world Windows Phone Deve…
- Get started with the .NET Mic…
- Service Oriented Architecture
- Year-end Meetup
- Poor Man's Kanban
- JavaScript MVVM with Knockout…
- Objective-C and iOS for .NET …
- CoffeeScript
- Onion Architecture With ASP.N…
- Let Cygwin Take You To a Whol…
- Guerrilla Agile
- Umbraco wants to be your frie…
- node.js breaks JavaScript sti…
- Messaging with nServiceBus
- Year-end Meetup
- .NET? MonoDroid Does
- SpecFlow: One Step closer to …
- Selenium 101.3: Practical Fun…
- Python for .NET Developers
- MongoDB 101
- Well Behaved JavaScript with …
- From Zero to Automated Build …
- Application Instrumentation w…
- Introduction to Rake with Alb…
- Scratching the surface with M…
- Jdn presents "CQRS in roughly…
- Dynamic C# and a New World of…
- Building OpenSocial Applicati…
- Get Comfy With CouchDB
- Top 10 Things in Ruby that Ev…
- A Re-Introduction to ASP.NET …
- 0-60 with Fluent NHibernate
- Git Without Puns
- F# Outside the Lab
- Collaborative Acceptance Test…
- Open Space
- XP: After 10 years, why are w…
- Planning for 2009
- Lightning Talks
- The Different Views of ASP.NE…
- Core: An Aspect Oriented Busi…
- Inversion of Control for the …
- Continuous Integration with C…
- Mock Objects In Practice
- Resharper versus CodeRush
- Continuous Integration with T…
- Socialize and Discuss Communi…
- Social Meeting #2











