深圳.net培训
达内深圳罗湖中心

138-2888-3675

热门课程

深圳,net培训:网络通信-结构图

  • 时间:2017-10-09
  • 发布:深圳.net培训
  • 来源:达内新闻

深圳.net培训:网络通信-结构图

WebApi:依据Rest 架构风格,选用Http协议,运用Asp.net 编程模型进行完结,其常见的标准和束缚:

1,URLAPI 运用名称;

2,运用Http行为来表述行为:Get,POST,PUT,Delete;

3,恳求和呼应约好序列化办法,Content-Type,Accept;

4,回来状况码尽能够和http回来状况共同,比方200代表成功,500 代表效劳端反常;

5,无状况可便利扩展;

6,运用HATEOAS束缚,对客户端提供一个URL,呼应中回来你一切资源的URL及行为办法,后续客户端可依据呼应中的链接进行资源拜访,不管效劳端怎么改变,而对客户端而言一直通明,以此降低客户端的保护本钱。

WCF:选用SOAP 协议,是以RPC-XML 标准为依据,运用WSDL 进行描绘和界说,支撑http/s ,TCP,MSMQ 等通讯协议;界说契约,施行开发,客户端集成办法有多种,能够直接引证效劳,能够承继ClientBase,能够经过ChannelFactory 信道工厂创立客户端实例。

当然不管选用办法都是选用客户端署理形式的办法来通明完结,在署理中有许多技巧:比方完结效劳端的负载均衡,比方自界说读取客户端WCF相关的装备文件和其它装备进行解耦便利保护;

WCF内部许多根底施行已然有许多扩展点,对客户端的认证 能够运用 UserNamePassowrdValidator 进行扩展,授权 能够运用  IAuthorizationPolicy 进行扩展并运用CAS(Code Access Securty) 和 特性技能,大局反常点能够对 IErrorHandler  进行扩展,效劳行为 能够对 IServiceBehavior 进行扩展,并且这些扩展代码完结并能依据装备完结;

C#-结构图

数据类型,整体分为值类型和引证类型,值类型包含 int,double,enum,float等,其特色是不变性;引证类型包含:string , class, interface 等,这里边特别阐明的是string 也有不变性,strng a="1" 和 string b="1" 中 a 和 b 是指向同一个引证。

并且 string a="1"+"2"  中心其实生成了暂时的新目标并占用了必定内存,主张运用 StringBulider ; 值类型和引证类型的变换为装箱和拆箱,影响功能,要尽量少的强制类型变换,能够运用泛型进行强类型约好;

调集,List  无序,可重复,线程非安全,存在泛型,复杂度为 O(n)  ; Dictionary  字典,key 不行重复,线程非安全,存在泛型,查找复杂度 O(1);HashTable  字典。

key 不行重复,线程安全,查找复杂度 O(1);  当然还有 Queue,Stack 等 , 一般状况有对应的线程安全调集在前面加Concurrent,如 ConcurrentQueue,ConcurrentDictionary  ;

托付和事情都能够进行内部解耦,回调,播送,仅仅托付愈加灵敏,能够做为函数参数传入,而事情只能在内部调用;当然托付和事情的界说也不同,事情是建立在托付界说之上,更着重的是音讯告诉。

类和接口,多态,封装,承继,是面向目标的根本数据和特性,经过规划形式和规划准则能很明晰的了解面向目标的办法办法;如5大准则:开闭准则,单一准则,依靠倒置准则,里氏替换准则,接口阻隔准则;其界说不再赘述。

并发-结构图

有高并发的开发需求,首先要规划你的硬件、软件架构,那规划的依据是量化的数据,如PV,QPS;还要清楚软件的特性和用什么技能,然后还要经过功能测验进行辅佐,如JMeter , 依据测验工具压测,得出整体效劳的呼应时刻,吞吐量,别的还要对数据进行分析,看是否存在数据紊乱的状况。

缓存,首要是防止数据库IO的瓶颈,而在内存进行处理,当然单机缓存容量有必定限制,能够N台机器互联同享内存,则选用分布式缓存,在高并发状况下,运用缓存有一个思路是相关事务操作及代码完结能够彻底在缓存中操作,有些数据能够先预热到缓存中。

效劳运转的时分能够直接从缓存中读取,那缓存中数据更改后终究要同步到数据库,能够异步+行列的办法进行音讯订阅和发送或许选用轮询守时从缓存中取出数据写入到数据库,在规划过程中分外留意同步失利或出现毛病的状况,要有重试机制;

其实在独立模块,独立效劳中,有些效劳并发并不高,那数据能够直接先写入到数据库中,而后再被缓存起来;最终 依据CAP定律,如果效劳可用,并是容量分区这里是如果选用分布式缓存,最终只能是弱共同性,所以我们规划是处理90%以上的问题(当然如果能处理99.999%的问题更好了),别的10% 能够人工介入加以处理。

