мы можем передать набор данных методу веб-службы?Если да, то как? - PullRequest
5 голосов
/ 11 февраля 2011

мы можем передать набор данных методу веб-службы?Если да, то как?

Ответы [ 3 ]

7 голосов
/ 11 февраля 2011

IIRC, «да» (просто есть параметр DataSet), но также «вы не должны»; в то время как .NET может знать, как его обрабатывать, предполагается, что веб-сервисы могут взаимодействовать на основе сущностей XML; DataSet (даже при сериализации в формате XML) примерно так же далеко, как вы можете получить. IMO было бы лучше написать некоторые базовые классы, которые представляют вашу модель, и предоставить эти веб-службе, поскольку они могут быть правильно представлены в xsd для целей SOAP.

2 голосов
/ 11 февраля 2011

Передача DataSet в веб-сервис не очень хорошая идея. Вместо этого используйте методы DataXet ReadXML или WriteXML для передачи данных в веб-сервис и чтения их в конце веб-сервиса.

Редактировать : Если возможно, создать отдельные классы, как сказал Марк Грейвелл, если это невозможно для вас (что является редким случаем), то вы можете использовать вышеуказанные методы для передачи данных для лучшего подхода, чем для прямой передачи DataSet .

1 голос
/ 11 февраля 2011

Марк прав насчет набора данных. Вероятно, это один из худших принципов дизайна, которые вы можете сделать. Однако вы не должны создавать свои контракты данных так, как вы представляете свою модель. Созданные вами SOAP-сообщения должны быть определены как сообщения. Вы отправляете не объекты по проводам, а сообщения SOAP. Затем вы можете использовать одну из ваших объектных моделей, инкапсулированных этим сообщением, но не отправлять ее как сам объект.

Работа на основе сообщений позволяет вам лучше контролировать такие вещи, как заголовки безопасности и ошибки.

http://msdn.microsoft.com/en-us/library/ms734675.aspx

...