Upgrade to Pro — share decks privately, control downloads, hide ads and more …

打造一個 Application Framework - twMVC#15

Da5dec3f0447a582c1f9d650edbe0142?s=47 twMVC
June 16, 2014

打造一個 Application Framework - twMVC#15

打造一個 Application Framework

講者:Kevin Jong(中K)
講者簡介:
2012 第五屆 iT邦幫忙鐵人賽 - 鐵人優選獎「技術組」「Kuick Application & ORM Framework」
2013 第六屆 iT邦幫忙鐵人賽 - 鐵人賽佳作「開發技術組」「Kuick Hands on Labs」
課程簡介:一個系統時常不會只有一個Web,更多時候是由N個Console與Web組合而成,要如何監控這N個App?
就從打造「可配置」、「可監測」、「可外掛」以及「可控制」的Application Framework開始。
課程時間:70 分鐘

http://mvc.tw

Da5dec3f0447a582c1f9d650edbe0142?s=128

twMVC

June 16, 2014
Tweet

Transcript

  1. 動手打造 Application Framework kevin@kuicker.org

  2. Framework 集成 2

  3. http://mvc.tw  每個人心裡想的都不⼀樣。  或許沒有⼀個真正的範圍! What is the Application Framework?

    3 我以為 你以為 他以為
  4. http://mvc.tw What I would like to say is.. 4 

    有誰了解全部內容?  講我覺得重要的  講⽩話⼀點  70 內分鐘講得清楚的  個人的想法,與大家分享 全部的內容 講述的內容
  5. http://mvc.tw Why do we need Application Framework? 5  複雜的企業邏輯,不會因

    此變得簡單。  Application Framework 帶 來的是清晰,不是簡化。 簡化 清晰
  6. http://mvc.tw Library Framework 類別庫 集成 You call Library. Framework calls

    you. Your project’s Tools. Your project’s Life. ⼀組包含在類別裡能被程式呼叫的方法, 每次的呼叫將完成特定工作並回傳控制。 包含抽象設計與內建行為,程式需要透 過子類別或是插入程式的方式,在執行 期特定的時點呼叫你的程式。 Library vs. Framework 6 放下既有的技術定義,先用簡單的方法了解。
  7. Lifecycle 系統生命周期 7

  8. http://mvc.tw Lifecycle : Running 8  執行中 專案程式執行在 Application Framework

    建立的服務之上
  9. http://mvc.tw Lifecycle : Action 9  狀態 Running  動作

    啟動 Start 停止 Stop
  10. http://mvc.tw Lifecycle : Circle 10 ⽣命周期形成封閉的迴圈

  11. http://mvc.tw Lifecycle : Full Circle 11 完整的⽣命周期

  12. http://mvc.tw Lifecycle : State  穩定狀態 Permanent State  已停止

    Stopped  執行中 Running  已暫停 Suspended  過渡狀態 Transition State  啟動中 Starting  停止中 Stopping  恢復中 Resuming  暫停中 Suspending 12 ⽣命周期就是,系統⼀連串狀態的改變與處理
  13. http://mvc.tw Lifecycle : Sequence 13 由封閉的迴圈,改從循序的角度了解系統狀態的變化

  14. http://mvc.tw Lifecycle : Start 14  內建 Builtin  外掛

    Plugin
  15. http://mvc.tw Lifecycle : Stop 15 反序停止 Plugin, Builtin

  16. Builtin & Plugin 16

  17. http://mvc.tw  已知的被動服務  Framework 提供每⼀個內建服務介面,定義服務內容  專案程式主動使用內建功能  常以靜態類別與方法提供,例如:Auditor.Success(..)

     實作組件是否載入,不影響專案運作 Builtin 內建 17
  18. http://mvc.tw  未知的主動服務  Framework 提供外掛統⼀介面,定義管控方式  專案程式被動享受外掛服務  另開執行緒,或執行於獨有的

    AppDomain 裡  實作組件是否載入,不影響專案運作 Plugin 外掛 18
  19. http://mvc.tw Builtin Plugin 已知的 未知的 被動的 主動的 介面定義服務內容 介面定義管控方式 不同介面

    共同介面 以靜態類別與方法提供 執行緒或獨有的 AppDomain 例如:Audit 稽核 例如:AD 帳號同步程式 Builtin vs. Plugin 19
  20. Kuicker 20

  21. http://mvc.tw Kuicker : Execution Order  Hosting & Kernel 

    讀取定義檔 Configurable  收集組件 Assembly  解析類別 Reflection  附加⽣命周期處理 Event  載入內建服務 Log, Audit  載入外掛服務 Pluginable 21
  22. http://mvc.tw Kuicker : Hosting & Kernel 22

  23. http://mvc.tw  1. ConfigurationSectionHandler (deprecated) System.Configuration.IConfigurationSectionHandler  2. ConfigurationSection System.Configuration.ConfigurationSection

    Kuicker : Configurable 23
  24. http://mvc.tw  AppDomain Assemblies  APP_CODE Assemblies  Folder 

    bin >> AppDomain Assemblies  {special folder} >> Kuicker : Assembly 24
  25. http://mvc.tw  如果外掛組件放在 bin 裡,調整 bin 的組件將會觸發系 統重啟,這是否就失去外掛的意義?  如果外掛組件放在特定目錄裡,讀取特定目錄裡的組件會有

    額外授權需求,這不利於⼀般化的部署。  我們真的需要具有熱插拔的系統嗎? Kuicker : 熱插拔的系統 25
  26. http://mvc.tw  制定 Builtin 服務內容與 Plugin 管控方式並定義介面  Kernel 主動收集組件裡的實作特定介面的類別

     內建外掛執行順序採 FIFO,⽣命周期附加程序以核心優先  外掛錯誤處理,以不影響主程式為原則  類別提供 Self-Description 自我描述 Kuicker : Reflection 26
  27. http://mvc.tw Kuicker : Event  核心事件  BuiltinStart, PluginStart 

    PluginStop, BuiltinStop  非核心事件  BeforeStart, AfterStop  BeforeBuiltinStart, AfterBuiltinStart  BeforePluginStart, AfterPluginStart  BeforeStop, AfterStop  實作方式  Event Handler  Type or Instance Level?  Attach / Detach or Implemented Interface? 27
  28. http://mvc.tw Kuicker : Log  Apache logging services log4j log4net

    log4php log4cxx Chainsaw  log4j Family log4plsql log4js log4c log4javascript log4perl 28 Log 機制的發展,逐漸向 log4j 收斂 (個人認為)
  29. http://mvc.tw  Send Message, Error Control, Application Domain  Proxy,

    Gateway, Queue, Remoting, Socket  Priority, Sleep  Interrupt, Dependency  Out-of-Process / In-Process  Worker / Job, Load / Unload  Synchronous / Asynchronous Kuicker : Pluginable 29
  30. 30 Kuick >> Kuicker

  31. http://mvc.tw 好活動需要支持 感謝 KKTIX 贊助 twMVC 活動報名平台 31

  32. http://mvc.tw 好課程需要支持 32 http://skilltree.my

  33. 謝謝各位 • 本投影片所包含的商標與文字皆屬原著作者所有。 • 本投影片使用的圖片皆從網路搜尋。 • 本著作係採用姓名標示-非商業性-相同方式分享 3.0 台灣授權。閱讀本授權條款,請到 http://creativecommons.org/licenses/by-nc-sa/3.0/tw/,或寫信至Creative

    Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. h t t p : / / m v c . t w