整合微信小程序的Web API接口层的架构设计

来源:伍华聪

cnblogs.com/wuhuacong/p/7267333.html

例如:《C#开发微信门户及应用--微信各个项目模块的定义和相互关系》介绍了相关模块的划分。(http://www.cnblogs.com/wuhuacong/p/5595308.html)

(http://www.cnblogs.com/wuhuacong/p/7220794.html)

本篇随笔对之前介绍的架构内容进行统一的调整更新,以便更加方便实际项目的应用开发,以期达到统一、重用、清晰的目的。

1、公众号、企业号、小程序模块的划分

我们知道,目前微信企业应用,分为公众号、企业号(企业微信)、小程序三种应用模式,对于常规的开发来说,我们对每个模式的应用都分为了两个不同的部分,一个是和业务数据相关的数据管理、一个是和API接口相关的API管理,两者整合为一个完整的应用。

公众号、企业号(企业微信)、小程序三种应用模式的模块划分如下图所示。

业务数据管理模块,一般还需要调用API接口进行相关的处理操作,因此他们之间的项目引用关系如下所示

另外,这三种类型的API接口也公用了一些业务对象和实体类,因此把它们抽取出来作为公共项目模块,如这三类接口项目统一使用了一个公共实体类项目。

除了这些之外,我们做项目,一般还涉及到一些基础功能模块,如公用类库,以及附件管理、通讯录管理、权限管理模块等内容,我们可以把后者几个模块放在一起,组成基础模块。

随着基于JSON格式的Web API的广泛应用,越来越多的企业采用Web API接口服务层,作为统一接口的核心所在,也成为Web API核心层。

其他业务团队开发的系统只需要遵循整个大接口平台的统一规划,完成各自的功能需求即可,不会造成数据库的不一致,更不会让某家公司掌握核心的技术资源,尾大不掉的尴尬情形。

基于上面的分析,我们企业最终围绕着Web API核心层做了不同的业务应用,如下图所示。

再进一步详细各个模块的分层,我们可以细化为下面的架构设计图,所有模块均围绕着Web API 接口层进行扩展,底层的数据存储对上层的应用是完全透明,我们可以根据需要拆分各种业务数据库,以及使用我们认为合适的数据库。

微信的服务器架起了客户手机和开发者服务器的一个桥梁,通过消息的传递和响应,实现了与用户的交互操作,下面是它的消息流程图。

通过对这几类业务应用的模块分析,我们就可以建立相关的项目了,来分别对这些数据和API进行管理,如我们根据这些分类,在Visual Studio的项目管理中看到的项目如下所示。

其中由于我们这里的Web API 是一个统一的出口,因此会整合很多Web API控制器,以提供所有业务的接口,因此对Web API 控制器的管理就显得很重要,这里建议引入Area区域进行管理控制器类,这种各个模块就能够很好分门别类的进行管理了。

看完本文有收获?请转发分享给更多人

本文来自企鹅号 - DotNet媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

周集:好用的工具和网站

上次提到的软件下载的页面已经写完了,接下来就是往页面中丰富内容,我会放一些自己用过的比较好用的软件工具,下载地址,有官方网站的我会放上官方网站的地址,没有的话,...

23690
来自专栏华章科技

关于小程序,我只服这篇文章

微信小程序能实现的事务,App理论上都能实现;但App能实现的功能,微信小程序却受限于框架与微信开放的API,就不一定能做。

12230
来自专栏微服务生态

跟我学分布式事务之2PC和3PC

在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的增\删\改\差等...

11040
来自专栏携程技术中心

开源 | 携程Redis多数据中心解决方案-XPipe

作者简介 孟文超,携程技术中心框架研发部高级经理。2016年加入携程,目前主要负责Redis多数据中心项目XPipe。此前曾在大众点评工作,任基础架构部门通信团...

635100
来自专栏哲学驱动设计

Rafy 框架 - 插件级别的扩展点

本章说明如何使用额外的插件(如客户化插件)对另一插件(如产品插件)进行扩展。 使用场景 在 产品线工程 中,项目的研发分为领域工程和应用工程。这个过程中会需要对...

21770
来自专栏Java架构沉思录

微服务架构下静态数据通用缓存机制

在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验,尝试理清其中存在...

9420
来自专栏Java架构沉思录

CDN为什么这么快

CDN全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络。

48220
来自专栏IT技术精选文摘

分布式系统关键技术之全栈监控

容量管理 提供一个全局的系统运行时数据展示,可以让其它工程师知道是否需要加机器或资源

18120
来自专栏洞链

如何理解分布式与集群,二者区别是什么?

分布式是指不同的业务分布在不同的地方,集群指的是将几台服务器集中在一起,实现同一业务。 白话理解的话,比如公司项目上线初期(举例电子商务网站)

16630
来自专栏FreeBuf

PhEmail:基于Python的开源网络钓鱼测试工具

PhEmail简介 PhEmail是一款采用Python编程语言开发的开源网络钓鱼邮件工具,它可以帮助研究人员在进行社会工程学测试的过程中自动化地给目标发送网络...

35650

扫码关注云+社区

领取腾讯云代金券