Wanted: Input for the Next Version of my N-Layer Architecture Articles!

It's been more than one and a half year since I released the first version of my articles on N-Layer Design. Since then, the three articles combined have been read well over 200,000 times. Besides generating a lot of page views, the articles also attracted a lot of comments from you, my readers, with great feedback and requests.

Although the main aim of my design has always been to keep things simple and open (that is, no inheritance, no complex serialization code, all code in a single web project, no ADO.NET Entity Framework and so on) I did get a lot of requests for additional code, features and guidance. The most popular requests extracted from the comments are:

  • Validation inside the business objects
  • The ability to sort and page the data
  • Use inheritance to provide a common base class for all business objects
  • Use separate Class Library projects to make it easier to swap layers (and for some people who didn't really understood it all, give the impression of more object orientation and "correctness".)

With these requests in mind, I am considering writing a vNext version of the articles in the next few weeks or months, providing a new .NET 3.5 version of the code base with the following features:

  • A separate project for the web site and two class libraries for the Bll and Dal Layers (since Visual Web Developer 2008 SP1 now supports class library projects).
  • A ValidationBase class to provide common validation logic and implement business rules including the ability to display validation errors in the UI.
  • A BusinessBase to inherit from ValidationBase to provide additional common behavior.
  • Additional overloads and code for sorting and paging in the business objects.
  • The ability to search for contact persons.
  • A localized (e.g. translated) version so it's easier to display validation rules in multiple languages.

I haven't started on the article yet but I am just gathering ideas at this stage. So, if you have a topic you want covered in an upcoming article, now's the time to respond. Send me a message through my Contact page, explain what it is you want covered and in what way (if you have some clear ideas on that) and I'll add your ideas to the suggestion list.

Notice it may take some time before the article will appear as I am busy working on some other projects as well.


Where to Next?

Wonder where to go next? You can read existing comments below or you can post a comment yourself on this article .


Consider making a donation
Please consider making a donation using PayPal. Your donation helps me to pay the bills so I can keep running Imar.Spaanjaars.Com, providing fresh content as often as possible.



Feedback by Other Visitors of Imar.Spaanjaars.Com

On Monday, September 08, 2008 12:27:47 PM Mahesh Pandey said:
Hi Imar,

Its really encouraging that you are going to come up with such advance topics involved in the project.I would like to see the validation base class for validation and localization of the validation rules.The idea of getting different class libray projects in the application BLL and DAL is great.Some more new concepts if get included will also be guiding in the development world.

Thanks,

Mahesh
On Monday, September 08, 2008 2:47:01 PM Jeff said:
Imar,
I know I'm responsible for at least 9 of those over 200,000 hits on those articles and boy am I glad to see you going into these more advanced topics, ESPECIALLY the validation and class library projects.

I can't wait to see them come out!
On Thursday, September 11, 2008 5:51:28 AM Reddy said:
Your previous article was of great help to me...
   I think you should get started with the draft version as soon as possible.. later you can modify or fine tune it based on inputs from readers.

Thanks
On Thursday, September 11, 2008 7:37:50 AM Imar Spaanjaars said:
Hi Reddy,

>>  I think you should get started with the draft version as soon as possible..

How about you leave the planning to me?? ;-)

Imar
On Thursday, September 18, 2008 2:09:47 PM Vladimir Kelman said:
Glad to hear this news. You thought me a lot and gave a base understanding of what a clean N-Tier design is, so it is easier to measure strong and weak points of other N-Tier approaches. Personally, in my work, I'm looking for a possibility to better decouple various layers/components by adding some Dependency Injection stuff. To me, filtering / validation by business rules functionality is a separate concern and should better be added through DJ. The same is true for DAL.
Thank you!
On Friday, October 03, 2008 4:05:38 AM John said:
Hello Imar,

First of all kudos to your articles on C# and ASP.Net. Your N-Layer Architecture gave me heads up on implementing OOPS Concepts in my .Net Project.

Regarding the input for the next version, i would like to suggest extensive usage of Interfaces and Linq. I guess these would be the ones where most of your web site visitors would be keen to look at.
On Friday, October 03, 2008 12:56:33 PM Jeff said:
I definitely think a good look at how and when to use interfaces would be good. Maybe a look at the difference between abstract and sealed classes as well.
On Thursday, October 23, 2008 12:08:22 PM Vamsi Krishna said:
First of all, its great that you are planning to develop next version of N-Layer Architecture Series. I recently started reading your articles and find them very useful.

