zoukankan      html  css  js  c++  java
  • 【转载】Wcf通讯基础框架方案

    http://www.cnblogs.com/lovecindywang/archive/2011/05/10/2042188.html

    源代码见 http://wcfextension.codeplex.com/

    注意:

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

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

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

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

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

    image

    1) WcfExtension就是核心框架:

    image

    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。

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

    image

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

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

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

    image

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

    image

    然后建立一个服务Service:

    image

    然后建立服务的集群ServerFarm:

    image

    最后是客户端的端点ClientEndpoint:

    image

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

    image

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

    image

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

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

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

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

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

  • 相关阅读:
    ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
    ASP.NET CORE 使用Consul实现服务治理与健康检查(1)——概念篇
    Asp.Net Core 单元测试正确姿势
    如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch
    Asp.Net Core2.2 源码阅读系列——控制台日志源码解析
    使用VS Code 开发.NET CORE 程序指南
    .NetCore下ES查询驱动 PlainElastic .Net 升级官方驱动 Elasticsearch .Net
    重新认识 async/await 语法糖
    EF添加
    EF修改部分字段
  • 原文地址:https://www.cnblogs.com/fx2008/p/2278197.html
Copyright © 2011-2022 走看看