WCF 动态调用 动态代理
关键词:WCF动态调用、动态调用WCF、WCF使用动态代理精简代码架构、使用反射执行WCF接口
代码地址:
https://gitee.com/s0611163/DynamicWCF
https://github.com/0611163/DynamicWCF
DynamicWCF
介绍
动态WCF:使用动态代理精简WCF代码架构
软件架构
CS架构
引用开源库
- Autofac:一个IOC框架
- Castle.core:一个AOP框架
- NLog:日志框架
工程说明
- WCFClient:客户端
- WCFClientProxy:客户端WCF动态代理
- WCFCommon:通用工程,封装日志和IOC功能
- WCFContract:WCF契约
- WCFModel:实体类
- WCFService:WCF服务端实现
- WCFServiceProxy:服务端WCF动态代理
- WCFServiceHost:WCF服务端宿主
使用说明
现有程序框架中使用的话,只需要服务端引入WCFServiceProxy.dll和WCFCommon.dll,客户端引入WCFClientProxy.dll和WCFCommon.dll
一、 服务端
1. 引用WCFServiceProxy.dll和WCFCommon.dll
2. 服务契约添加RegisterServiceAttribute:
[RegisterService]
[ServiceContract]
public interface ITestService
说明:为什么要使用RegisterServiceAttribute?是为了兼容旧的WCF服务端和客户端架构,以便改造现有项目,原来的架构不变,为了精简增删改查代码,额外引入该框架。
3. 服务实现类继承IService:
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class TestService : ITestService, IService
4. 程序启动时添加如下代码:
int serverPort = int.Parse(ConfigurationManager.AppSettings["ServerPort"]);
Assembly serviceAssembly = Assembly.GetAssembly(typeof(TestService));
Assembly contractAssembly = Assembly.GetAssembly(typeof(ITestService));
string contractNamespace = "WCFContract";
HostFactory.CreateHosts(serverPort, serviceAssembly, contractAssembly, contractNamespace);
ServiceHelper.StartAllService();
注意:约定WCF契约接口名称为服务名称前加大写字母I,例如服务名称为TestService,则WCF契约接口名称为ITestService
二、 客户端
客户端使用起来非常简单
1. 引用WCFClientProxy和WCFCommon.dll
2. 使用前初始化PF工厂类:
PF.Init(ConfigurationManager.AppSettings["WCFServiceAddress"]); //初始化PF
3. 使用:
List<TestData> list = PF.Get<ITestService2>().GetBigData("001", "测试001");
WCF 动态调用 动态代理的更多相关文章
- Java父类对象调用子类实体:方法重写与动态调用
众所周知Java的handle和C++的ponter而不是object对应,我们很熟悉C++的父类pointer调用子类实体的例子,那么对于Java的handle是不是也可以这样呢? 这里我先给一个例 ...
- [转]linux 调用动态库so文件
记录一个面试被问到的问题. extern 有什么用途? 除了多文件共享全局变量外还有呢? extern "C" 的功能? 我想看完这篇文章就可以知道第三个问题了. 关于动态调用动态 ...
- C# 中静态调用C++dll 和C# 中动态调用C++dll
在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能 ...
- [转]Delphi DLL的创建、静态 以及动态调用
第一章 DLL简单介绍 由于在目前的学习工作中,需要用到DLL文件,就学习了下,在这里作个总结. 首先装简单介绍下DLL: 1,减小可执行文件的大小 DLL技术的产生有很大一部分原因是为了减小可执行 ...
- WCF透明代理类,动态调用,支持async/await
我们希望WCF客户端调用采用透明代理方式,不用添加服务引用,也不用Invoke的方式,通过ChannelFactory<>动态产生通道,实现服务接口进行调用,并且支持async/await ...
- 动态调用webservice及WCF服务
动态调用web服务,该方法只针对Web service, WCF的服务不行,如果是WCF的就通过工具直接生产代理类,把代理类配置到调用的项目中,通过配置客户端的终结点动态的取实现: 通过Svcutil ...
- c# 动态调用WCF方法笔记!
//动态调用wcf方法 string url = "http://localhost:54379/ServiceWCF.svc"; IDoubleService proxy = W ...
- Atitit 动态调用webservice与客户端代理方式调用
Atitit 动态调用webservice与客户端代理方式调用 方式1: 使用call.invoke 直接调用WSDL,缺点:麻烦,不推荐--特别是JAVA调用.NET的WS时,会有不少的问题需要解 ...
- C#动态调用WCF接口,两种方式任你选。
写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项目时用到了WCF. 从这 ...
- 动态调用WCF服务
动态调用WCF服务,只需要提供*.svc地址, 1:命名空间: using System.ServiceModel.Channels;using System.ServiceModel; 2:创建访问 ...
随机推荐
- K8s 多租户方案的挑战与价值
在当今企业环境中,随着业务的快速增长和多样化,服务器和云资源的管理会越来越让人头疼.K8s 虽然很强大,但在处理多个部门或团队的业务部署需求时,如果缺乏有效的多租户支持,在效率和资源管理方面都会不尽如 ...
- GitHub Desktop安装与使用教程
一.安装 1.下载 下载地址 2.安装 下载之后GitHub Desktop是没有安装步骤的,而是开始安装之后,稍等片刻就安装成功了. 然后登陆个人GitHub账号就可以进行一下操作了. 二.新建仓库 ...
- ARM汇编指令实验
题目 地址为0x40008000起始的内存中存放了20个无符号的8位整数,请编写ARM汇编程序实现如下功能: 采用冒泡法将以上内存中的数据按照从小到大的顺序排列. 注意:在验收实验时,需要自己把具体的 ...
- ES到底是个什么东西
概念:全文检索服务器(是基于Lucene开发的全文检索服务器),它可以近乎实时存储.检索数据,底层仍然是Lucene来实现的所以索引和搜索功能,他的目的是通过的简单的RESTFul API 来隐藏Lu ...
- 高效的 Json 解析框架 kotlinx.serialization
一.引出问题 你是否有在使用 Gson 序列化对象时,见到如下异常: Abstract classes can't be instantiated! Register an InstanceCreat ...
- Vue入门(1)安装vue环境,创建Vue2 Vue3的项目并且安装IIS环境和发布到IIS
Vue环境的搭建 一. 背景 vue的运行方式有两种 一种是在页面引用vue的js包, 一种是搭建脚手架来vue框架. 我们在这里使用的是第二种方式. 需要安装的软件 npm 16.13.1 ...
- Shell下处理JSON数据工具向导
目录 下载离线安装包 安装 源码包安装 选项及含义 JQ 程序代码演示在线平台 JQ 语法 基本过滤器 身份运算符 --- . 标识符-索引 --- .foo`, `.foo.bar 对象索引 --- ...
- node版本管理工具推荐
hello,今天给大家分享几款 node 版本管理的工具. 背景 在开发前端项目的时候,特别是新到公司接手一个多年维护的老项目时,如果 node 版本不正确,有的插件可能无法正确安装,比如我之前提到的 ...
- .Net人的自我修养-书目汇总
.Net人的自我修养-书目汇总 2019年来现在的公司开始从事.Net相关的工作.记录一下工作以来看过(或者翻过)和听过还不错打算看相关的技术书籍或资料. 为了方便给大家参考,看(翻)过书目以难度排序 ...
- apex的安装过程及问题解决(ModuleNotFoundError:No module named 'packaging')
最近在复现代码时遇到了如下问题,在此记录一下问题的解决过程: 步骤一 git clone https://github.com/NVIDIA/apex.git 步骤二 cd apex 步骤三 pip ...