3-tier architecture question: datasets or business objects between tiers?


In 3-tier architecture, what is best to send between the tiers, XML, Datasets or custom objects and why?

The book "Expert C# Business Objects" advocates objects.

Which other books should I read to get a good overview of my options?
Are there any particular problems with passing business objects, is there a backside that the author don't mention?
I've got the impression that typed dataset is a rather common choice on what to pass between the tiers?
LVL 10
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

I think this varies in many ways. Still see what microsoft says regarding this issue:~

Recommendations for Data Access Strategies:~  

rj2Author Commented:
Will using business objects result in having to write more code than if using datasets?
C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

See following, exactly what you're looking for..

Designing Data Tier Components and Passing Data Through Tiers:~


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
This is a quite interesting question. Unfotunatly I have not real good answer nor even a suggestion. I guess for most OO languages the answer is clear the use Objects.

But one problem with objects is: They have to be constructed and in the end they get transformed to something not very objectish e.g as a row in a table.

If you look into popular things like Ruby on Rails, JSP and the like you'll see that a lot of time is spend on

getting textual input -> construct the object -> work on the object
-> flatten the object to put them into an database.

We face a problem OO is quite poor on. Data persistence, agreed there do exsit thousand of solutions for that, but it shows that there is not "common" way. Agree also there do exist OODBs but they are not in wide-spread use.

I once though why should one use anything else but objects today I'm more thinking what the hell do I have from OO?

I think you should read Philip and Alex's Guid to Web publishing to get the point.

I feel with the Web this things even get worse (every day). I'd argue even today most of the information is still text, words one after the other. All in the Web is more or less based on "strings" So for simplicity I 'd argue the best bet is to use something which can do the most crazy things on strings with the least effort.

On the othe hand one other data-structure is ubiqueous, tables, maybe it's really time to get back or progress to somthin which can handle in easiest ways. persistence would nearly a no-op because writing tables in any form is one of the easiest tasks.

Well, you've effectively just asked the BIG QUESTION on how to model your domain layer, and identified the two alternate approaches.

The design-god himself, Martin Fowler, says (I hope I get this right) that it doesn't matter so much which one you use - your decision is probably best made by the tools you have. .NET makes datasets very easily available, so for RAD, that may be the best choice.

I would recommend his book Patterns of Enterprise Application Architecture, it goes into it with a nice balance for each model.

Oh, by the way, don't concentrate too much on "X or Y or XML" - Xml should be regarded, in this case, as a persistence medium for serializing and transporting objects that can then be deserialized at the other end back into in-memory objects. As such the alternatives are binary data, XML etc. Your main choice then comes back to custom Business Objects, or Datasets.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Programming Theory

From novice to tech pro — start learning today.