移动App服务端架构设计_第1页
移动App服务端架构设计_第2页
移动App服务端架构设计_第3页
移动App服务端架构设计_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

移动App服务端架构设计一:基础流程图。入口其实有一点还需要加上,就是对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:protectedvoidPage_Load(objectsender,EventArgse)TOC\o"1-5"\h\z2: { 一3: if(!IsPostBack)4: {5: try6: {7: }8: catch(Exceptionexc)9: {10: }11: }12: }在主入口处加一个大范围的catch,而在catch中输出系统忙。嗯,美其名曰:用户体验。对json的压缩我使用了GZip,代码如下:1: publicstaticclassCompressionHelper2: {3: ///<summary>4: ///Compressthebyte[]

565678910111213///<paramname="input"></param>///<returns></returns>publicstaticbyte[]Compress(byte[]input){byte[]output;using(MemoryStreamms=newMemoryStream()){using(GZipStreamgs=newGZipStream(ms,CompressionMode.Compress))14CompressionMode.Compress))14151617181920212223242526272829303132gs.Write(input,0,input.Length);gs.Close();output=ms.ToArray();}ms.Close();}returnoutput;/////////////////////Decompressthebyte[]</summary><paramname="input"></param><returns></returns>publicstaticbyte[]Decompress(byte[]input){Listbyte>output=newList<byte>();using(MemoryStreamms=newMemoryStream(input))33: {34: using(GZipStreamgs=newGZipStream(ms,CompressionMode.Decompress))35363738394041424344{intreadByte=gs.ReadByte();{intreadByte=gs.ReadByte();while(readByte!=-1){output.Addbyte)readByte);readByte=gs.ReadByte();}gs.Close();}ms.Close();}46: returnoutput.ToArray();47: }48: }压缩完json后,还需要加密,别脑残的说MD5,小心我抽你。这个看你对数据的安全性如何看待。如支付宝用的RSACryptoServiceProvider加密,如的ViewState用的base64编码。其实用什么编码无所谓,你只需要定制属于你自己的码表。代码我就不贴了,我怕把我1个月100块的保密费弄成10000的律师费。。。接下来到重点了。你反序列化时可以使用LinqtoJson或者Newtonsoft.json随便得到了rt字段的类型。一般同学就开始这样写了:1:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论