Going through the same selection process myself, I have only just elected
for an ASP.NET WebService over using Remoting on the grounds of an MSDN
article I found recommending against the use of Remoting in a internet
environment.
Now Im deciding between DataSets vs Custom Entities...the list is as long as
your arm in terms of the pro's and con's of each, the general consensus
amongst developers all over the web seems to be, according to my summary of
2 weeks worth of research;
1. Datasets
Are claimed to be a quick kludge, for small scale projects with a tight
deadline and specific functionality and also go against principes of SOA
(
http://en.wikipedia.org/wiki/Service-oriented_architecture) which seems to
be the current vogue.
They are .NET specific so each end must be a .NET based client (in your case
no problem) according to most they are classed as a bit chunky and
unwielding, often providing large amounts of extra meta data that has to be
sent over the wire along with the actual data (change information for
re-merging when passed back to a server for instance)
2. Custom Entities, wont DataBind to components as nicely as a DataSet
without you having to create some custom collection handlers which interface
to BindlingList and others, simple readonly bindling can be achieved quite
easily however with a simple ArrayList or List<T>. They are lighter and
generally faster to retrieve and send down the wire, in fact some articles
claim that developers find .NET runs faster using a DataReader to manually
extract and populate a list of Custom Entities and Serialize them than by
filling a Dataset and Serializing them. You have total control over the
serializing process also, with the ability to leave out bits and pieces and
give XML nodes different names to your properties etc. Since theres no
Database Specifc information in your custome entity all the persistence and
concurrency must be handled by you when changes are sent back up the wire.
3. Then theres Typed Datasets which are kind of somewhere between the two,
you get the nice Intellisense that you would get with your Custom Entities
but you also get the Database Metadata for Persistence - I beleive, so they
are worth checking out also.
You should really look at using an ORM framework, such as Rocky Lhotka's
CSLA
www.lhotka.net , the various frameworks at
www.mygenerationsoftware.com but there are many more, some commercial
offerings, the majority of these tried and tested frameworks some of which
power large enterprise projects adopt custom entities and not datasets as
their preferred data containers.
Great articles on Custom Entities vs Datasets
http://objectsharp.com/Blogs/barry/archive/2004/02/10/273.aspx
http://msdn.microsoft.com/msdnmag/issues/05/08/CuttingEdge/
http://www.lhotka.net/WeBlog/ThoughtsOnPassingDataSetObjectsViaWebServices.aspx
Report back how you get on
Chaz