2009-02-12 30 views
1

我們的核心業務應用程序使用業務對象的庫(C#項目)。數據訪問使用Wilson O/R Mapper完成(我們今年夏天將遷移到NHibernate)。該應用程序有3個前端用戶界面:Windows Forms,ASP.NET和安裝在平板電腦上的Windows Forms應用程序。三個前端執行不同的功能,但他們都訪問業務類的核心子集。維護業務類庫的兩個版本

平板電腦應用程序是問題所在。我們嘗試限制推送到平板電腦的數據量,以減少使用SQL Server合併複製進行同步所花費的時間。我們遇到的問題是當我們向主應用程序添加新功能時,我們無需將其分發給平板電腦,或者如果它是敏感數據,則強烈需要不分發。其中一些可以通過複製來控制,但我們偶爾會在覈心業務對象中引入依賴項,這些對象必須存在才能使O/R映射器正常工作。

理想情況下,我們將有兩個版本的核心業務對象庫Full和Compact。這似乎是一個維護噩夢。是否有任何策略來管理這個?或者選擇? Microsoft如何管理完整和緊湊的.NET框架?

+0

平板電腦的運行XP平板電腦版,因此無法運行CF.你的意思是掌上電腦? – ctacke 2009-02-12 18:22:01

回答

2

你的問題談Tablet PC,這實際上就是XP,因此CF還真是不相關的,但對於這個問題主體本身,我們仍然可以談論保持由CF和FFX使用的代碼的緣故(假設你實際上是指Windows Mobile或Windows CE)。

要知道的第一件事是CF組件是retargetable。這意味着一個CF程序集可以直接被一個完整的框架應用程序使用,而不需要任何重新編譯(假設它沒有使用像P/Invoking coredll這樣的設備特定的東西,而不檢查運行時環境,使用WindowsMo​​bile命名空間等)。

如果使用重定向不會讓你一路走到那裏,那麼你可以使用編譯器指令以及部分類來處理maintennace。 Daniel Moth在his MSDN article中涵蓋了這些技巧。

2

您可以做的一件事是,如果您可以分別編譯每個平臺,則可以使用編譯器指令來限制Tablet PC平臺所需的內容。但是,使用可能證明是困難的OR映射器。

現在,在一個理想的世界中,您實際上會擁有您的Domain對象(映射到OR的那些對象),而共享的業務邏輯卻非常少。然後有一個使用這些Domain對象的BO層。如果你以這種方式設法打破了你的代碼庫,那麼理論上你可以根據自己的需要選擇需要部署的單獨的圖層。

但是,聽起來更像是你需要進行智能分割。

您可能需要做的是分割您的代碼,以使Tablet PC BO位於核心根BO組裝體中。然後有一個BO擴展程序集,它具有Winform/Web應用程序版本所需的其他對象,規則等。

因此,雖然此時您將有兩個域級別的業務對象組件,但您實際上不會有任何重複。由於您的Tablet PC BO對象也將成爲Winform/Asp.net應用程序的基礎。然後,擴展dll只包含更大版本的hte應用程序所需的額外資源。

如果您遵循此方法,可能會使管理更容易。只需從所需的Common東西和專門的方法來看它。 :)

我可以進入更多的細節,如果你想,只是想給你一個基本命中。