2012-04-12 125 views
3

我正在尋找有關構建會計應用程序的方向的輸入。應用程序需要允許高度定製,有時需要更改整個過程。應用程序體系結構簡化應用程序定製

我想要一種方式來進行更改,而不必在客戶有特定修改請求時重新編譯整個應用程序。後端將是某種SQL數據庫。由於成本原因,最可能的SQL Server Express。前端將是C#。

我正在考慮一個基於事件的系統,該系統將在發生不同類型的操作(如條目)時發生事件。然後我會有一個處理事件的插件系統。我可能需要讓多個進程在數據最終保存之前以特定順序應用於數據。它也需要觸發其他進程。

我想保持我的基本應用程序相同,這適用於大多數客戶,但具有加載其他特定客戶擁有的自定義進程的優雅方式。

我接受所有建議。即使他們正在想辦法完全不同的方式來解決問題。我們目前的內部開發人才是.NET和MS SQL Server。我不知道可能適合這種情況的軟件模式。

附加信息: 這不是一個完全空白的石板系統,它將具有適用於大量客戶的功能。由於各種原因,需求會根據州和甚至在需要自定義的地區和城鎮級別進行更改。

我希望能夠插入額外的預編譯模塊。當我開始研究可能的選擇時,我想象一個空的處理程序,我可以通過插件插入代碼。舉例來說,一個新的條目是對總帳進行的,它引發了一個事件。處理程序被調用,但處理程序的代碼來自一個插件,這可能是我的原始過程,適合80%的客戶。如果客戶想要自定義操作,我可以添加一個完全替換原始操作的插件,或者在原始操作之後通過另一個插件添加額外的後處理步驟。我猜想有一種分層的過程。

+1

你能詳細說明爲什麼你不想編譯?你是說你希望能夠插入額外的預編譯模塊,或者擁有一切由某種配置驅動的東西嗎? – Ian 2012-04-12 18:58:08

回答

2

您可以看看Managed Extensibility Framework 它提供了豐富的組合層功能,允許您構建鬆散耦合的插件應用程序。

更新:聽起來像你需要預先定義的模塊在不同的地理區域,並使用責任鏈設計模式可能會幫助你管理變化的原則。 對不起沒有提供的代碼只是拋出我的想法

+0

我真的很喜歡這種可能性。特別是在發現「擴展本身可以互相依賴,MEF將確保它們以正確的順序連接在一起(另一件事情你不必擔心)」之後。「這聽起來非常接近我的想法。謝謝。 – Martin 2012-04-12 21:19:59

0

Windows Workflow Foundation (WF)(.NET Framework的一部分)是您的需求的潛在候選人。它可以動態組合各種動作,命令和腳本,讓您可以更輕鬆地爲不同的用戶/客戶自定義不同的工作流程。

WF由Biztalk用於大規模系統集成,並由許多其他應用程序託管,這些應用程序需要能夠輕鬆修改許多較小任務和操作的編排。

您可能想從this tutorial on WF4開始。

HTH。

+0

這是有限的 - 在那裏,做到了。如果您的應用程序不支持參加例如用戶界面(在winform/wpf應用程序中),這是沒有用的,因爲您僅限於已提供的表單。但它對於靈活的業務邏輯非常有用。 – TomTom 2012-04-12 19:44:30

+0

我不得不仔細看看一些例子。看起來它可能有一些可能性。這讓我想起SQL Server Integration Services。謝謝。 – Martin 2012-04-12 20:02:45

0

它不只是插件或方式你如何從技術上解決插件問題,使用MEF(+1 @ laptop)或其他什麼,你必須盡最大努力定義插件在你的應用程序中「點」,這是最重要的,例如。你將在那裏放置那些空白的「事件」來放置你的代碼,或者這個事件或插件會有什麼參數。

例如可用的插件將在保存事件之前,但您將不得不在應用程序中只保留一個位置以保存各種類型的業務文檔,因此您可以在那裏調用插件並且參數將是抽象文檔對象。因此,你必須認真思考你的系統架構,對於各種插件點要足夠抽象,並且完全做到這種架構,不要只做系統的一部分,並開始編碼。

我希望你明白我的意思,因爲英語不是我的母語。