云与后端相关的技术似乎并不属于嵌入式和物联智能硬件开发工程师的范畴,但是嵌入式开发工程师有必要认识成熟的网络架构和相关的云技术,以拓展自己在系统架构方面的视野。大数据分析是物联网背后的核心价值,物联智能硬件是物联大系统的终端,开发工程师不仅要深入精通物联技术,也应该去理解大系统,甚至整个生态领域的相关技术。

作为嵌入式开发工程师,也许并不需要熟悉云和后端的技术开发,但至少要对其中用到的技术和接口有一定的认识。

一、网络架构

常见的网络架构分为C/S和B/S两种模式。

1. C/S是客户端/服务器模式,典型应用如QQ客户端、百度云管家等;B/S则是浏览器/服务器模式,典型的应用就是门户网站、银行业务系统等。两种模式的优点和缺点都显而易见。

2. C/S交互性强、网络通信量低、响应速度快,很多处理都集中在本地客户端完成,是胖客户端/瘦服务器。但是其是针对性开发,不利于变更和扩展。C/S通信编程基于TCP/IP层的socket编程,或者基于对socket的封装类。

3. B/S方式分布性强、升级维护方便、开发简单、总体成本低,本地只需要安装一个通用的浏览器即可,是瘦客户端/胖服务器。但其有数据安全性问题、对服务器要求过高、数据传输速度慢。B/S的通信是基于HTTP协议。随着网页脚本技术的提高,B/S也逐渐增强本地浏览器端的处理能力,以减轻服务器的负荷。

4.以上分析都是基于对PC端网络架构的思考,但是在移动互联网上却有截然不同的体验。以门户新闻网站而言,在PC领域是以B/S方式来呈现的,但是如果将其直接移植到手机和平板端,会因为屏幕尺寸的差异使得用户体验变差,尽管在服务器端可以通过获取终端的个性化参数来进行适配,但总体体验是远不上APP客户端来展现的,所以我们在手机看到的是新浪新闻、网易新闻等等客户端。在移动互联网领域,应该考虑的是更多的垂直服务,而不是大而全的产品。

二、服务器架构

接下来以B/S架构为例来分析服务器端的架构。示意图如下:

1.用户浏览器来访问业务系统,如银行业务,浏览器是直接跟WEB页面服务器交互的。WEB服务器一般会部署apache(或者tomcat),而业务系统的网页(如html,php)则通过apache服务转为HTTP协议通信给用户。

2.业务系统不同的业务页面由业务引擎来进行控制和处理,业务引擎还会访问数据库,另外还需要将处理结果的页面视图通过WEB向用户展示。

3.如果数据访问量不大,我们一般可以认为WEB是一台服务器,业务引擎是一台服务器,数据库和服务是一台服务器。如果数据量大,那WEB前面可能还有负载均衡服务器,业务引擎和数据库可能是服务器集群。如果是超大型数据,如大数据,那传统的oracle根本就不管用,要用到分布式文件系统,如Hadoop里面的HDFS。当然,如果数据量很小,一台服务器装下三者也可以。

三、后端软件架构

以上分析是基于部署视图对整个系统的理解。在一般的软件业务系统中,web服务使用apache(开源),数据库服务用Mysql(开源)等,都是成熟的软件产品,或者我们可以认为它们是一种软件工具。在实现业务系统中,我们能做的是去高效利用apache和mysql,而业务实现的核心是业务引擎的实现。

业务引擎是应用系统的核心,应用系统上成熟的模型是MVC模型。M是模型,是对数据库应用接口的封装,业务引擎即通过M模型的接口来访问数据库的业务数据;V是视图,是应用根据数据处理的结果而整合的页面,最终会通过WEB推向用户的浏览器;而C则是控制,即业务引擎的核心,其根据用户的交互来进行有针对的数据处理。

用户的交互最终都会通过HTTP协议来传送,而HTTP有两种方式,类似编程中的函数的参数传递,一种是GET的方式,即在网页的访问地址后面加上参数来传递;另一种是POST方式,不出现在访问地址后面,而是出现在消息体中。MVC的控制器会根据参数的不同来区分不同的子业务请求,并将它们交给对应的数据处理引擎来处理。

