在开源OSS.Social微信项目解析的随笔中,我简单给大家分享了进行中微信项目的概要设计,主要在讲述解决思路和过程,没有详细实现和使用介绍。本着不能马虎的态度,这篇文章我来给大家分解一下项目结构,使用方式以及后边的规划,希望能够让大家通达晓畅。同时,当前项目正在进行 .Net Standard 类库的过渡,相信一段时间之后就可以同时对 .net framework 和 .net core 提供支持。

  这个项目是整个OSS系列开源项目之一,主要是对 社交化产品的接口包装,而微信项目是当前正在进行的项目,在整个微信的项目中,包含三个大模块(请见上文,或见模块划分思维导图),这里对三个模块做一个分步讲解。

一.实时消息模块

  当前模块主要是对实时消息的处理,其概要设计想法和相关流程图已经在上文中做了介绍,这里对项目的具体实现做下分解演示。

  首先我介绍下消息模块的文件结构

  当前模块主要在项目中的Msg文件夹下,对应的实体则在 Msg/Mos 文件夹中,文件夹下有三个类:

  WxMsgBaseHandler(基础消息类型处理)

  WxMsgHandler(高级扩展消息处理)

  Cryptography(微信安全模式加密补位方法处理)

  在实体文件夹中,主要包含 基类(BaseMos), 普通消息类型实体(RecMsgMos-基础消息接收实体,RecEventMsgMos-基础事件消息接收实体) 和 消息响应实体 (ReplyMsgMos-响应消息实体)三个部分,这里面大家主要需要关心的是 BaseMos中的(BaseRecMsg,BaseRecEventMsg) 和 BaseReplyMsg,分别对应着 正常消息、事件消息,以及响应消息的基类。

  了解基本结构之后我们来看下具体调用方式,因为这个模块提供了两种调用模式,这里分别介绍:

  1. 基础消息模式,这个模式主要是对微信常见的消息类型的调用,在RecMsgMos和RecEventMsgMos文件中的实体也主要是对 基础模式接收消息的定义,当前模式的适用场景是开发者不需要考虑例如卡券等特殊事件消息,使用当前模式即可,调用演示如下:

  a. 自定义消息处理类WxBasicMsgService,继承自WxBasicMsgHandler,只需要给相关的事件委托Handler(请注意和事件消息的事件做区分)添加处理事件即可,传入的消息实体会根据不同委托事件一一对应,例如TextHandler对应的是TextRecMsg

  当前基础消息类型实现对应的事件为:

  正常消息:

  TextHandler(文本消息)

  ImageHandler(图片消息)

  VoiceHandler(语音消息)

  VideoHandler(视频)

  LocationHandler(位置消息)

  LinkHandler(链接消息)

  事件消息:

  SubscribeEventHandler(订阅事件)

  ScanEventHandler(扫描事件)

  LocationEventHandler(上报位置事件)

  ClickEventHandler(点击菜单事件)

  ViewEventHandler(点击菜单跳转事件)

  b. 声明配置信息

  c. 页面调用

  2. 高级消息模式,这个模式包含了基础模式的所有事件,主要适用场景是对有特殊事件消息有定制的情况。其调用方式和基础模式不同在于自定义消息处理类部分,这里展示一个简单自定义高级模式处理类:

  高级模式需要调用注册方法,RegisterMsgHandler-注册正常消息,RegisterEventMsgHandler-注册事件消息。第一个参数是消息类型名称,如果是事件消息,则是事件名称。第三个参数是具体的逻辑处理委托。第二个参数则是接收消息的实体类型,这里是举例所以我直接使用了LocationRecEventMsg,当然你也可以定义你需要的接收实体,正常消息继承自BaseRecMsg,事件消息继承自BaseRecEventMsg,举个例子:

public class CustomRecMsg : BaseRecMsg
{
  protected override void FormatPropertiesFromMsg()
  {
    base.FormatPropertiesFromMsg();
    Content = this["Content"];
  }
  public string Content { get; set; }
}

如果对于消息模块还有其他疑问,可以添加osscoder公众号提问,晚上我会统一解决。

二.功能接口模块

  这个模块主要是公号内的功能性接口,调用时需要调用全局的AccessToken,接口文件主要在Offcial文件夹下,根据功能对象分类下属又做了子模块分类,文件结构和消息模块下的类似,不过需要注意的是同一个文件夹下有几个类文件,但是类名都是同一个,例如Basic文件加下有User,Menu,Media等多个api文件,但类名同为:WxOffBasicApi。

  这里使用了Partail关键字,保证结构的清晰,同时保证调用时的简单。详细的分类可以见下面的结构:

  也就是功能模块接口主要有以下几个:WxOffBasicApi,WxOffCardApi,WxOffStatApi(统计,简写了),WxOffStoreApi,WxOffAssist,直接声明实例调用即可,当然当前接口还没有完全结束,主要集中在图中未标状态的部分,如果想要使用没有的接口,这里提供一个WxOffBaseApi基类中的方法调用示例,只需要返回一个WxBaseResp或者它的子类即可,WxBaseResp中有IsSuccess属性,可以通过它来判断当前的返回结果:

当然文件的命名也有一个简单规则:

请求实体:Wx+ 动作 + 对象/模块名称 + Req/Resp (如:WxAddMemberCardReq)
对象实体:Wx + 对象/模块名称 + Mo (如:WxMemberCardMo)
接口类:Wx+Off+模块名称+Api

三. 社交接口模块

  当前模块主要集中在Sns文件夹下,功能是面向用户相关的,微信的这块功能主要集中在授权和获取授权用户的基本信息,文件组成比较简单,里面提供了两种页面授权模式,PC扫码授权和手机微信端页面授权。调用方式也十分的简单,如图:

