在论坛里遇到一个问题:如何做一个主程序,主程序里没有任何契约和配置文件能自动Host指定的外部的WCF Library Assembly。其实Visual Studio已经提供了类似的玩意,在你创建一个WCF Library工程之后在项目属性 -> WCF Options -> 会看到一个 "Start WCF Service Host When debugging anther project in same solution" 的选项,如果选上那么VS会自动调用 WcfSvcHost.exe 这个工具帮你托管 WCF 服务。而且VS一并提供的 WCF Test Client 给开发者十分方便的测试体验:
话说回来,通过对 Config 文件中的 serviceModel 配置节做解析完全可以自己实现,下面提供简单的实现方法:【示例代码下载】
(当然下面的方法还比较简陋,没有考虑什么安全配置、还有一些定义的Behavior等)
加载服务:
通过传入的 Assembly 可以找到对应的 xxx.dll.config 文件,然后解析其中的 “system.serviceModel" 配置节。为了之后的测试,返回一个 Dictionary,
因为客户端可以通过 ChannelFactory<T>.CreateChannel(Binding, EndpointAddress) 创建连接,所以顺便把需要的数据带回来。
加载客户端:
一切为了方便使用了 dynamic 类型,因为你在测试的时候一定是知道服务端的接口定义的。
运行示例:
其实我能想到上面的代码能用到地方就是自动化测试了... 另外考虑到安全的隔离每个WCF Library,应该考虑封装在 AppDomain 中。
感兴趣的童鞋,可以自己修改一下代码:使用 AppDomain.DoCallback() 封装上面的 LoadHost,需要注意的是 AppDomain 的独立性,
代理中不能有任何当前domain的数据上下文否则会抛异常。(可以使用 AppDomain.SetData / GetData 传送一些参数)
分享到:
相关推荐
如何做一个主程序,主程序里没有任何契约和配置文件能自动Host指定的外部的WCF Library Assembly。 http://blog.csdn.net/fangxinggood/article/details/7107597
WCF miniqq 自动更新等,双工,等
wcf 自动更新程序,添加到自己的程序中就可以直接使用。
WCF以纯代码的方式(无配置文件)实现动态加载RestFul服务
自动点滴管理系统完整源代码。实现客户端的呼叫,开始注射,结束注射。服务端实现调整速率,信息监听等功能。采用Wcf通信技术。
PDA引用WCF自动生成代码,注: cf3.5不支持net.tcp的应用
客户端:由MVC担任,且实现自动化服务调用,其中集成了EnterpriseLibrary Ioc。Aop 以及异常管理,缓存管理,且与服务端雷同,可以自行配置 如有不明白之处可以参看微软EnterpriseLibrary,或者度娘,或者自行研究...
自动点滴管理系统WCF技术实现,供初学者学习
WCF接口文档生成工具,直接DELL 生成API文档,方便实用
wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例wcf经典实例
自动点滴管理系统(.NET 3.5框架的WCF技术实现)
一套简单的 WCF 宿主 !一套简单的 WCF 宿主 !一套简单的 WCF 宿主 !一套简单的 WCF 宿主 !一套简单的 WCF 宿主 !一套简单的 WCF 宿主 !
wcf 代理 wcf开发示例 wcf 代理 wcf开发示例
WCF 双工通信 脱机检测、自动重连、心跳包 演示代码 通过客户端定时给服务器心跳包检测在线。 用户登录后,服务器定期发送数据到客户。服务器脱机后客户端自动检测并自动登录。 服务端监控客户端是否离线,心跳...
wcf教程,基础,事件,高级,扩展,每章都有代码,由浅入深,很好的WCF编程教材。
课程简介:Windows Communication Foundation (WCF)是微软公司为构建面向服务的应用程序(SOA)所提供的消息平台。该平台随着Windows Vista操作系统,并且作为.NET Framework 3.0的一部分发布。WCF统一了组件与服务...
WCF服务,配置可同时支持web调用和WCF调用,可以用于C#程序服务访问,也支持java等程序访问。java通过web调用,C#可以通过wcf访问。
WCF4高级编程Professional.WCF.4.rar