`
kavy
  • 浏览: 888643 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

移动端服务架构

 
阅读更多

转自:http://www.cnblogs.com/YamatAmain/archive/2013/06/09/3129452.html

一:基础流程图。

image

其实有一点还需要加上,就是对json的压缩和加密,一来给用户节约流量,二来防止请求被截取破解我们的参数。具体先压缩后加密还是先加密后压缩这个问题看需求。

看到这个架构设计时,你们可能会说如果程序入口挂了,所有的服务都不可以用了。

所以这个架构的弱点在程序入口处,因此要有一(多)台机器做负载,负载的工具可以是HaProxy(软件)或者F5(硬件)的负载。F5比较昂贵,我没用过,haproxy的配置我就不贴了,谷歌一大把。

二:Json参数设计

手机App的灵魂是用户数,有了用户数才有一切。据我得到的数据,目前一款app从开始制作到推广到注册到充值的费用是14.6元(内部数据)。所以一款App的成功大部分取决于渠道推广。而一款手机的mac.imsi等数据是唯一标识一个手机用户的标准。可能某个用户换了一款手机,但是还想用以前的账号登录,所以userID也是必不可少的字段。但是会出现一个问题,两个mac.imsi,userID,但是他是一个用户,所以对用户信息的更新是至关重要的。但是用户数据的更新不可能放在客户端,当你界面提供了上传imsi.mac.phonenumber等字段到服务端时,用户会义无反顾的选择否。如果你偷偷上传用户的隐私数据到数据库,这是国内通用做法。不排除被用户控告的可能性。所以我们要想一起两全其美的办法。每一次都把这些信息上传上去,美其名曰:唯一标识用户。至于其它的数据,那是运营哥需要的数据,可以在数据中加上。

 


"context": { 
"userID": "1", 
"pwd": "fuckGfw", 
"imei": "353641012835017", 
"imsi": "460000000000000" 
}, 
"reqType": { 
"rt": "xxx" 

}

 

每次把context中的参数进行更新,保持你所拥有的用户数据是真实值钱的。其中的rt字段为每次请求的目的(请求类型),它用来区分每次请求上来 我们需要调用那一台服务器的服务来处理请求。

服务架构和数据已经准备OK,我们接下来coding.

1:请求入口的承载类型选取

你是选择传统的.aspx页面为入口还是ashx还是wcf/wcfRest/WebApi 这个自由度很大,具体在项目中的选择主要看心情。我心情不好,所以选择.aspx页面。

主入口为Default.aspx页面,代码如下

   1:   protected void Page_Load(object sender, EventArgs e)
   2:   {
   3:      if(!IsPostBack)
   4:      {
   5:          try
   6:          {
   7:          }
   8:          catch (Exception exc)
   9:          {
  10:          }
  11:      }
  12:   }

 

在主入口处加一个大范围的catch,而在catch中输出系统忙。嗯,美其名曰:用户体验。

对json的压缩我使用了GZip,代码如下:

   1:      public static class CompressionHelper
   2:      {
   3:          /// <summary> 
   4:          /// Compress the byte[] 
   5:          /// </summary> 
   6:          /// <param name="input"></param> 
   7:          /// <returns></returns> 
   8:          public static byte[] Compress(byte[] input)
   9:          {
  10:              byte[] output;
  11:              using (MemoryStream ms = new MemoryStream())
  12:              {
  13:                  using (GZipStream gs = new GZipStream(ms, CompressionMode.Compress))
  14:                  {
  15:                      gs.Write(input, 0, input.Length);
  16:                      gs.Close();
  17:                      output = ms.ToArray();
  18:                  }
  19:                  ms.Close();
  20:              }
  21:              return output;
  22:          }
  23:   
  24:          /// <summary> 
  25:          /// Decompress the byte[] 
  26:          /// </summary> 
  27:          /// <param name="input"></param> 
  28:          /// <returns></returns> 
  29:          public static byte[] Decompress(byte[] input)
  30:          {
  31:              List<byte> output = new List<byte>();
  32:              using (MemoryStream ms = new MemoryStream(input))
  33:              {
  34:                  using (GZipStream gs = new GZipStream(ms, CompressionMode.Decompress))
  35:                  {
  36:                      int readByte = gs.ReadByte();
  37:                      while (readByte != -1)
  38:                      {
  39:                          output.Add((byte)readByte);
  40:                          readByte = gs.ReadByte();
  41:                      }
  42:                      gs.Close();
  43:                  }
  44:                  ms.Close();
  45:              }
  46:              return output.ToArray();
  47:          }
  48:      } 

压缩完json后,还需要加密,别脑残的说MD5,小心我抽你。这个看你对数据的安全性如何看待。如支付宝用的RSACryptoServiceProvider加密,如asp.net的ViewState用的base64编码。其实用什么编码无所谓,你只需要定制属于你自己的码表。代码我就不贴了,我怕把我1个月100块的保密费弄成10000的律师费。。。

接下来到重点了。你反序列化时可以使用Linq to Json或者Newtonsoft.json随便得到了rt字段的类型。一般同学就开始这样写了:

   1:              switch (rt)
   2:              {
   3:                  case"":
   4:                      break;
   5:                  default:
   6:                      break;
   7:              }

这样写没错,但是如果你的rt类型比较多了以后就会出现很长很长的流水代码。所以这个地方我更加建议使用依赖注入。接下来就是具体的业务逻辑处理、数据处理。

 

整片写完,仔细看看这架构,有什么难度?有什么难点?有什么值钱的地方?值得商榷。

分享到:
评论

相关推荐

    金融移动端服务治理架构.pptx

    金融移动端服务治理架构是当前金融科技发展的重要组成部分,它关乎金融机构如何在移动互联网时代提供高效、安全、稳定的服务。智慧金融的实现,离不开先进的服务治理架构作为支撑,它可以帮助金融机构优化用户体验,...

    极光移动端架构演变之路.pdf

    极光移动端架构可能经历了从基础架构到服务组件的优化、从单体应用到微服务架构的迁移、以及持续集成和部署等方面的发展。 以下是一些可能的知识点: 1. 移动端架构的定义:移动端架构通常指的是在移动设备上运行...

    美团点评移动端底层架构实践

    为了保障数据的一致性和服务的可靠性,美团点评移动端架构中引入了分布式数据库和分布式缓存系统。这些系统能够在多个数据节点之间同步数据,保证数据的一致性,并通过缓存提升读取速度,减少对数据库的直接访问,...

    美团点评移动端底层架构实践.pdf

    总的来说,美团点评的移动端底层架构实践注重了系统的稳定性和研发效率,通过精细化的监控和问题处理机制,提升了整体服务质量。这一实践对于其他互联网公司尤其是移动应用开发者来说,具有很高的参考价值和借鉴意义...

    vue实战vue移动端项目架构设计(基于vue-cli4).zip

    在本项目“vue实战vue移动端项目架构设计(基于vue-cli4)”中,我们将深入探讨如何利用Vue CLI 4 构建一个高效的移动端项目架构。 1. **Vue CLI 4 的安装与初始化** 首先,确保你的开发环境中已经安装了Node.js。...

    h5移动端仿钉钉组织架构的选择部门功能

    博客地址https://blog.csdn.net/weixin_44484452/article/details/121638096?spm=1001.2014.3001.5501 本资源比博客的补充了顶部面包屑功能

    移动端组件化架构.pdf

    根据提供的文件信息,我们可以总结出关于“移动端组件化架构”的一系列关键知识点,这些知识点主要围绕移动端组件化的概念、实现方式以及具体的案例展开。 ### 移动端组件化架构概述 移动应用开发过程中,随着功能...

    尚硅谷 一键下载(java,大数据,移动端,架构).xlsx

    尚硅谷最新视频下载地址,永久有效,尚硅谷 程序员的自学神器,在家学习,永久免费,一键下载

    技术架构、APP前段架构、App后台架构

    技术架构、APP前段架构、App后台架构 技术架构是指整个系统的技术蓝图,包括前端技术架构、App后台架构等多个方面。下面我们将详细介绍这些技术架构的知识点: 一、前端技术架构 1.安全机制保证 API 的调用者是...

    移动端架构师体系课(附电子书)

    分享资源,移动端架构师体系课(6大阶段+30周+500多课时+源码+电子书)

    基于Vue的RuoYi APP移动端框架设计源码

    RuoYi APP移动端框架:基于Java开发,包含349个文件,包括89个Markdown文档、88个Vue组件文件、80个JSON配置文件、53个JavaScript文件、16个SCSS样式文件、8个PNG图像文件、4个JPG图像文件、3个CSS样式文件、2个TTF...

    移动端MVC-MVP架构简单示例

    "移动端MVC-MVP架构简单示例"是一个很好的学习资源,它涵盖了两种常见的Android应用程序架构模式:Model-View-Controller (MVC) 和 Model-View-Presenter (MVP)。 **MVC架构** MVC是一种经典的软件设计模式,它将...

    android移动端和服务器交互

    **服务端架构建议**:建议采用三层架构加上WebService层。这种结构能够清晰地区分业务逻辑、数据访问和表示层,有利于系统的扩展和维护。 **交互过程**: - **基于手机API开发的交互**: - 客户端通过HTTP请求...

    h5移动端部门树展示

    在H5移动端开发中,部门树展示是一种常见的需求,它用于组织结构的呈现,比如公司内部的部门架构、员工层级关系等。这种功能通常应用于企业内部管理系统或者协作平台,便于用户快速查找和理解组织结构。下面我们将...

    移动端游戏架构设计

    目前很多开发者对于游戏架构设计一无所知,只是简单的把脚本与对象进行挂接,导致在后期开发中,版本维护,功能扩展非常不方便,现在网上出现了各种版本的热更新实现,比如Lua,JS,C#Light等,该框架设计技术...

    阿里移动端无痕埋点的架构与实践

    移动端的数据采集尤为重要,因为它能够更准确地捕捉到用户的实时行为和偏好,进而帮助企业更好地理解用户需求,提升产品体验和服务质量。 #### 二、无痕埋点架构 无痕埋点是阿里巴巴为了解决传统埋点方式带来的...

    苏宁易购移动端统一接入层架构.docx

    【苏宁易购移动端统一接入层架构】是针对电商平台移动端开发的一种高效、稳定且可扩展的架构设计,旨在解决移动端多平台、多应用间的数据交互与服务整合问题。在这一架构中,统一接入层扮演着核心角色,它作为前端与...

Global site tag (gtag.js) - Google Analytics