我有內置網絡win.forms(點擊一次)應用程序與自定義內置報告模塊(40 + WinWord & Excel報告)。模塊處於分離的程序集並通過接口抽象出來。我們有資源並繼續支持它。幫助重構傳統的自定義報告模塊
常用接口看起來像:
IReportProvider {
// introspection stuff
IEnumerable<ReportCategoryInfo> GetReportGroups();
IEnumerable<ReportInfo> GetReports(Guid categoryId);
...
// common function
ReportResult CreateReport(Guid reportId, ReportParamCollection prms, ..)
}
ReportInfo介紹基本信息需要&參數。用戶界面是自動生成的,讓用戶選擇報告參數。
class ReportInfo {
public Guid Id { get; set; }
public string Title { get; set; }
public List<ReportParameterInfo> Params { get; set; }
...
}
和ReportResult提供二進制報告表示以及二進制類型(是否Word2003中,Excel2003中,e.t.c)
class ReportResult {
public byte[] Document { get; set; }
public ReportType DocumentType { get; set; }
public List<string> Warnings { get; set; }
...
}
沒有認證要求和字/ EXCEL表示是必須的。 PDF不受歡迎。
問題是 - 每次添加/更正報告時,我們都會更新報告模塊併發布新的應用程序版本(因爲它們被捆綁在一起)。
我想:
- 避免新的應用程序版本時報告更新。
- 我們還必須將Intranet Web界面添加到報告中。
我要重構當前的代碼方式如下:
- 提取報告功能爲單獨的WCF服務
- 認沽報告模板文件(EXCEL & Word模板)進行申請,並把到文件夾只能通過報告服務訪問。
- 新的WCF服務將提供內省接口(什麼報告存在和需要哪些參數)和方法來檢索二進制報告表示(word或excel)
- 應該有與WCF服務進行通信,兩個客戶端:Win.Forms爲目前的客戶端和Web之一。客戶端將提供報告導航UI界面,讓用戶填寫參數並接收報告文件。 Win.Forms客戶端將執行WinWord或Excel以顯示收到的報告。
您對此有何看法?
謝謝你的迴應。我提供了一些細節,請看看它。 – 2010-07-13 05:50:23