业务引擎的开发一般都是用解释性语言来开发,如php,JSP,asp等等。中小型系统常用apache+php+Mysql这种组合,另外就是tomcat+jsp+mysql.

四、云平台

云平台并不是什么神秘的技术,对于应用者而言,云技术能给我们带来极大的便利和成本优势。我们来想象一下,一个公司如果只在广州办公,它开发的产品系统是服务全国,如果它只是在自己的公司架设服务器,但全国各地用户访问的IP包都要在网络上跋山涉水来到广州,北方的用户的体验肯定很差。假设淘宝的服务器都在杭州,那11.11的抢购,我们在广州怎么抢得过杭州的。因为租赁云平台来假设分布式的服务平台是大型系统的不二选择,有人可能会想,这些公司可以在全国各地租机房买服务器放着啊,成本呢?而且用户的访问也有峰值和周期性,360的抢票虽然牛掰,但如果不是过年,也没多少人用吧。平时买那么多服务器就为了过年抢一抢多浪费,肯定比不上过年有针对性地租用云资源来得便宜。

简单地说,对于一般用户来说,云平台就是提供在看不见的地方提供虚拟服务器主机(CPU、内存、硬盘)和数据库、WEB服务(apache)等资源。对于云平台的提供商,那才是虚拟集群技术人才的聚居地,咱们不去讨论了。

目前,国内有阿里云、新浪云和百度云等知名云平台。新浪云对于体验用户是免费的(php免费,java是收费的)。对于初学者,可以考虑申请新浪云来进行技术开发。

各种云的申请和创建云应用的过程都比较简单。以新浪云为例简单说明一下,详细的例程可以百度得到。

1.注册新浪微博账号,两者是绑定的。

2.以新浪账号登陆新浪云计算中心。

3.在新浪SAE上创建新应用,如图:

这个时候可以通过二级域名来访问了,即意味着你拥有了云平台的主机资源和apache服务和php脚本解释引擎。

4.编辑或者上传代码(php语言开发)

五、微信公众平台开发接入

微信公众平台的后台管理有两种模式,一种是常规的模式,即由微信官方提供的后台菜单功能来进行管理,如用户管理、群发、交互回复等等;另一种是开发者模式,即由公众号的运营商自行开发后端,来对关注该公众号的用户提供服务,如自动回复、地理信息服务、移动支付等等。微信硬件服务也属于开发者模式,由微信硬件的厂商提供后端进行支持,详细的架构可以参考《物联网架构场景技术分析》一文。开发者模式给微信公众号注入了强大的生命力,有第三方创造力的加入,使得微信公众服务大放异彩,也可以预见基于微信的物联网会推到物联网大幅前进。

第三方后端服务假设在云前述的云平台基础上,只要按照微信提供的接口即可以接入微信公众平台。

1.先使用token来验证第三方主机方的存在。

2.第三方服务按照微信的接口来提供服务。目录微信公众号提供消息服务、对话服务、移动支付、硬件服务、地理信息、图像音频等方面的接口。详细请参考微信官方资料。

本文从大的宏观网络架构一步一步深入到所谓微观的微信后台接入,希望对你有所启发。

1、讲述C/S和B/S网络架构

2、从部署视图理解(S)服务器架构,包含web、业务引擎、数据库

3、从开发视图理解业务引擎的软件架构

4、云平台提供服务器资源(web服务、数据库服务、主机资源),申请免费云

5、云平台实现微信公众平台开发接入

作为嵌入式开发工程师,不用对未知领域有所畏惧,只要付出足够的努力,一切都能在掌握之中!

敬请关注微信公众号:嵌入式企鹅圈,获取更多嵌入式和物联网开发相关技术原创分享。

