DataSet - это устаревшее, устаревшее решение типа «как и / или», которое долгое время прекрасно работало в разработках перетаскивания .
Как только вы захотите раскрыть некоторую логикусервис, использующий WCF или любой другой фреймворк, вы должны принять во внимание, что он не должен транспортировать бесполезные данные и только то, что клиент должен использовать, а клиент может быть пользовательский интерфейс или просто другой сервис или бэкэндengine.
В таких сервисах, как WCF, лучшим подходом является DTO ( объекты передачи данных , также известные как объекты значений ), которыеоблегченные версии бизнес-объектов, абсолютно не связанные с любым уровнем (это не зависит от бизнеса, пользовательского интерфейса, данных ...), которые можно легко сериализовать в XML или JSON и десериализовать на любой платформе, а не только в сильнотипизированные среды, но также интерпретируемые, динамически типизированные, такие как JavaScript, PHP, Python или Ruby (или многие другие).
Думайте о DTO как о классе, который имеетct количество свойств, которые некоторым потребителям нужно для работы с уровнем обслуживания.
Практический пример: У вас есть класс Person , имеющий имя, второе имя и возраст.В вашем пользовательском интерфейсе вам нужно запросить у какой-либо службы список Person , и там вам нужно только показать SecondName .В этом случае вы создадите класс с одним свойством SecondName , и вы не будете давать пользователю полный интерфейс Person через уровень обслуживания, поскольку он дешевлеи, очевидно, оптимально.
Если этот сервисный уровень возвращает PersonDto объектов, JSON-сериализованный список из 3 человек будет [{ "SecondName": "Blah" }, { "SecondName": "Bleh" }, { "SecondName": "Blih" }]
.Я не думаю, что DataSet будет такой легкой сериализацией.
Проверьте эти статьи о DTO :