开源OSS.Social项目进阶介绍和使用展示

时间:2022-09-08 22:04:11

  在开源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

开源OSS.Social项目进阶介绍和使用展示

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

  正常消息:

  TextHandler(文本消息)

  ImageHandler(图片消息)

  VoiceHandler(语音消息)

  VideoHandler(视频)

  LocationHandler(位置消息)

  LinkHandler(链接消息)

  事件消息:

  SubscribeEventHandler(订阅事件)

  ScanEventHandler(扫描事件)

  LocationEventHandler(上报位置事件)

  ClickEventHandler(点击菜单事件)

  ViewEventHandler(点击菜单跳转事件)

  b. 声明配置信息

开源OSS.Social项目进阶介绍和使用展示

  c. 页面调用

开源OSS.Social项目进阶介绍和使用展示

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

开源OSS.Social项目进阶介绍和使用展示

  高级模式需要调用注册方法,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关键字,保证结构的清晰,同时保证调用时的简单。详细的分类可以见下面的结构:

开源OSS.Social项目进阶介绍和使用展示

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

开源OSS.Social项目进阶介绍和使用展示

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

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

三. 社交接口模块

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

开源OSS.Social项目进阶介绍和使用展示

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

四.  OSS项目的规划

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

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

开源OSS.Social项目进阶介绍和使用展示

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

开源OSS.Social项目进阶介绍和使用展示

开源OSS.Social项目进阶介绍和使用展示的更多相关文章

  1. 开源OSS.Social微信项目进阶介绍

    在开源OSS.Social微信项目解析的随笔中,我简单给大家分享了进行中微信项目的概要设计,主要在讲述解决思路和过程,没有详细实现和使用介绍.本着不能马虎的态度,这篇文章我来给大家分解一下项目结构,使 ...

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

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

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

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

  4. Oschat IM 开源即时通讯项目介绍 - FengJ的个人页面 - 开源中国社区

    Oschat IM 开源即时通讯项目介绍 - FengJ的个人页面 - 开源中国社区 Oschat IM 开源即时通讯项目介绍    255人收藏此文章, 我要收藏 发表于5天前(2013-08-28 ...

  5. 我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/And ...

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

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

  7. .NET 开源项目 StreamJsonRpc 介绍

    StreamJsonRpc 是一个实现了 JSON-RPC 通信协议的开源 .NET 库,在介绍 StreamJsonRpc 之前,我们先来了解一下 JSON-RPC. JSON-RPC 介绍 JSO ...

  8. .Net开源oss项目进度更新(含小程序接口)

    和大家分享下当前OSS开源项目的进度情况: 一. OSS.Common [开源中国] [github] 经过昨天的努力,oss.common项目初步完成了对.net standard的支持,迁移过程本 ...

  9. 开源任务管理平台TaskManagerV2.0介绍及升级说明

    上一篇开源任务管理平台TaskManager介绍发布后,有网友联系我看看能不能做个后台管理界面,方便管理系统中所有的任务.由于时间和技术问题1.0版本的时候,新增了一个3分钟读取配置文件动态修改任务的 ...

随机推荐

  1. OpenLayers 3 之 地图样式(ol.style)详解

    地图样式是由 style 类控制的,其包含了地图样式的方方面面,例如,填充色.图标样式.图片样式.规则图形样式.边界样式.文字样式等,样式一般针对矢量要素图层. 矢量图层样式可以事先写好,写成静态的, ...

  2. mfc模态对话框

    Mfc模态对话框: 创建模态对话框: [模态对话框:具有独占行为,必须由用户完成对当前对话框的响应,才能对本对话框所属的进程进行其他操作] 例如: 我们创建一个加法计算器.点击计算之后,弹出一个对话框 ...

  3. [Laravel 5 教程学习笔记] 一、Windows下安装Laravel 5

    最近看到一些统计,说是Laravel是目前PHP框架中使用最多的,所以就想来学习下.之前其实也想过学习这个框架,但是每次到第一步安装的时候就卡住了,无奈  .之前用ThinkPHP的时候,下载完放到网 ...

  4. python运维开发(十四)----HTML基本操作

    内容目录: HTML概述 head标签 body中常用标签 css选择器 css常用属性 HTML HTML概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言) ...

  5. rsync 文件校验及同步原理

    rsync 文件校验及同步原理 参考:http://rsync.samba.org/how-rsync-works.html 我们关注的是其发送与接收校验文件的算法,这里附上原文和我老婆(^_^)的翻 ...

  6. iOS 实现简单的毛玻璃效果

    最近在整理导航栏的渐隐渐现效果,整理过程中偶然学会了图片的毛玻璃效果实现,很简单,不多说了,先上图看看效果对比, 这是原图, 这是加了效果后的,创建图片的代码就不上了,下面看下添加效果的代码: // ...

  7. tkinter中menu菜单控件(十二)

    menu菜单控件 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("300x200 ...

  8. [f]智能获取浏览器版本UA信息的方法

    var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { ...

  9. 从零开始搭建VUE项目

    前言: 此样板面向大型,严肃的项目,并假定您对Webpack和vue-loader有些熟悉. 请务必阅读vue-loader的常见工作流配方的文档. 如果您只想尝试vue-loader或者鞭打一个快速 ...

  10. S1 商品信息管理系统

    #include <iostream> #include <cstdio> #include <cstdlib> #include <iomanip> ...