2011-01-06 17 views
0

我在Visual Studio 2010中創建了一個Web服務。如果它返回一個DataSet(強類型),那麼來自其他平臺的人是否可以訪問此端點並根據需要使用XML,或者它看起來像是垃圾嗎?是否從Web Services跨平臺互操作性返回數據集?

我的替代品是什麼?

編輯:如果我返回一個DataTable?我已閱讀微軟推薦反對此贊成數據集出於某種原因

回答

0

是的,跨平臺的編碼器仍然能夠讀取XML,但它不是最好的選擇。 Scott Hanselman says

從Web服務返回的DataSet是撒旦的菌種,並代表所有這是世界

這裏真的邪惡是包含1臺簡單的數據集生成的XML,具有2列和兩記錄:

<?xml version="1.0" standalone="yes"?> 
<NewDataSet> 
    <Table1> 
    <Column1>hello</Column1> 
    <Column2>world</Column2> 
    </Table1> 
    <Table1> 
    <Column1>hello</Column1> 
    <Column2>greg</Column2> 
    </Table1> 
</NewDataSet> 

您的跨平臺編碼器將需要解析XML,這可能會變得非常麻煩,尤其是在數據很複雜的情況下。數據集實際上是關於表示數據庫的 - 在設計良好的分層應用程序中,它們只應用於數據訪問層。然後它們應該變成強類型的域/模型對象,它們對數據庫一無所知。

更好的選擇是使用自定義對象。 Ryan Farleys blog有這樣的例子。

使用自定義對象的主要優點是:
1.它們是完全可互操作的。
2.它們是強類型的。
3.消費者不負責解析/反序列化XML。
4.分離數據存儲和消費者之間的關注。

附註:
我應該指出,網絡服務正在過時。如果你正在創建一個新的Web服務,你應該使用WCF。它需要一些學習,但它是一個更豐富和更靈活的平臺。

+0

那裏的XML看起來像我期望的那樣,你能解釋一下你自定義對象的意思嗎(以及它會提供什麼優點)? – Jan 2011-01-06 22:39:30