This project is read-only.

概述


DevFx Lite,即DevFx.NET的简化版,包含一些实用类,基于配置文件、简单但不失强大的IoC(仅支持单例模式),适用于.NET 2.0及以上版本,.NET 3.5以上的推荐使用完全版,功能更强大,这个可以作为SOA服务的客户端框架。

组成


DevFx Lite 主要由下面一个组件组成:
  • HTB.DevFx.BaseFx.dll(最新版本2.0.2011.0)
  • 包含一些公共的类库、实用的类等。具体可参见HTB.DevFx.BaseFx.xml说明
  • 可以通过NuGet来获取,包名DevFx.Lite

快速入门 - ServiceLocator


本文假定您已熟悉IoC的工作原理。下面通过对名单服务项目的创建描述来引导快速入门

客户端

  • 创建客户端工程,并定义提供服务的接口,比如IWhiteBlackListService
  • 在工程里添加配置文件,这是因为作为远程服务,需要在配置文件中告诉ServiceLocator服务在哪里。比如我们添加htb.devfx.octopus.config到工程的Security/Config目录下,并设置此文件为内嵌资源(如下图)
devfxlite.jpgdevfxlite01.jpg
  • 同时要告诉ServiceLocator配置文件在哪里,需要添加如下代码到任意可编译的代码文件中,比如我们新创建一个SecuritySetting.cs
using HTB.DevFx.Config;
[assembly: ConfigResource("res://Octopus.Security.Config.htb.devfx.octopus.config")]
  • 配置文件的内容如下(请注意注释):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<htb.devfx>
		<objects configSet="{tag:'object'}">
			<typeAliases><!--设置类型别名(可选)-->
				<add name="IWhiteBlackListService" type="Octopus.Security.IWhiteBlackListService, Octopus.Base" />
			</typeAliases>

			<!--对象定义,mapTo一般填远程服务地址,builder此时需要填写@RemotingObjectBuilder,setting表示可以让使用者更容易的替换远程服务地址-->
			<object name="WhiteBlackListServiceClient" type="IWhiteBlackListService"
				mapTo="http://listservice.esb.sdgame.com/WhiteBlackListService.hessian"
				builder="@RemotingObjectBuilder"
				setting="{name:'../../octopus/security/whiteBlackListService', type:'HTB.DevFx.Remoting.Config.RemotingObjectBuilderSetting, HTB.DevFx.BaseFx'}">
				<lifetime type="Singleton" /><!--设置生命周期为单例模式-->
			</object>
		</objects>

		<octopus>
			<security>
				<whiteBlackListService /><!--使用者可以在这里替换远程服务地址-->
			</security>
		</octopus>
	</htb.devfx>
</configuration>
  • 获取接口实例
var service = ServiceLocator.GetService<IWhiteBlackListService>();

服务端

  • 创建服务端工程
  • 实现客户端定义的接口
  • 替换客户端定义的远程服务
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<htb.devfx>
		<objects configSet="{tag:'object'}">
			<remove name="WhiteBlackListServiceClient" /><!--这里表示移除客户端定义的对象-->
			<object name="WhiteBlackListServiceServer" type="IWhiteBlackListService" mapTo="Octopus.Security.WhiteBlackLists.WhiteBlackListService, Octopus.Security.Server">
				<lifetime type="Singleton" />
			</object>
		</objects>
	</htb.devfx>
</configuration>

Last edited Sep 23, 2011 at 7:16 AM by R2, version 2

Comments

No comments yet.