以上是几个部分的结构和调用方式介绍,所有实例代码都在OSS.Social.Samples中,可以去github或者 开源中国 下载查看。 

四.  OSS项目的规划

  当前已经开源的项目有 OSS.Common ,  OSS.Http, OSS.Social。 后期的计划还会有支付,客服,和用户三个项目,最近两周我的主要安排是完成OSS.Social 项目,同时完成 以上项目的.Net Standard 项目,完成对.net core 的支持,也欢迎有共同爱好的同学前来贡献代码,完成这个简单,基础,实用的系列项目。

 

续:这里把实时消息的处理流程再做一次回顾,可以和使用介绍再对照体会一下

当你看到这里的时候,你已经看完了,十分感谢你的耐心,如果还有其他疑问欢迎关注公众号(osscoder)进行提问

转载于:https://blog.51cto.com/osscoder/1894690

开源OSS.Social微信项目进阶介绍相关推荐

  1. 开源OSS.Social微信项目解析

    前言:OSS.Social是个开源的社交网站接口集成项目,当前也有很多其他不错的项目,不过始终没有我想要的那种简单清晰,只能撸起袖子,从头打造一个.当前正在进行的是对微信项目的开发,这里把对接口的整理 ...

  2. OSS.Social微信项目标准库介绍

    经过本周的努力,昨晚终于完成OSS.Social微信项目的标准库支持,当前项目你已经可以同时在.net framework和.net core 中进行调用,调用方法也发生了部分变化,这里我简单分享下, ...

  3. .NET 开源项目 StreamJsonRpc 介绍[下篇]

    阅读本文大概需要 9 分钟. 大家好,这是 .NET 开源项目 StreamJsonRpc 介绍的最后一篇.上篇介绍了一些预备知识,包括 JSON-RPC 协议介绍,StreamJsonRpc 是一个 ...

  4. Otter(阿里开源项目Otter介绍)

    1.Otter-入门篇1(阿里开源项目Otter介绍) https://my.oschina.net/wenzhenxi/blog/719095 2.Otter-入门篇2(Manager安装配置) h ...

  5. Apache DolphinScheduler 开源之夏学生项目申请开启,6 大课题等你来拿万元奖金!

    开源之夏 2023 学生报名已经正式开启!Apache DolphinScheduler 今年继续参与开源之夏的活动,2023 年 4 月 29 日-6 月 3 日 15:00 UTC+8,同学们可以 ...

  6. Cassandra在海量数据存储及大型项目案例介绍-part4

    Cassandra是一套开源分布式NoSQL数据库系统.它最初由Facebook开发,用于储存收件箱等简单格式数据,此后,由于Cassandra良好的可扩展性,被Digg.Twitter等知名Web ...

  7. 白鹭[egret]项目目录介绍)

    白鹭[egret]项目目录介绍 前言 一.游戏项目目录 1. egretProperties.json说明 二.使用步骤 1.引入库 2.读入数据 需要免费游戏源码的请微信搜索/扫码下方小程序 扫描下 ...

  8. 技术栈 | 开源社区的明星项目—Ceph谈

    图片来源:网络 作者 侯玉彬 来源 启迪云计算 如需转载,请联系原作者授权 简介 诞生于2006年的Ceph,是开源社区的明星项目,也是私有云事实上的标准-OpenStack的默认存储后端. Ceph ...

  9. React native 项目进阶(redux, redux saga, redux logger)

    之前利用知乎日报的api写了react-native的一个入门项目,传送文章地址React Native 项目入门和源码地址RN入门项目源码,目前github上的代码已经在原文的基础上增加了新的功能, ...

最新文章

  1. 2022-2028年中国康养地产行业市场需求前景及投资战略分析报告
  2. Java基本数据之间的类型转换
  3. v3 微信api 请求微信_企业微信API使用基本教程
  4. HtmlUnit自动填写表单并提交
  5. const的用法,特别是用在函数前面与后面的区别
  6. Scala关系运算符的一览图
  7. ES6公用跑马灯抽奖组件的封装及使用
  8. 通过“FBI树”复习二叉树算法(洛谷P1087题题解,Java语言描述)
  9. 【NOI OpenJudge】【1.1】编程基础之输入输出
  10. Android 自定义View(一)常用属性
  11. python web工资怎么样_月薪21170的Python Web岗,学到什么程度能找到工作?
  12. mysql 表单记录主键重新从1开始排序
  13. IT桔子沙龙之本地生活服务O2O探路者笔记整理
  14. ildasm ilasm
  15. python人像美颜_人像美颜美妆算法入门必备
  16. OAuth2 oauth_client_details表字段的详细说明
  17. Android SMB 简单几步实现手机给电脑传输数据
  18. android 清理系统缓存文件怎么恢复,文件过期或已被清理怎么恢复(微信如何恢复已清理文件)...
  19. 多功能音频工具的旗舰音乐编辑工具!Music Studio
  20. 纯JavaScript二维码在线生成网页源码

热门文章

  1. 计算机软件和硬件比较,软件与硬件RAID优劣之比较
  2. rabbitmq 查询版本_Hyperf 发布 v2.0.14 版本 | 企业级的 PHP 微服务云原生协程框架
  3. 第四范式冲刺IPO:4年亏13亿收入逐年翻番,研发工资人均2万
  4. 亚信科技CTO欧阳晔博士:5G网络助推边缘AI|MEET 2022
  5. 体验首款Linux消费级平板,原来芯片和系统全是国产
  6. 美国火星车失联的7分钟,高清视频传回来了
  7. 5天玩转PyTorch深度学习,从GAN到词嵌入都有实例丨教程资源
  8. Java动态追踪技术探究
  9. LeetCode 448. Find All Numbers Disappeared in an Array 442. Find All Duplicates in an Array
  10. Kotlin教程(九)泛型