2009-02-17 27 views
0

我有一個使用2.0框架的.NET大型遠程項目。服務器的API通過接口公開,共享類型包含在與客戶端應用程序共享的程序集中。.NET遠程處理,版本控制和接口

我有一些方法接受一個基類的數組,它有許多不同的繼承類。

例如,我有基類「車」,有兩個類繼承它說「汽車」和「卡車」。

我有一個方法IFoo.Save(名單車輛)

後來我補充一點,從「車」評選的「摩托車」繼承一個新的類,只有服務器或客戶端有新的共享組件,但不都。其中之一將無法解決新的類型。

你覺得什麼是處理這種情況的最靈活的方法?

編輯:這是Windows窗體客戶端應用程序和託管在Windows服務中的遠程處理服務器。

回答

2

ClickOnce是一個很好的解決方案。

或與類不可知的Web服務方法。傳遞版本化的二進制流式字典,可以將其重新組合爲對象。如果重要的話,寫下你的對象重構的東西來處理這兩個前向和後向兼容性,否則只是拒絕具有「未來」版本號的數據。

Web服務非常適合解耦。字典非常適​​合傳遞一般數據。基於彙編的類版本控制是可怕的(即使在最近版本的.Net中的序列化變化)並導致瘋狂...

+0

+1「並導致瘋狂」 – 2013-03-06 13:54:32

1

這似乎更像是一個部署問題。服務器和客戶端必須能夠訪問相同版本的共享程序集。你的戰略將取決於平臺 - 這個網站或形式?

執行此操作的一種方法是強制客戶端使用共享程序集的特定版本併爲該程序集提供交付方法給客戶端。

2

發佈更新。對於這樣的事情,你總是必須擁有同一版本的所有內容。也許考慮ClickOnce讓每個人保持最新狀態。