2008-10-03 80 views
2

我正在構建一個ASP.NET AJAX應用程序,該應用程序使用JavaScript調用Web服務來獲取其數據,並使用Silverlight Isolated Storage來緩存客戶端計算機上的數據。最終,一旦數據被下載,它就被傳遞給使用HTML DOM顯示在頁面上的JavaScript。使用Ajax或Silverlight調用Web服務?哪個性能最好?

我想弄明白的是,在Silverlight中進行這些Web服務調用,然後將數據傳遞給JavaScript後,是否有意義?此外,無論我使用JavaScript還是Silverlight調用Web服務,Silverlight都將使用獨立存儲將數據保存到磁盤。如果我用JavaScript調用Web服務,數據將被傳遞給Silverlight緩存。

我已經完成了一些原型設計,我發現性能幾乎都是相同的。此外,其中一個引導我使用Silverlight作爲整個客戶端數據訪問層的激發器是我需要定時器定期檢查更新的數據並將其下載到緩存中,以便JavaScript可以在需要時加載。

有沒有人做過類似的事情?如果是這樣,您所描述的JavaScript或Silverlight方法的性能與您的體驗有什麼關係?

+0

順便說一句,高性能是不發一語。 http://boulter.com/blog/2004/08/19/performant-is-not-a-word/ – 2008-10-03 19:59:52

+0

我想這不是,謝謝。 – 2008-10-03 20:17:32

回答

3

由於Silverlight可以處理基於JSON和XML的服務,響應的格式完全不相關。但是,您必須考慮以下內容:

1)Silverlight的速度比JavaScript快大約1000倍2)如果您的Web服務本身基於SOAP,Visual Studio可以爲您生成一個代理,這樣您就不會不需要解析SOAP消息。 3)Silverlight的LINQ to XML和LINQ to JSON,這使得POX和JSON的解析變得輕而易舉。

在一個完美的世界中,我將使用Silverlight作爲「引擎」,並在Silverlight不可用的情況下回退到JavaScript。

問候, 洛朗

1

另一件需要考慮的事情 - 以JSON格式獲取數據將比XML和Web服務更快。 JSON很快成爲一個JavaScript對象,不需要像XML那樣進行解析。就我個人而言,我會用JavaScript。

文章:Speeding Up AJAX with JSON

0

由於JavaScript是不是多線程的,我發現,使用Silverlight訪問/緩存中的數據,然後將它傳遞給JavaScript來顯示產生更好的性能,同時不採取鎖定/凍結瀏覽器,這樣用戶可以在數據加載時保持幹勁。

+0

這不就是AJAX的意義 - 防止瀏覽器鎖定/凍結嗎? – Kon 2008-10-03 21:12:21

0

傳遞JSON格式的數據部分速度更快,因爲與XML SOAP消息不同,它不需要SOAP頭或其他任何其他信息 - 它只是純數據。因此,使消息的總大小更小。