2009-06-09 53 views
1

我有一個庫,其中包含一些使用C#和JavaScript的對象。有幾個對象,讓我們調用其中一個Foo,在C#和JavaScript中使用相同的基本實現。當我想將這種類型的對象從服務器傳輸到瀏覽器時,我只需調用Foo.ToJson()將此對象序列化爲JSON,然後使用安全的eval()操作在瀏覽器端復原對象。當我的JavaScript和C#代碼庫重疊時,如何減少維護?

這是一切都很好,但庫變得複雜,需要保持同步的JavaScript和C#代碼庫是越來越困難,而且容易出錯。我對簡化這種架構或簡化維護的想法感興趣。思考?

回答

3

你可以看看使用腳本#:http://projects.nikhilk.net/ScriptSharp

因爲你的類都在C#編碼,你可以重複使用服務器和客戶端項目相同的cs文件。這樣一來,當你做出改變,它會自動編譯成的JavaScript :-)

+0

腳本#看起來非常好。從C#生成我的JavaScript代碼會很好。 – PeterAllenWebb 2009-06-11 04:49:16

2

你有沒有考慮讓你的「共享代碼」到Web服務,這樣任何應用程序可以訪問它,你可以做一切分發以幫助演出。

只是一個解決方案。

http://en.wikipedia.org/wiki/Web_services

+0

因此,在您的策略下,我不會維護對象客戶端的副本,而是使Web服務請求更新並查詢服務器端對象的狀態,是嗎? – PeterAllenWebb 2009-06-09 19:04:39

+0

正確,這樣您可以減少客戶端代碼的數量,並可以在所有應用程序中共享您的常用實用程序。另一個好處是您可以使用幾乎任何編程語言訪問您的Web服務。 – 2009-06-09 19:47:10

1
  1. 讓您的應用爲重疊的部分數據驅動成爲可能。在一定的規模下,運行雙方的狀態機解釋器可以更容易地解析相同的數據。
  2. 編寫一次代碼。有幾個C#JavaScript編譯器,你可以看看。 Script#jsc
1

使用的DTO。數據傳輸對象。如果

這樣你的JScript或C#對象的變化,你的DTO不必改變,除非該屬性是在客戶端立即要求。即使如此,你對串行化的內容和沒有的內容也有明確的區分。

Dave Ward at Encosia speaks a lot about this

+0

這是一篇了不起的文章。 – Nosredna 2009-06-09 23:20:37