使用 JointCode.Shuttle 动态注册 / 注销服务
2017-07-20 13:59
232 查看
JointCode.Shuttle 是一个用于进程内 AppDomain 间通信的服务架构(不支持跨进程),它旨在取代运行时库提供的 MarshalByrefObject 的功能。
本文将介绍如何使用 JointCode.Shuttle 在运行时动态注册 / 注销服务。
假设我们有一个服务契约 A,使用 JointCode.Shuttle,我们可以在运行时:
在一个 AppDomain(B)中注册一个服务实现(它实现了服务契约 A),
在另一个 AppDomain(C)中消费此服务(通过服务契约 A)。
然后,我们可以在 AppDomain(B)中注销上述服务实现,
并启动另外一个 AppDomain(D),然后在 AppDomain(D)中另外注册一个实现了相同服务契约 A 的服务,
在 AppDomain (B)中再次消费此服务(通过相同的服务契约 A)
我为此写了一个简单的示例,以下是运行该示例的程序输出:
可以看到,通过在两个不同的 AppDomain 中 注册/注销 实现了相同服务契约的不同服务实现,我们可以在运行时达到动态切换服务实现的目的。
如果您对示例源码感兴趣,请移步前往 此处 下载(测试名称:ShuttleDomain服务更新)。
本文将介绍如何使用 JointCode.Shuttle 在运行时动态注册 / 注销服务。
假设我们有一个服务契约 A,使用 JointCode.Shuttle,我们可以在运行时:
在一个 AppDomain(B)中注册一个服务实现(它实现了服务契约 A),
在另一个 AppDomain(C)中消费此服务(通过服务契约 A)。
然后,我们可以在 AppDomain(B)中注销上述服务实现,
并启动另外一个 AppDomain(D),然后在 AppDomain(D)中另外注册一个实现了相同服务契约 A 的服务,
在 AppDomain (B)中再次消费此服务(通过相同的服务契约 A)
我为此写了一个简单的示例,以下是运行该示例的程序输出:
可以看到,通过在两个不同的 AppDomain 中 注册/注销 实现了相同服务契约的不同服务实现,我们可以在运行时达到动态切换服务实现的目的。
如果您对示例源码感兴趣,请移步前往 此处 下载(测试名称:ShuttleDomain服务更新)。
相关文章推荐
- 使用 JointCode.Shuttle 访问任意 AppDomain 的服务
- 使用 JointCode.Shuttle 管理远程服务对象的生命期
- 使用 JointCode.Shuttle 提高跨 AppDomain 通信的性能
- JointCode.Shuttle,一个简单高效的跨 AppDomain 通信的服务框架
- 使用 JointCode.Shuttle 进行跨 AppDomain 通信的一个简单示例
- 使用服务动态注册,销毁广播
- 配置非默认端口的动态服务注册
- 使用注册表对软件注册的CODE
- 使用非ServiceDependency方法获得模块中已注册的服务
- Silverlight:如何在使用WCF的时候动态指定服务地址
- 在MB消息流中,如何使用ESQL来动态改变HTTPRequest的Web 服务URL?
- Silverlight:如何在使用WCF的时候动态指定服务地址
- 根据.DFM文件动态生成窗体以及在之前先必须注册窗体中使用到的类
- 配置非默认端口的动态服务注册
- 使用installShield制作一个含调用设置、服务注册及驱动程序的安装包
- 配置非默认端口的动态服务注册
- mysql服务的注册,启动、停止、注销。 [delphi代码实现]
- 写 smarty 插件 前奏 动态 注册 自定义 php 函数 模板中使用
- 在ASP.NET AJAX中使用应用程序服务和本地化:实现用户登录和注销(转自:Dflying Chen @ cnblogs)