要注意的是,功能伺服器FS上收到的所有消息都應該交給功能插件來處理,不存在其它的處理方式。這是使得FS“純粹”的必須要求。上圖已經很清楚的表示了功能插件處理器工廠的位置和作用。它借助插件管理器實作“工廠”的功能。其實作非常簡單,如下所示:
1 /// <summary>
2 /// AddinDealerFactory 功能插件處理器工廠,每一個功能插件能轉換為一個處理器
3 /// </summary>
4 public class FunAddinDealerFactory :IDataDealerFactory
5 {
6 private IAddinManagement addinManagement ;
7
8 public FunAddinDealerFactory()
9 {
10 }
11
12 #region property
13 public IAddinManagement AddinManagement
14 {
15 set
16 {
17 this.addinManagement = value ;
18 }
19 }
20 #endregion
21
22 #region IDataDealerFactory 成員
23 public IDataDealer CreateDealer(int requestType, int serverTypeKey)
24 {
25 foreach(IAddin addin in this.addinManagement.AddinList)
26 {
27 if((addin.ServiceKey == requestType) && (addin.Enabled))
28 {
29 return (IDataDealer)addin ;
30 }
31 }
32
33 return null;
34 }
35
36 #endregion
37 }
前面已經提到過,每個功能插件都必須是自給自足的,有的可以有自己的配置檔案、有的可能需要通路資料庫或外部的WebService等等。暫時,FS還不支援功能插件之間的依賴――每個插件必須是互相獨立的。
本文的内容非常簡單,上面的圖示也基本上描述的FS的主體結構。後面我們會關注,AS與FS之間的非功能通信,并說明整個平台是如何實作FS的動态添加/移除的,并解釋如何在網絡不穩定的情況下,保證AS和FS之間的良好通信的機制。感謝關注。