网络架构、云平台和微信公众平台开发接入相关推荐

  1. 网络架构、云平台和微信公众号开发接入--基于嵌入式工程师的视觉

    云与后端相关的技术似乎并不属于嵌入式和物联智能硬件开发工程师的范畴,但是嵌入式开发工程师有必要认识成熟的网络架构和相关的云技术,以拓展自己在系统架构方面的视野.大数据分析是物联网背后的核心价值,物联智 ...

  2. 结合百度云平台和微信公众平台开发(二)

    距离第一章的入门讲解已经有一段时间了,最近的确没有空,今天我们在上一次的基础上来进行一个扩展,实现天气查询功能,大概就是,我们在手机上想我们的公众账号发送一个消息,比如"weather&qu ...

  3. 结合百度云平台和微信公众平台进行开发(一)

    套话大话我就不说了,网上一大堆,我们就直接进入正题吧,相信对百度云平台和微信公众平台没有了解的也不会关注这篇文章. 上面的标题到底是个什么意思呢?下面让我们一步一步来完成一个测试小项目. 两者是怎样结 ...

  4. 微信公众平台、微信公众平台.小程序、微信.开放平台三者关系及unionid

    以下内容,仅限于根据自己开发以及阅读微信文档总结,错误之处敬请指出,共同进步! 一.微信公众平台.微信公众平台.小程序.微信.开放平台登录地址 项目 微信公众平台 微信公众平台.小程序 微信.开放平台 ...

  5. 1:新浪云SAE搭建微信公众平台开发-java

    从微信调用API中可以看出个大概流程,如下图 通过上图的了解,可知要想做微信公众平台第二次开发 必须搭建一个自定义服务器,自定义服务器上面部署相应的逻辑代码,搭建自定义服务器的方式有很多种 比如百度云 ...

  6. 公众平台 java_微信公众平台开发详细步骤与java代码

    1.微信公众平台设置 首先在https://mp.weixin.qq.com/注册一个公众平台账号(服务号.订阅号.企业号的区别) 登录微信公众平台后台,在左侧列表中最下方,找到" 基本配置 ...

  7. java微信公众号支付开发平台_Java微信公众平台开发之公众号支付(微信内H5调起支付)...

    官方文档 准备工作:已通过微信认证的公众号,必须通过ICP备案域名(否则会报支付失败) 借鉴了很多大神的文章,在此先谢过了 整个支付流程,看懂就很好写了 一.设置支付目录 在微信公众平台设置您的公众号 ...

  8. 公众平台 php,微信公众平台PHP开发(转载)

    最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据 ...

  9. 公众平台 php,微信公众平台PHP开发

    最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据 ...

最新文章

  1. 我是如何做软件测试项目的?
  2. Linux无法启动(一)
  3. Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile)
  4. Spring IO Platform简介及示例
  5. 分布式实时计算—从霍普金大学数据错误谈谈如何保证实时计算数据准确性
  6. UOJ 405(IOI2018 D1T1)
  7. Error:Could not find appcompat-v7.aar (com.android.support:appcompat-v7:26.1.0). Searched in the fol
  8. 仿生蛇类机器人 特点_今日项目:功能表面仿生激光强化及其修复再造技术
  9. Oracle即将发布的全新Java垃圾收集器 ZGC
  10. 计算机与人脑_类脑计算机:一种新型的计算系统
  11. Windows Phone开发(11):常用控件(下)
  12. dart map 转list_Dart 集合类型List Set Map循环forEach map where any every
  13. 水刀行业调研报告 - 市场现状分析与发展前景预测
  14. 50阶乘c语言思想,求10000的阶乘(c语言代码实现)
  15. EDA技术实用教程 | 复习十三 | 计数器
  16. 计算机网络工程课程设计
  17. 【泛微Ecology9.0】安装\启用非标功能
  18. Django实现web端tailf日志文件
  19. 方大东莞新材:实习总结报告PPT讲稿
  20. 华为手机Android studio 配置ADB wifi 调试

热门文章

  1. php动态数组的存储过程,存储过程(数组参数、for循环、拼凑的动态sql游标、merge into)...
  2. ECU安全访问系列_2(代码篇)
  3. postgresql 并发访问_postgresql 并发update下导致的死锁问题
  4. OpenCV计算机图像处理 —— 凸性缺陷 + 点多边形测试 + 形状匹配 + 轮廓分层与cv.findContours()
  5. 【Win8自带微软输入法删除图解】
  6. 「Slack」- 安装 @20210303
  7. 新浪微博分布式爬虫分享
  8. 通过windows自带远程桌面,实现不同局域网的电脑相互访问(默默P2P远程桌面管理工具-直接内网穿透)
  9. Azure Information Protection信息保护(AIP)/Azure Rights Management权限管理(RMS)
  10. React+阿里云Aliplayer播放器实现rtmp直播(推流时间差,重启播放器,计时观看)