写点什么

在 WCF 服务的实现中进行依赖注入

  • 2008-01-11
  • 本文字数:924 字

    阅读完需:约 3 分钟

一般来讲,依赖注入容器是通过在配置中提供实现类到接口的映射关系来实现注入的。而这些配置则能够很容易地在运行时根据需要进行调整或改变。例如,有时为了方便单元测试,我们可能需要改用 Mock 对象。对于这种情况,Pablo 给出了解决方案:

这简直是小菜一碟——(对于依赖注入容器)我们所要做的只是调整一下映射规则,否则容器无法知晓应该创建哪种对象的实例。现在就让我们通过一种可扩展的方法尝试配置该 WCF 服务。我们都知道,WCF 支持一个名为 IInstanceProvider 的扩展,用来控制 WCF 实例的生命周期。我们正是要通过它来加载新的代码,并在运行时将层与层之间的依赖关系注入。 <span>public</span> <span>class</span> DIInstanceProvider : IInstanceProvider { <span><br></br> [...]</span> <p><span>public</span> <span>object</span> GetInstance(InstanceContext instanceContext, Message message) {</p><br></br> DependencyContainer container = <span>new</span> DependencyContainer(); <br></br><span>foreach</span> (TypeMapping typeMapping <span>in</span> <span>this</span>.typeMappings) {<br></br> container.RegisterTypeMapping(typeMapping.TypeRequested, typeMapping.TypeToBuild); <br></br> } <span><br></br> return</span> container.Get(<span>this</span>.serviceType); <br></br> }<br></br> [...] <br></br>}

随后,该 DIInstanceProvider 将通过一个 IServiceBehavior 在运行时接入到分配程序中。类型的映射是通过一个新的 WCF 配置节实现的,该配置节可以通过 BehaviorExtensionElement 从配置文件中读取,并传递给 DIServiceBehavior 实例。在 Pablo 给出的示例中,配置文件如下所示:

<add name=“DataAccess” typeRequested=“SampleService.ICustomerDataAccess, SampleService”

typeToBuild=“SampleService.CustomerDataAccess, SampleService”/>

<add name=“BusinessComponent” typeRequested=“SampleService.ICustomerBusinessComponent, SampleService”

typeToBuild=“SampleService.CustomerBusinessComponent, SampleService”/>

typeMappings>

dependencyInjection>

behavior>

serviceBehaviors>

behaviors>

2008-01-11 05:242332
用户头像

发布了 37 篇内容, 共 76416 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

深入浅出负载均衡

vivo互联网技术

负载均衡 高可用 服务器 hash

架构解析|网易自研新一代大规模分布式传输网

网易云信

分布式 音视频

【Redis】概览

awen

redis

计算机专业的应届生想进大厂做开发有多难?

Java架构师迁哥

2021上半年1000道大厂高频面试题汇总(Java岗)

Java架构师迁哥

阿里架构师手肛6个月,总结出17W字操作系统、网络教程(导图+笔记)

Java架构师迁哥

深入讲解RxJava响应式编程框架,背压问题的几种应对模式

小Q

Java 学习 编程 架构 面试

Java--JVM内存结构

是老郭啊

Java JVM简介 JVM内存结构 JVM运行时数据区

EBean ORM 框架介绍-2.字段加密、更新日志和历史记录

Barry的异想世界

jpa Ebean 字段加密 更新日志 历史记录

程序员必知的硬核基础知识

Java架构师迁哥

C语言从入门到精通(三)

代码情缘

编程 开发 C语言 编程之路 硬件开发

野生程序员高考试卷,试试你能打多少分?

北游学Java

程序员 高考

阿里分享:全网最详细的一篇SpringCloud总结

Java架构师迁哥

a.docker

xujiangniao

Docker

用了这么多年 Gitlab,可能还不了解这些知识

郭旭东

DevOps gitlab 极狐GitLabs

阿里开源三天就被狂转50w次的《Java面试突击》限时下载!

Java架构师迁哥

C语言从入门到精通(一)

代码情缘

c++ 编程 开发 C语言 硬件开发

10次面试9次被刷?吃透这500道大厂Java高频面试题后,怒斩offer

Java 程序员 架构 面试

新思科技连续五年获Gartner魔力象限应用安全测试领导者殊荣

InfoQ_434670063458

新思科技 Gartner 魔力象限

手滑党福音,意外删除重要文件怎么办?

淋雨

数据恢复 EasyRecovery 文件恢复

Java中String类的前世今生

卢卡多多

Java string 6月日更

C语言从入门到精通(二)

代码情缘

开发 C语言 编程、

新手模拟实现bind

前端树洞

面试 大前端 js this

iOS APP 架构漫谈

iOSer

ios ios开发 iOS架构

从事开发5年以上的Java程序员,面试会被问到哪些?

Java架构师迁哥

备战金九银十,2021年最全999道Java岗高频面试题分享

Java架构师迁哥

拼搏26天刷完了阿里大佬的Java面试合集1000题,拿到了月薪30K的offer

Java 程序员 架构 面试

质量基础设施(NQI)“一站式”服务平台开发搭建

源中瑞-龙先生

NQI 质量基础设施“一站式”

去阿里/腾讯/字节面试P7Java岗时,需要掌握哪些技术栈?

Java架构师迁哥

IDEA使用

xujiangniao

Java IDEA

外包3年凭借一手“秒杀架构”成功上岸阿里

Java架构师迁哥

在WCF服务的实现中进行依赖注入_.NET_Hartmut Wilms_InfoQ精选文章