前面瞭解過程式的背景需求和基本架構之後,接著就來看整個開發工作是靠哪些原始碼兜起來的。因為兩個 WinForm 的原始碼骨架都差不多,所以這邊就拿 SybaseUtility 專案當範例。
Service References
服務參考,下載功能會用到的 Web Service,也就是發佈到遠端網站的 WebUtility。
Business Objects
專案資料夾,存放業務邏輯會操作到的物件。
類別名稱 | 程式檔名 | 用途簡述 |
Json 內容 | Jsons.cs | 在資料進入或離開本工具之前,都需要先轉換成 Json 格式。 |
修理廠基本資訊 | Garages.cs | 從設定檔取得修理廠資訊,供後面呼叫使用。 |
資料上傳參數 | Arguments.cs | 呼叫第三方資料接收服務的所需參數。 |
上傳資料類型枚舉 | TransmitterGenre.cs | 要上傳到微信端的資料類型:例如客戶資料、銷售單等等。 |
上傳功能屬性 | Transmitter.cs | 資料上傳物件的屬性:當前資料類型、上傳提示、還原提示。 |
下載資料類型枚舉 | ReceiverGenre.cs | 要從微信端下載的資料類型:例如預約記錄、代辦申請。 |
下載功能屬性 | Receiver.cs | 資料下載物件的屬性:當前資料類型、下載提示、還原提示。 |
Constants
專案資料夾,存放與資料類型連動的相關常數。
類別名稱 | 程式檔名 | 用途簡述 |
預覽表頭提示文字 | HeaderText.cs | DataGridView 上的標題文字。 |
預覽資料繫結欄位 | ColumnText.cs | DataGridView要和資料來源做繫結的欄位名稱。 |
資料過濾條件語句 | CriteriaText.cs | 篩選資料的 SQL 敘述。 |
資料過濾標題文字 | FilterText.cs | 做資料篩選時,輸入條件的提示文字。 |
候選資料主鍵索引 | PrimaryKeyIndex.cs | 資料表主鍵欄位在 DataGridView 中的位置。 |
資料預覽訊息提示 | PreviewState.cs | 狀態列顯示本機資料庫中,已上傳或未上傳資料的筆數。 |
傳送還原訊息提示 | FinishState.cs | 對話框提示有幾筆資料上傳完成或還原成功。 |
DataAccessObjects
專案資料夾,存放每個資料類型的資料庫操作類別和 SQL 敘述。
類別名稱 | 程式檔名 | 用途簡述 |
N/A | SQLStatements | 子資料夾,存放本工具所有會用到的 SQL 敘述。 |
客戶資料存取 | CustomersDB.cs | 取得客戶資料、變更上傳狀態、還原上傳狀態等等操作。 |
銷售單資料存取 | SaleListsDB.cs | 取得銷售記錄、變更上傳狀態、還原上傳狀態等等操作。 |
維修記錄存取 | RepairingsDB.cs | 取得維修記錄、變更上傳狀態、還原上傳狀態等等操作。 |
會員卡資料存取 | VIPCards.DB.cs | 取得會員卡資料、變更上傳狀態、還原上傳狀態等等操作。 |
積分兌換項目存取 | CreditConvertItemsDB.cs | 取得積分兌換項目、變更上傳狀態、還原上傳狀態等等操作。 |
預約維修記錄存取 | ReservesDB.cs | 下載資料到本機資料庫、刪除狀態還原成功後的本機資料。 |
Facades
專案資料夾,存放每個資料類型用戶端操作和資料庫操作的中間層類別。
類別名稱 | 程式檔名 | 用途簡述 |
資料操作驗證 | Validating.cs | 操作資料前,提示是否已確認好資料狀態和資料類型。 |
資料來源設定 | DSNConfiguring.cs | 讀取或寫入資料來源設定檔的中間層。 |
修理廠設定 | GarageConfiguring.cs | 讀取或寫入修理廠基本資料設定檔的中間層。 |
傳輸服務設定 | WebServiceConfiguring.cs | 讀取或寫入資料上下載網址設定檔的中間層。 |
客戶資料上傳 | CustomersTransmitting.cs | 處理客戶資料預覽、過濾、上傳、還原的中間層。 |
銷售記錄上傳 | SaleListsTransmitting.cs | 處理銷售記錄預覽、過濾、上傳、還原的中間層。 |
維修記錄上傳 | RepairingTransmitting.cs | 處理維修記錄預覽、過濾、上傳、還原的中間層。 |
會員卡資料上傳 | VIPCardsTransmitting.cs | 處理會員卡資料預覽、過濾、上傳、還原的中間層。 |
積分兌換項目上傳 | CreditConvertItemsTransmitting.cs | 處理積分兌換項目預覽、過濾、上傳、還原的中間層。 |
預約記錄下載 | ReservesReceiving.cs | 處理預約記錄預覽、過濾、下載、還原的中間層。 |
Helpers
專案資料夾,存放處理資料上傳的通用類別,處理讀寫設定檔內容的通用類別,以及處理資料庫存取的通用類別。
類別名稱 | 程式檔名 | 用途簡述 |
設定檔內容讀寫 | ConfigHelper.cs | 讀寫設定檔內容,取得作業系統的ODBC資料來源清單。 |
資料上傳處理 | WebServiceHelper.cs | 跟據網址和上傳所需參數,呼叫第三方 Web Service 送出資料。 |
資料庫存取操作 | DbHelper.cs | 資料庫連接,取得 DataTable 或 DataSet 等等。 |
Interfaces
專案資料夾,存放主要物件的介面定義,用途在規範物件的共有行為。
類別名稱 | 程式檔名 | 用途簡述 |
基礎設定行為 | IConfiguring.cs | 所有設定都會有的行為,讀取和寫入設定檔內容。 |
上傳作業行為 | ITransmitting.cs | 所有資料類型上傳時都會有的行為,具體詳見備註一。 |
下載作業行為 | IReceiving.cs | 所有資料類型下載時都會有的行為,具體詳見備註二。 |
備註一:取得表頭文字,取得繫結欄位,變更過濾提示,取得預覽資料,取得過濾條件,取得主鍵索引,轉換資料格式,產生上傳參數,資料上傳作業,變更上傳狀態,還原上傳狀態。
備註二:接收微信端傳回的中介資料,將中介資料轉為 DataTable,取得表頭文字,取得繫結欄位,取得過濾條件,取得主鍵索引,候選下載資料繫結,候選資料寫入本機資料庫,微信端資料狀態變更,微信端資料狀態還原,還原狀態刪除本地資料。
Operations
專案資料夾,存放使用者與控制項互動的中間層類別,和使用者與上傳作業物件、下載作業物件互動的中間層類別,以及上傳作業與第三方 Web Service 互動的中間層類別。
類別名稱 | 程式檔名 | 用途簡述 |
按鈕狀態開關操作 | ButtonOperation.cs | 設定按鈕的可按與不可按。 |
控制項取值賦值操作 | ControlValueOperation.cs | 文字方塊、複選框,下拉選單的取值和賦值。 |
預覽控制項通用操作 | GridViewOperation.cs | DataGridView 在上傳下載模組都會有的操作,見備註一。 |
資料下載操作 | ReceiverOperation.cs | 使用者與資料下載物件互動的相關操作,見備註二。 |
資料上傳操作 | TransmitterOperation.cs | 使用者與資料上傳物件互動的相關操作,見備註三。 |
第三方處理程序操作 | WebServiceOperation.cs | 上傳作業與第三方處理程序互動的相關操作,見備註四。 |
備註一:清空預覽區,首欄建立複選框,資料繫結,計算並顯示預覽筆數,計算並提示處理筆數,取得符合篩選條件的資料,取得已勾選項目主鍵,取得所有項目主鍵。
備註二:建立資料類型下拉選單,設定點擊已下載時的按鈕狀態,設定點擊未下載時的按鈕狀態,跟據選擇的資料狀態和資料類型預覽資料,預覽資料條件篩選處理,下載所有資料,下載已勾選資料,還原所有資料,還原已勾選資料。
備註三:建立資料類型清單,設定點擊已上傳時的按鈕狀態,設定點擊未上傳時的按鈕狀態,根據選擇的資料類型改變文字提示,跟據選擇的資料狀態和資料類型預覽資料,預覽資料條件篩選處理,上傳所有資料,上傳已勾選資料,還原所有資料,還原已勾選資料。
備註四:產生所選資料類型的參數與參數內含值,呼叫所屬資料類型的 Web Service 上傳方法。
Tools
專案資料夾,存放的是資料格式轉換和資料映射處理的中間層類別。
類別名稱 | 程式檔名 | 用途簡述 |
資料格式轉換器 | DataConverter.cs | 收錄了幾種常用的資料格式轉換方法,詳見備註一。 |
資料映射轉換器 | DataMapper.cs | 將 DataReader 轉成泛型集合的前置作業,資料欄位映射。 |
備註一:DataReader 轉泛型集合,DataTable 轉泛型集合,泛型集合轉 DataTable,DataGridView 轉 DataTable,DataTable 轉 Json,Json 轉 DataTable,Json 轉物件,物件轉 Json。
WinForms
專案資料夾,存放的是所有功能模組都會用到的視窗操作介面。
所屬模組 | 程式檔名 | 用途描述 |
基礎設定 | fDSNConfig.cs | 資料來源設定。 |
基礎設定 | fGarageConfig.cs | 修理廠設定。 |
基礎設定 | fWebServiceConfig.cs | 第三方上傳設定。 |
N/A | fMDI.cs | 資料傳輸工具的入口,程式的主視窗。 |
資料處理 | fTransmitter.cs | 資料上傳介面,程式的子視窗。 |
資料處理 | fReceiver.cs | 資料下載介面,程式的子視窗。 |
App.Config
整個 WinForms 專案的應用程式設定檔,設定檔內容主要有兩大區塊,第一個是基礎設定裡的每個設定項目和設定值,第二個是資料上傳 Web Service 的相關設定,例如最大傳輸容量、資料編碼方式等等。