限流,高并发状况下必定不能将悉数恳求悉数承受并一次性处理那效劳有被搞溃散的可能,那就能够将部分重复恳求丢掉,能够运用Nginx 的 对客户端IP进行限制,一起高并发下必定有些重要数据资源会存在竞赛,怎么保持数据共同性,运用锁机制,失望锁会严重影响功能。

但不会存在脏读,写错的状况,达观锁,会存在脏读的状况,但能保证数据写入没有问题,一般我们选用分布式锁,运用Redis 的SETNX 特性,Redis 是单线程,存在事务,但事务没有回滚机制,Redis的事务是指令集的办法,如 SETNX 如果不存在Key 值则回来true, 如果已存在Key 值则回来false。

 如果回来false 代表恳求已存在,则恳求被直接丢掉,其实Redis 的 SETNX 和 Membcached 的Add 有点相似,然后运用行列将恳求串行化,到数据库根本拜访不会太高,最终的数据库最少要最好主从形式,防止单一毛病,最好数据冗余。

算法,对恳求进行限流有个很常用的办法,令牌桶,我们先恳求拜访的token, 并注入到一个桶容器中,设置容器的最大token 量,超越的恳求直接丢掉。

当恳求拜访时验证token 是否存在,如存在则正常处理后续事务逻辑并删除token, 不然直接丢掉恳求,以上算法的完结办法能够运用 Redis 中的 SETNX +  Delete  指令完结;

行列,有很对老练的行列音讯中心件,其间RabbitMQ 是较为常用,支撑音讯的耐久化,防止中心效劳DOWN 机后音讯丢掉;支撑ACK机制,当消费者宕机或其它网络原因导致没有收到音讯。

则行列会进行重发音讯,直到消费者承认收到经过BasicAck 指令进行发送则音讯从行列中删除;有限流机制,能够经过内存巨细。

磁盘巨细及上游流量巨细三种办法对恳求进行限流;能够集群,但各效劳器行列进程不相互通讯,所以需求客户端完结分布式,算法能够选用哈希共同性;

安全-结构图

加密,对称加密a=E(key)  , b =D(key)   a 是加密后值,E 是加密算法,key 是密钥,b 是解密后值,D 是解密算法,能够看出加密解密的key 是共同的,同享的,所以只要知道key,两边都能够进行加密解密,存在不安全要素,常用的对称加密算法 DES;

 数字签名,即对内容进行加密的一个字符串(数字摘要),首要是为了保证内容的完整性及身份认证,常用的数字签名的算法MD5;

非对称加密 c=E(key1),d=D(key2)  c 是加密后值,key1 为私钥,E 是加密算法,d 是解密后值,D 是解密算法,key2 为公钥;

能够看出加解密所运用的密钥不同,当然也能够私用私钥解密,公钥加密,两边的家解密的私钥不公开,保证必定安全性,常见的非对称加密算法RSA.

认证,常用的技能是运用Token或数字证书,Token 一般能够认为是数字签名;数字证书能够认为是X.509(是证书的标准标准和解析);X.509 运用的对错对称加密。

客户端依据证书中私钥对特定内容进行加密,然后发送到效劳端,效劳端经过公钥进行解密校验认证;微信公众号开发中触及的微信端和我们效劳端的双向认证是Token,但选用的对称加密.

授权,Net 里边比较常用且标准的形式是RBAC,即依据人物操控授权,具体完结能够是 HttpModule + Attribute  ; HttpModule 是对一切(一般不包含静态资源)恳求(线程)进行权限实例初始化并进行保持该会话,然后在每个需求授权的办法上标示Attribute及权限ID,Attribute 能够对CodeAccessSecurityAttribute进行扩展完结。

SSO,一般我们有這样的需求,比方有多个子体系,我们在一个体系中登陆成功后,其它体系就会同享此登陆状况而不必再进行登陆,或许 我们有一个体系,但是有多端能够运用,比方PC端,App端。

当在一个客户机上登陆成功后,其它端或客户机立刻主动退出防止多端操作,由此我们想到了必定要把一端登陆成功的状况进行保存并能够在多端同享并能大局拜访,拥有此特色的想到了有分布式缓存。

想知道更多关于IT行业的信息吗?想远远不如行动,行动起来,一起加入达内,一起进入IT行业,跟着达内的脚步,一起走进如今的互联网信息时代,带给你不一样的色彩生活——【深圳.net培训

上一篇:.net编程语言的分布式缓存和算法
下一篇:深圳.net培训:Web后端框架-结构图

深圳.NET培训:.Net 内存对象分析

深圳.NET培训:学习.NET最适合做什么?

深圳.NET培训:.NET 的性能怎么样?

什么是重构?

选择城市和中心
贵州省

广西省

海南省