2008年2月23日 星期六

[政大課程] 200802 WinForm教學

前言:是計中的同仁開的課程,算是以開發新的校務系統所用的技術架構為例,
一方面算是學自己不會的技術,一方面也了解校務系統的開發模式與流程,
在講課中藉由同仁的提問,也可以體會到設計一套大系統所需要做的前置規劃,
這大概是以前比較少會注意到的細節...@@a
加入新功能系統所需要做最少的更動
各元件獨立開發的便利性
錯誤訊息分別給程式開發員與使用者看的區別
減少組件改寫需要付出的代價(重編、發佈)

主要用的架構是 .Net Remoting,以資料庫連結為例,所有功能會用到連DB的,
都會通過一個共同的連線組件。那麼意味著以後連接組件部份有改寫,
只要重寫這一塊就好,因為其他項目功能連接都是透過這一塊不需變更。

細節筆記:

.Net a)CommonLib b)UserControl

在 Host (主控台)上用最基礎的訊息要求服務 SendMessage() Service 來做溝通,
參數指定(who, do what, how para1, how para2),回傳成功否。
(只是訊息傳送,非 Event 事件)

ex how1: SQL Command、how2: 回傳資料

(.dll)功能組件,有三種
1. .Class : 寫功能
2. UC : 有介面的元件
3. WinForm: BasrDlg(Dialog)
(只有 UC 需要手動 dispose )

BaseForm: dispatch()派遣
functionPro: 功能列表 //列於資料庫,可查詢及觀看函式詳細資訊
.codetxt 轉換對應
組件直接 new 完註冊(給host),比用 sendmesg 的寫法來的簡潔快速

組件的 ColumnGroup 意義上形同多了 where 功能

常出現的 DBerror 存到 local cache(避免打死結)

新寫好一個功能,將 dll發佈到跟 TestApp 同一個目錄,即可測試!

心得:整體上課感覺很不賴,針對組件仔細去計較那些架構設計的夠不夠人性化、
有沒有彈性,多寫一個需要copy&paste需要量,可以在精簡嗎?
乍看之下是程式設計師的思緒該做的考量,不過大概也是科技(程式的高階)
才能讓懶人做的如此徹底(笑)!

#延伸閱讀

分散式系統架構 .Net Remoting介紹

.Net Remoting介紹
探討生命週期跟效能

[工作日誌] 初試學校計中系統

這也算是一個小公司的營運模式吧,只是對象是學生及老師,
上下班這邊採校務裡的出勤系統,來跟走的時候登入按一下。



client 端程式每次執行會檢查更新,
更新方式是用ftp連線(本地端有防火牆的需要注意有無鎖住)。

工作概況是每兩週繳一次工作進度狀況,包括業務諮詢、行政處理、研討會議,
還有需求單完成度。不定時有上課的活動(可能是中心同仁或是其他老師)。

開發方式的細節,學校系統每一兩週會把現存的資料備份到另一個 TestDB,
利用點擊 *.reg改變自己電腦的開發環境,切換連到測試資料庫還是學校資料庫,
這樣子處理算是比較安全且保險吧!

這部份還搭配一個小工具,稱為 SQL Talk 可以確認自己的sql撈出來的東西(註),
至於要看龐大的學校資料庫欄位(資料意義),則由校務系統裡的
單位組織(電算中心系統)功能:[系統組] > [檔案及資料維護] > 查詢欄位
來進行關聯性的查詢

有些小東西看介面就可以知道是稍微有年代惹,
不過基本上功能做得到以開發人員的角度好像是目前符合需求就不必在弄新東西了,
給學生用的就不一樣惹,需要弄好一點的介面...
而雖然是舊的不過可以看當初開發者已經就許多機制處理完會發生的問題,
至於有瑕疵的,則是不斷改善中(or 研究新的解決方案)

註:
option > session >
。release lock ˇautocommit
ˇsaving setting