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");
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