2011-02-11 10 views

Odpowiedz

6

IIRC, "tak" (wystarczy parametr DataSet), ale także "nie powinieneś"; podczas gdy .NET może wiedzieć, jak ją przetwarzać, usługi internetowe mają być interoperacyjne w oparciu o encje xml; a DataSet (nawet w przypadku serializacji jako xml) jest tak daleko od tego, co można uzyskać. IMO byłoby lepiej napisać kilka podstawowych klas, które reprezentują twój model, i wystawić te do usługi internetowej, ponieważ mogą one być odpowiednio reprezentowane w xsd dla celów SOAP.

+0

+1 nie wszystko, co technicznie możliwe jest również dobrym pomysłem ... –

+0

+1 choć napisałem moją odpowiedź do korzystania ReadXml i WriteXML metod ale nadal pójdzie z odpowiedzią do wykorzystania oddzielne klasy przekazywać dane. – JPReddy

+0

@Marc Gravell: jak mogę przekazać dataset z Androida do usługi mydła są jakieś za to? –

2

Przekazywanie zestawu danych do usługi sieciowej nie jest dobrym pomysłem. Zamiast tego należy użyć metod ReadXML lub WriteXML DataSet, aby przekazać dane do usługi sieciowej i przeczytać je na końcu usługi.

Edit: Jeśli to możliwe utworzyć oddzielne klasy jako Marc Grawell powiedział, jeśli nie jest to możliwe dla ciebie (co jest rzadkim przypadkiem) to można użyć powyższych metod do przekazywania danych na lepsze podejście niż przechodząc bezpośrednio DataSet.

1

Marc ma rację co do zestawu danych. Jest to prawdopodobnie jedna z najgorszych zasad projektowania, jakie możesz wykonać. Jednak nie powinieneś budować swoich datacontract w sposób, w jaki reprezentujesz model. Budowane wiadomości SOAP powinny być zdefiniowane jako wiadomości. Nie wysyłasz obiektów przez przewód, ale wiadomości SOAP. Następnie możesz użyć jednego z modeli obiektów, który został zawarty w tym komunikacie, ale nie wysyłaj go jako samego obiektu.

Oparte na komunikatach roboczych umożliwia lepszą kontrolę nad nagłówkami i usterkami zabezpieczeń.

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

+0

Uwaga dodatkowa: powyższe dotyczy głównie WCF; oprzyrządowanie itp. dla * vanilla * serwisów WWW asp.net jest o wiele mniej potężne –

+0

Tak, faktycznie, można to zrobić tylko za pomocą solidniejszego framewru takiego jak WCF. –

Powiązane problemy