I think, you have already covered intermediate level OOPs in ur N-Layer Architecture tuts. This time it would be great if

-> You explain even some of the development methodologies (SOA , Agile) and also use Enterprise Library / Web-client software factory

-> Use latest technologies like WCF , LINQ , AJAX(using Jquery/Mojo Tools)

-> also developing and reusing  Web Controls or User controls

-> Defining Requirements ( Functional , QOS) and tracking them from till the end of the life cycle

-> Lastly, cover some debugging skills and using  some built-in diagnostics.

If possible, I would like to contribute in this series

Thanks
Vamsi Krishna

On Thursday, October 23, 2008 6:08:53 PM Imar Spaanjaars said:
Hi Vamsi,

Thanks for your feedback and ideas. I am afraid I won't cover most of the topics you mention as they deal with software development in general, not with N-Layer design. I realize information on debugging skills, agile methodolgies and so on are very important, but they are way outside the scope of N-Layer design. I had (and have with the new series) great trouble keeping this series under 50 pages, while the topics you mention warrant a number of books. Not something I want to write in my free time for free.... ;-)

How do you see a contribution? Do you have a blog where you publish stuff yourself as well?

Imar
On Thursday, October 23, 2008 6:14:17 PM Imar Spaanjaars said:
Hi Jeff and John,

The new series will definitley feature a couple of base classes - some abstract - to more clearly separate and localize behavior.

Cheers,

Imar
On Thursday, October 23, 2008 6:32:25 PM Jeff said:
Imar,
Wow... 50 pages per article? Okay, you easily just beat the longest thing I ever wrote by myself which was 38 pages. Even at 50 pages a piece I'd still read them and I think they'd still be worth it. However, with that said, there's just not much I can do about this all happening in your free time, and if you're anything like me, free time is not something you have a lot of.

BTW, I didn't know you were accepting contributed writing...
On Thursday, October 23, 2008 6:40:49 PM Imar Spaanjaars said:
Hi Jeff,

I said series, not articles... The current series is a 4 part series (if you count the one on sorting) totalling around 50 pages.

I usually don't accept contributed writing (although Peter Lanoie has posted some articles on this site), but it can never harm asking what people have in mind.... ;-)

By the way, with the part about free time, I was addressing Vamsi's requests; not yours.

Imar
On Thursday, October 23, 2008 7:00:22 PM Jeff said:
Whew! 50 pages for the series is a lot better. The one thing I like about here is that you always post sample code or a sample project which rocks!



On Friday, October 24, 2008 7:02:36 AM Vamsi Krishna said:
Hi Imar,
I usually blog @ my company's intranet portal, planing start my own blog in next month.

Regarding the Contribution, I thought that we would start a project @ Codeplex (www.codeplex.com) and then after the initial planning I would be assigned a module and then we'll sync @ some frequency.

Once its complete, during the development; we would publish the article.

I think I am deviating ur main moto of this article, just give it a thought; we can start some thing new in parallel :-)

Thanks
Vamsi Krishna
On Friday, October 24, 2008 12:41:14 PM Imar Spaanjaars said:
Hi Vamsi,

I have no intention making this a Codeplex project. The actual sample site is of minor importance and mainly serves to demonstrate the concepts discussed in the articles.

Cheers,

Imar

Talk Back! Comment on Imar.Spaanjaars.Com

I am interested in what you have to say about this article. Feel free to post any comments, remarks or questions you may have about this article. The Talk Back feature is not meant for technical questions that are not directly related to this article. So, a post like "Hey, can you tell me how I can upload files to a MySQL database in PHP?" is likely to be removed. Also spam and unrealistic job offers will be deleted immediately.

When you post a comment, you have to provide your name and the comment. Your e-mail address is optional and you only need to provide it if you want me to contact you. It will not be displayed along with your comment. I got sick and tired of the comment spam I was receiving, so I have protected this page with a simple calculation exercise. This means that if you want to leave a comment, you'll need to complete the calculation before you hit the Post Comment button.

If you want to object to a comment made by another visitor, be sure to contact me and I'll look into it ASAP. Don't forget to mention the page link, or the QuickDocId of the document.

For more information about the Talk Back feature, check out this news item.