There's a lot of good books on design patterns, and some are specific to C# and/or
vb.net. Please do some google searches. The Gang of Four book is the classic on design patterns, but it uses an odd language (I think it's Smalltalk), so it's not right for everyone. You can also get Martin Fowler's book on refactoring. Refactoring is a hot topic in VS 2005 because they've built-in some refactoring support. This is one enhancement that started in C#, but the
VB.NET version goes even farther than C#.
I provided updated code for VS 2003 based on the first edition, but I am not one of the authors of the original book, and my work has not been officially sanctioned by anyone. Look in the recent messages here for a download link.
Most modern sites are using 4 tiers now (if you include the DB):
- data layer (Database: tables, stored procs, etc)
- data access layer (feeds data to BLL)
- business logic layer (business rules and functionality)
- UI layer
I posted some resources the other day: newsgroups, blogs, etc. At first the MS blogs will be over your head, but you'll learn a lot if you stick with it and read them every day.
Almost everyone uses multi-tier designs now, so you see them all over but I don't know of any books dedicated to this subject.
The second edition of this book was held up a bit pending the release of VS 2005. Unlike some books that were released before the final release of VS 2005, this book will be completely tested and verified on the final release, so it will take another couple months. Because of the internal review process it's hard to give you any specific date. But when it's released it will be impressive: it's not going to be a facelift of the first edition. Every word will be new, and you'll learn a lot about the Provider pattern, lazy loading, and most of the new functionality in ASP.NET 2.0. Marco Bellinaso is hard at work on it and he's including the new experiences he's had plus many hours of research and experimentation with the betas.
You might also want to do some research on Object/Relational Mapping (ORM). This is what the BLL does to take a relational data model from the DB and turn it into OOP objects that can be used in the UI. Marco will explain how to do this yourself in C#, but you can also find some automated tools to do this (Paul Wilson's ORMapper, NHibernate, LLBLGen Pro, etc). I agree with Marco that a custom code version is best, but I learned a lot by looking at there automated tools, and so will you. I met Paul at the Atlanta Code Camp and I was one of the biggest critics of automated ORM until after his presentation. He's extremely knowledgable and he makes a strong argument. He knows a great deal about modern system design and everyone should study this debate in order to understand the issues better. Trust me, you'll be a much better developer if you learn both sides of the automated ORM debate!
Eric