AgileEAS.NET平台提供了獨立的設定檔,主要涉及一般配置資訊、IOC對象配置資訊、SL服務配置資訊、WinService外掛程式配置資訊:
系統設定檔重有如下配置項定義:
<configSections>
<section name="EAS.Configurations" type="EAS.Configuration.ConfigHandler,EAS.Kernel" />
<section name="EAS.WinServices" type="EAS.WinService.ConfigHandler,EAS.WinService.Kernel" />
<section name="EAS.Objects" type="EAS.Objects.ConfigHandler,EAS.IOCContainer"/>
<section name="EAS.Services" type="EAS.ServiceLocators.ServiceConfigHandler,EAS.ServiceLocator" />
</configSections>
EAS.Configurations:一般配置資訊
EAS.WinServices:Win Services外掛程式配置資訊
EAS.Objects:IOC容器物件配置資訊
EAS.Services:服務發現與定位配置資訊
一般配置資訊
一般配置資訊也可以稱為公用配置資訊定義,也就除其他專有配置資訊之外的資訊都可以寫在這樣,一般配置資訊的定義採用Key-Value的方法進行配置:
<EAS.Configurations>
<ConfigurationItem name="DbConnectString" value=""/>
<ConfigurationItem name="WorkstationUser" value="Administrator;james" />
<ConfigurationItem name="LastUser" value="james" />
<ConfigurationItem name="SmartLogin" value="true" />
<ConfigurationItem name="Startup" value="" />
<ConfigurationItem name="SystemStyle" value="DevStyle" />
<ConfigurationItem name="NavigationStyle" value="TreeStyle" />
<ConfigurationItem name="NavigationExpand" value="true" />
<ConfigurationItem name="Desktop" value="Enabled" />
<ConfigurationItem name="MultiInstance" value="Enabled" />
</EAS.Configurations>
AgileEAS.NET平台提供了EAS.Configuration.Config類對一般配置資訊進行一股讀寫:
public static string GetValue(string key)
public static void SetValue(string key, string value)。
容器物件的配置
IOC容器物件設定檔主要設定物件的定義、生存方法、生存周期資訊,以及對象在之的存依賴關係,其配置資訊如下:
<object name="MasterDbConnection" type="EAS.Data.Access.OleDbConnection"
assembly="EAS.Data" LifestyleType="Pooled:InitialSize = 1 | MaxSize = 10">
<property name="ConnectionString" type="string" value="..." />
</object>
<object name="OrmAccessor" assembly="EAS.Data"
type="EAS.Data.ORM.OrmAccessor" LifestyleType="Thread">
<property name="DbConnection" type="object" value="MasterDbConnection" />
</object>
<object name="CacheAccessor" assembly="EAS.Data"
type="EAS.Data.ORM.CacheAccessor" LifestyleType="Singleton">
</object>
<object name="MasterDataAccessor" assembly="EAS.Data"
type="EAS.Data.Access.OleDbAccessor" LifestyleType="Thread">
<property name="Connection" type="object" value="MasterDbConnection" />
</object>
<object name="MothodInvoker" assembly="EAS.Data"
type="EAS.Business.LocalMothodInvoker.LocalMothodInvoker"/>
上面的設定檔定義了5個對象及其生命週期以及對象之間的關係,比如OrmAccessor對象的屬性DbConnection即為MasterDbConnection對象的一個執行個體。
在IOC配置中,需求定義對象的類型資訊:程式集和類型,還需要定義對象的生存類型LifestyleType,目前在AgileEAS.NET平台中提供了如下的生存方式:
/// <summary>/// 枚舉LifestyleType 組件的生存方式,即組件以何種生存周期在容器中生存。/// </summary>public enum LifestyleType{ /// <summary> /// Transient,組件在使用時建立、使用後銷毀。 /// </summary> Transient = 0x00000000, /// <summary> /// Singleton,組件一旦自在,則在所有的客商端中共用。 /// </summary> Singleton = 0x00000001, /// <summary> /// Thread,每一個用戶端線程擁有單獨的一個執行個體。 /// </summary> Thread = 0x00000002, /// <summary> /// Pooled,組件池,初始時分配一定數量的組件,客戶請求時,分配一個空閑組件,使用者使用完後交由池中。 /// </summary> Pooled = 0x00000003}
服務定位配置資訊
服務定位與發現的配置資訊主要定義分布式技術服務的發現與定位配置,經如開發員定義了一個基於.NET Remoting技術的服務,用戶端如何去動態啟用這個服務,我們來看看服務寫位的設定檔:
<EAS.Services>
<Services>
<Service name="EAS.DataAccessService.Service" service-type="DotNetRemoting"
component="tcp://localhost:8000/EAS.DataAccessService"/>
<Service name="EAS.RMIService.Service" service-type="DotNetRemoting"
singleton="true" url="tcp://localhost:8000/EAS.RMIService"/>
<Service name="EAS.Cached.Service" service-type="DotNetRemoting"
Singleton=" true" url="tcp://localhost:8000/EAS.Cached"/>
<Service name="FileTransService"
service-type="WebService" component="FileTransService" />
<Service name="HelloWorldWebService" service-type="WebService"
Singleton="true" url="http://localhost/webservicetest/hello.asmx" />
</Services>
</EAS.Services>
Services配置節中的內部可以根據具體情況進行設定,AgileEAS.NET平台的Service locator支援LocalComponent、WebService、DotNetRemoting三種類型的,LocalComponent的服務元件定義必須定義到IOC容器中的某個組件實現名稱如下:
<Service name="HelloWorld" service-type="LocalComponent" component="HelloWorld" />
WebService和DotNetRemoting的組件可以選擇定義到IOC容器中的某個組件:
<Service name="FileTransService" service-type="WebService" component="FileTransService" />
也可以直接由SL動態產生服務代理(用戶端):
<Service name="EAS.Cached.Service" service-type="DotNetRemoting" Singleton=" true"
url="tcp://localhost:8000/EAS.Cached"/>
<Service name="HelloWorldWebService" service-type="WebService" Singleton="true"
url="http://localhost/webservicetest/hello.asmx" />
Win服務組態檔
AgileEAS.NET提供了基於外掛程式的Win Service開發,提供的設定檔如下:
<EAS.WinServices>
<Config port ="8000"/>
<WinServices>
<WinService name="EAS.Cached" key="EAS.Cached.Service"/>
<WinService name="EAS.RMIService"
key="EAS.Distributed.Remoting.RMIServiceAddIn"/>
<WinService name="EAS.DataAccessService"
key="EAS.Distributed.Remoting.DataAccessServiceAddIn"/>
</WinServices>
</EAS.WinServices>
在port參數中設定管理員啟動並執行TCP連接埠,WinServices配置節中定義啟動並執行WinService 外掛程式:
<WinService name="EAS.Cached" key="EAS.Cached.Service"/>
這裡我們定義了一個快取服務,配置資訊中配置了服務的名稱為EAS.Cached他將在用戶端調用的時間用到:
<Service name="EAS.Cached.Service" service-type="DotNetRemoting"
Singleton=" true" url="tcp://localhost:8000/EAS.Cached"/>
Key屬性的值則指向IOC容器中的組件配置:
<object name="EAS.Cached.Service" assembly="EAS.Cached.ServiceAddIn"
type="EAS.Cached.ServiceAddIn" LifestyleType="Singleton">
<property name="MaxMemory" type="int" value="512" />
</object>
連結
AgileEAS.NET平台開發指南-系列目錄
AgileEAS.NET應用開發平台介紹-文章索引
AgileEAS.NET官方網站
敏捷軟體工程實驗室
QQ群:116773358