前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 配置文件

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 配置文件

作者头像
魏琼东
发布2018-01-11 16:08:21
1K0
发布2018-01-11 16:08:21
举报
文章被收录于专栏:魏琼东

         AgileEAS.NET平台提供了独立的配置文件,主要涉及一般配置信息、IOC对象配置信息、SL服务配置信息、WinService插件配置信息:

系统配置文件重有如下配置项定义:

代码语言:js
复制
  <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的方法进行配置:

代码语言:js
复制
<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容器对象配置文件主要配置对象的定义、生存方法、生存周期信息,以及对象在之的存依赖关系,其配置信息如下:

代码语言:js
复制
<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平台中提供了如下的生存方式:

代码语言:javascript
复制
/// <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技术的服务,客户端如何去动态的激活这个服务,我们来看看服务写位的配置文件:

代码语言:js
复制
<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容器中的某个组件实现名称如下:

代码语言:js
复制
         <Service name="HelloWorld" service-type="LocalComponent" component="HelloWorld" />
         WebService和DotNetRemoting的组件可以选择定义到IOC容器中的某个组件:
         <Service name="FileTransService" service-type="WebService" component="FileTransService" />

         也可以直接由SL动态生成服务代理(客户端):

代码语言:js
复制
         <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他将在客户端调用的时间用到:

代码语言:js
复制
         <Service name="EAS.Cached.Service" service-type="DotNetRemoting"
Singleton=" true" url="tcp://localhost:8000/EAS.Cached"/>

         Key属性的值则指向IOC容器中的组件配置:

代码语言:js
复制
<object name="EAS.Cached.Service" assembly="EAS.Cached.ServiceAddIn"
type="EAS.Cached.ServiceAddIn" LifestyleType="Singleton">
<property name="MaxMemory" type="int" value="512" />
</object>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010-09-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一般配置信息
  • 容器对象的配置
  • 服务定位配置信息
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档