博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】Wcf通讯基础框架方案
阅读量:6709 次
发布时间:2019-06-25

本文共 1713 字,大约阅读时间需要 5 分钟。

 

源代码见

注意:

1) 本来没打算这么早开源,这只是一个比较原始的实现,请勿直接在商业环境使用

2) 请注意本框架的授权条款Apache License 2.0

3) 本框架依赖的外部程序集或框架版权归原作者所有

4) 框架之后可能会增加很多功能,请关注项目主页即使获得最新信息

解压缩代码打开sln文件后可以看到这样的结构

1) WcfExtension就是核心框架:

Client文件夹放的是客户端用到的一些代码,Server自然是服务端用到的一些代码

Log是日志相关的一些代码(四种日志),Config是配置相关的代码

Setting是框架本身设置的一些代码(比如配置是否要记录日志)

其它代码放在父文件夹内,当然这里还放了一些用于发布nuget包的文件

至于nuget不想多介绍了(release方式编译项目后会在ReleasePackages生成nupkg包)

2) WcfExtension.ConfigCenter就是配置服务和配置的后台,配置文件中需要配置

A)redis的地址以及通知通道名

B)sql server配置数据库的连接字符串

C)配置服务的wcf服务端配置

这里需要注意几点:

A)如果你的配置不希望保存在sql server中,可以重写WcfConfigService.cs

B)现在的后台非常简易,就是一个WFWcfConfig.aspx,完全可以重写

3) WcfExtension.LogCenter就是日志服务和日志的查看后台,需要配置的东西和2)差不多,只不过注意要使用不同的端口

WcfLogService.cs同样是一个简单的实现,仅供参考,现在实现过程如下:

A)保存到内存队列

B)几个线程定时批量把数据保存到mongodb中

有关ConfigCenter和LogCenter还需要注意,在生产环境中为了高可用性可以使用IIS来承载tcp的wcf服务,做负载均衡。

但是为了测试简单,在解决方案中有两个临时的Console应用程序,用于替代ConfigCenter和LogCenter。

4) WcfExtension.Clients.Console是测试的控制台客户端,应该只依赖WcfExtension框架和服务契约也就是WcfExtension.Services.Interface

5) WcfExtension.Hosts.Console是测试的控制台服务端,需要依赖服务接口和服务实现,以及WcfExtension框架

6) WcfExtension.Services.Interface是服务契约,定义了一些简单的测试方法

7) WcfExtension.Services.Implementation是服务实现,其下的LogService是用来测试服务依赖注入的

8) Libs目录下是一些依赖的程序集,主要是redis的客户端、mongodb的客户端以及unity、log4get、nuget。

因为,可以这么启动项目进行测试:

先启动配置服务和日志服务,然后启动服务端,最后启动客户端。

在运行起来之前,还需要建立表结构和模拟数据(如果怕麻烦可以直接回复包里面的WcfConfig.bak数据库文件),运行WcfExtension.ConfigCenter中的db.sql来建立数据表。

可以直接打开表配置数据也可以使用配置后台,首先建立一个绑定Binding:

然后建立一个服务端点ServiceEndpoint,对应这个绑定:

然后建立一个服务Service:

然后建立服务的集群ServerFarm:

最后是客户端的端点ClientEndpoint:

和客户端访问集群的权限ClientAccess:

启动四个项目后可以看到:

1) 日志服务控制台上出现了各种日志

2) 客户端和服务端都显示出了发送和接受的消息

3) 如果在后台修改配置,并且点击通知按钮,客户端和服务端应该会收到修改通知,然后删除相应的缓存或重启服务使得配置立即生效

(其实在生产环境中,不太可能通知服务端重启服务)

该说的前面几次都说了,代码并不复杂,看代码就都可以理解了。

 

转载地址:http://tpalo.baihongyu.com/

你可能感兴趣的文章
中国平安“豪赌”科技?从产险业务IT变形计聊起
查看>>
RSocket:一个面向反应式应用程序的新型应用网络协议
查看>>
ElasticSearchDsl
查看>>
SciPy达到1.0版本,有了新的治理结构
查看>>
IntelliJ IDEA 2018.3 新版本发布,支持 Java 12及Spring Boot增强等特性
查看>>
Go语言很好很强大,但我有几个问题想吐槽
查看>>
独家!支付宝小程序技术架构全解析
查看>>
微软宣布针对Azure Cosmos DB的多个更新
查看>>
GitHub安全告警检测出了400多万个漏洞
查看>>
如何在Python中使用LightFM构建可扩展的电子商务推荐系统?
查看>>
畅谈云原生(上):云原生应用应该是什么样子?
查看>>
取代ZooKeeper!高并发下的分布式一致性开源组件StateSynchronizer
查看>>
AlloyTouch实现下拉刷新
查看>>
Wiki工具使用感悟
查看>>
云因成本高昂屡被关注,上云的价值是什么?
查看>>
深入探索JVM自动资源管理
查看>>
Go现在接受来自GitHub PR的补丁
查看>>
Sonatype收购Vor Security,扩展对Nexus开源组件的支持
查看>>
Spark作为ETL工具与SequoiaDB的结合应用
查看>>
Steve Thair谈DevOps on Windows的演变与面临的挑战
查看>>