MCTS 70-571考试总结

void StartSuperWebSocketByConfig()
      {
          var serverConfig =
ConfigurationManager.GetSection(“socketServer”) as
SocketServiceConfig;
          if (!SocketServerManager.Initialize(serverConfig))
              return;

  
 今天失去参加MCTS 70-571的试验了,过程有点波折,结果还行,考了978细分,不管怎样,通过就哼。

     function connectSocketServer() {
         var messageBoard = $(‘#messageBoard’);

下午某些千古晚,就一直上机考试了。考试应该是在线的,等担当布置考试的丁将机器准备好后,就从头答题了。考试说明和课题都是英文的,一共发生41道选择题(除了同鸣双取舍客,其余都是单选),考试时间约是80分钟(时间肯定是十足的,所以不要太在一齐)。因为时间足够用,所以耐着性子,仔仔细细的看题和各国选项,然后选择答案。大概看了一晃,平均等效道题花30秒左右。半独小时基本就是报完所有的题了,又相继Review了一样整整,虽然尚无召开修改,但管持有的答案都认同了平等全,心里有个底。这个考试及其余部分试验不同,命题直截了当,就考相关知识点,而不会见以题面上拐弯抹角。提交终止考试结果就是打印出来了,出来签字画押后便OK了。

图片 1

自然打算上午试的,到那边报名时为报告上午有人考试,下午1点后才会考查。又于自家基本上忐忑了几乎独小时。哈哈。跟那边的总人口咨询关于考试的图景,一概说非晓得。最操心之虽是即刻,不明白怎么考,不清楚考什么。

Web
应用之音讯交互过程一般是客户端通过浏览器发出一个请,服务器端接收及核对完请求后拓展拍卖并回到结果为客户端,然后客户端浏览器将信息呈现出,这种体制对于信息变更不是特别累之行使尚能相安无事,但是于那些实时要求比较强之运来说,比如说在线娱乐、在线证券、设备监察、新闻在线播报、RSS
订阅推送等等,当客户端浏览器准备见这些消息的早晚,这些信息于服务器端可能就过时了。所以保持客户端和劳动器端的信息并是实时
Web 应用的要因素,对 Web 开发人员来说也是一个难题。在 WebSocket
规范出来前,开发人员想实现这些实时的 Web
应用,不得不动用部分投降的方案,其中最为常用之就是是轮询 (Polling) 和 Comet
技术,而 Comet
技术其实是轮询技术的改进,又只是划分为零星种实现方式,一栽是丰富轮询机制,一栽名叫流技术。下面我们大概介绍一下立刻几乎种技术:

简单总结一下试题的始末,主要集中在BSP移植、驱动开发、系统定制、系统调试、系统性能测试几独面,有关电源管理试验了好几志题,应该算是重点。如果这些内容平时都召开了,通过试验应该不困难。不过若是拿满分,就未轻了。考试涉及的知识点很多,一般大少克一切碰到。我考时便遇上了千篇一律鸣没有接触了之开,关于压力测试的。以前从未有过干了,用排除法,二精选同,结果错了,运气实在够不好之!所以,关于Windows Embedded CE,还有无限多的内容要错过读书,Come On…

浏览器支持

Host: server.example.com

立即是最早的同一种实现实时 Web
应用的方案。客户端以得之工夫间隔为服务端发出请求,以数呼吁的主意来保持客户端以及劳务器端的一道。这种联合方案的极其充分题材是,在一些数目更新比较累之使里,页面的数量而惦记获得最新的结果待再次刷新页面,但如此见面生出大量底冗余数据以服务器和客户端传输,另外由于页面是联名处理的,所以于页面加载了前是无可知持续操作的。当客户端以稳频率为服务器发起呼吁的上,服务器端的数或许并不曾更新,这样见面带动诸多无谓的大网传输,所以就是平等栽特别低效的实时方案。

于Global.asax文件里看StartSuperWebSocketByConfig:

在实际的支出过程遭到,为了用 WebSocket 接口构建 Web
应用,我们先是要构建一个落实了 WebSocket
规范的服务器,服务器端的兑现无给平台和开支语言的限,只待遵循
WebSocket 规范即可,目前曾经出现了一些比成熟之 WebSocket
服务器端实现,比如:

          var socketServer =
SocketServerManager.GetServerByName(“SuperWebSocket”) as
WebSocketServer;
          var secureSocketServer =
SocketServerManager.GetServerByName(“SecureSuperWebSocket”) as
WebSocketServer;

         // when data is comming from the server, this metod is called
         wss.onmessage = function (evt) {
             messageBoard.append(“# ” + evt.data + “<br />”);
             scrollToBottom(messageBoard);
         };

         // when the connection is closed, this method is called
         wss.onclose = function () {
             messageBoard.append(‘* Secure Connection
closed<br/>’);
         }
     }

客户端握手的指引行遵从(HTTP)Request-Line格式,服务器发之引行遵从(HTTP)Status-Line格式。在有限栽情景下,引导实践后跟着一组未排序的头域。额外的头域也可能出现,如cookie。头的格式和分析在RFC2616定义。

下面是主流浏览器对 HTML5 WebSocket 的支撑情况:

          if (!SocketServerManager.Start())
              SocketServerManager.Stop();
      }

客户端的实现相对于劳动器端的兑现的话要简明得几近了,我们仅需要表达想象去设计
HTML 用户界面,然后调用 WebSocket JavaScript 接口来跟 WebSocket
服务器端来互就可了。当然别忘了用一个支撑 HTML5 和 WebSocket
的浏览器。

         // when the connection is established, this method is called
         ws.onopen = function () {
             messageBoard.append(‘* Connection open<br/>’);
         };

     function scrollToBottom(target) {
         target.animate({ scrollTop: target[0].scrollHeight });
     }

当页面初次加载的时段,首先会检测时底浏览器是否支持 WebSocket
并吃起相应的提示信息。页面会初始化一个到聊天服务器的 WebSocekt
连接,初始化成功以后,页面会加载对应之 WebSocket 事件处理函数,客户端
JavaScript 代码如下所示:

HTML5 WebSocket 设计下的目的就是如果代表轮询和 Comet
技术,使客户端浏览器具备诸如 C/S 架构下桌面系统的实时报道能力。 浏览器通过
JavaScript 向服务器发建立 WebSocket
连接的伸手,连接起之后,客户端以及劳务器端就得经 TCP
连接直接交换数据。因为 WebSocket 连接本质上虽是一个 TCP
连接,所以当数码传的泰和数目传输量的深浅方面,和轮询以及 Comet
技术于,具有老非常之习性优势。Websocket.org
网站对传统的轮询方式同 WebSocket
调用方式作了一个详尽的测试和比较,将一个简单易行的 Web 应用分别用轮询方式同
WebSocket
方式来落实,在此间引用一下他们的测试结果图(http://www.websocket.org/quantum.html
):

Connection: Upgrade

HTTP/1.1 101 Switching Protocols

<script type=”text/javascript”>
     var noSupportMessage = “Your browser cannot support WebSocket!”;
     var ws;

SuperWebSocket是基于.NET开源Socket框架SuperSocket支付之,
SuperSocket所支持的大部职能在SuperWebSocket饱受获取了持续。用户可经过SuperWebSocket来飞的构建可靠的,高性能的websocket服务器端应用程序。和SuperSocket一样,SuperWebSocket可以控制台和windows服务的款型运行,同时她还支持直接运行在Website之内,这样又简化了用户之部署。

     function resizeFrame() {
         var h = $(window).height();
         var w = $(window).width();
         //Adapt screen height
         $(‘#messageBoard’).css(“height”, (h – 80 – 50 – 100) +
“px”);
         $(‘#messageBoxCell’).css(“width”, (w – 100) + “px”);
         $(‘#messageBox’).css(“width”, (w – 110) + “px”);
     }

          socketServer.NewMessageReceived += new
SessionEventHandler<WebSocketSession,
string>(socketServer_NewMessageReceived);
          socketServer.NewSessionConnected += new
SessionEventHandler<WebSocketSession>(socketServer_NewSessionConnected);
          socketServer.SessionClosed += new
SessionEventHandler<WebSocketSession,
CloseReason>(socketServer_SessionClosed);

横流技术方案便就是在客户端的页面使用一个藏身的窗口往服务端发出一个增长连的要。服务器端接到这个请后作出回复并不断更新连接状态为担保客户端以及劳务器端的连接不超时。通过这种体制得以拿劳动器端的信源源不断地力促客户端。这种机制以用户体验上有好几题材,需要对不同之浏览器设计不同的方案来改进用户体验,同时这种机制以出现比较坏的情事下,对服务器端的资源是一个宏大的考验。

WebSocket协议计划用来替使用HTTP作为传输层的双向通信技术,并从现有的底蕴设备(代理、过滤器、认证)受益。这些技巧作为效率及可靠性的抵要落实,因为HTTP最初并无是用来双向通信的。WebSocket尝试解决在现有HTTP基础设备的环境下现有HTTP双向通信技术之目标;像这么,它计划来工作为HTTP
80、443端口及,并支持HTTP代理和中间设备,即使这意味多现有条件的片段复杂。

以及SuperSocket一样,SuperWebSocket可以控制台和windows服务之款型运行,同时她还支持直接运行于Website之内,这样又简化了用户的配置。

流:

下一场,设计并没有拿WebSocket局限为HTTP,未来底落实可以一定的端口上使用更简单的拉手,而休需还发明整个协议。最后点是根本的,因为交互式消息之传输模式并无严谨符合标准的HTTP传输,会于片构件上滋生大的载荷。

Origin: http://example.com

SuperWebSocket是基于.NET开源Socket框架SuperSocket支出之,
SuperSocket所支撑之多数效果以SuperWebSocket面临收获了连续。用户可透过SuperWebSocket来迅速的构建可靠的,高性能的websocket服务器端应用程序。

参照文章:

客户端有之拉手信息:

Upgrade: websocket

长轮询:

Connection: Upgrade

NancyFx combined with WebSocket server in one
executable

         if (support == null) {
             alert(noSupportMessage);
             messageBoard.append(“* ” + noSupportMessage +
“<br/>”);
             return;
         }

         // when the connection is closed, this method is called
         ws.onclose = function () {
             messageBoard.append(‘* Connection closed<br/>’);
         }

如客户端和服务器都发送了他们的拉手,如果握手成功,传输数据部分开始。

服务器端返回的握手信息:

         // when data is comming from the server, this metod is called
         ws.onmessage = function (evt) {
             messageBoard.append(“# ” + evt.data + “<br />”);
             scrollToBottom(messageBoard);
         };

         //setup secure websocket
         var wss = new window[support](‘wss://<%= Request.Url.Host
%>:<%= SecureWebSocketPort %>/sample’);

添加轮询是对定时轮询的改进和提高,目地是为着降低无效的纱传输。当服务器端没有数据更新的时光,连接会保持一段时间周期直到数据还是状态改变还是时间过,通过这种体制来减少无效的客户端与服务器间的相互。当然,如果服务端的数量变动好累之言语,这种体制与定时轮询比较起来没精神上之性的提高。

图片 2

          secureSocketServer.NewSessionConnected += new
SessionEventHandler<WebSocketSession>(secureSocketServer_NewSessionConnected);
          secureSocketServer.SessionClosed += new
SessionEventHandler<WebSocketSession,
CloseReason>(secureSocketServer_SessionClosed);

Sec-WebSocket-Version: 13

出三只事件(CommandHandler, NewSessionConnected,
SessionClosed),在每个会话到达的上,将创新的处理程序来拍卖。

通过这张图可以领略的顾,在流量及负载增大的场面下,WebSocket
方案相比传统的 Ajax 轮询方案有庞的性优势。这吗是干什么我们以为
WebSocket 是鹏程实时 Web 应用之首选方案的由。

GET /chat HTTP/1.1

轮询:

     $(document).keypress(function (e) {
         if (e.ctrlKey && e.which == 13 || e.which == 10) {
             $(“#btnSend”).click();
             document.body.focus();
         } else if (e.shiftKey && e.which == 13 || e.which == 10) {
             $(“#btnSend”).click();
             document.body.focus();
         }
     })

          Application[“WebSocketPort”] = socketServer.Config.Port;
          Application[“SecureWebSocketPort”] =
secureSocketServer.Config.Port;

     jQuery.event.add(window, “resize”, resizeFrame);

  • Kaazing WebSocket Gateway — 一个 Java 实现的 WebSocket Server
  • mod_pywebsocket — 一个 Python 实现的 WebSocket Server
  • Netty —一个 Java 实现的网框架中囊括了针对性 WebSocket 的支撑
  • node.js —一个 Server 端的 JavaScript 框架提供了对 WebSocket 的支持
  • SuperWebSocket –一个.NET/Mono 实现之WebSocket Server(本文的主角)

自SuperWebSocket 下充斥最新的0.6版的代码
http://superwebsocket.codeplex.com/releases/view/86249。代码中涵盖了一个简约的扯淡示例:

Sec-WebSocket-Protocol: chat, superchat

         // when the connection is established, this method is called
         wss.onopen = function () {
             messageBoard.append(‘* Secure Connection
open<br/>’);
         };

         messageBoard.append(“* Connecting to server ..<br/>”);
         // create a new websocket and connect
         ws = new window[support](‘ws://<%= Request.Url.Host
%>:<%= WebSocketPort %>/sample’);

WebSockets, WCF & Silverlight
5

     function sendMessage() {
         if (ws) {
             var messageBox = document.getElementById(‘messageBox’);
             ws.send(messageBox.value);
             messageBox.value = “”;
         } else {
             alert(noSupportMessage);
         }
     }

     window.onload = function () {
         resizeFrame();
         connectSocketServer();
     }
</script>

概括这几乎栽方案,您会意识这些时我们所下的所谓的实时技术并无是真的实时技术,它们只是当为此
Ajax 方式来学实时的力量,在每次客户端与劳务器端交互的时光都是一模一样涂鸦 HTTP
的请与应对的经过,而各个一样不成的 HTTP 请求与应都含完整的 HTTP
头信息,这便增了历次传输的数据量,而且这些方案被客户端和劳动器端的编程实现都比较复杂,在实际的施用被,为了模仿比较实际的实时效果,开发人员往往得组织简单单
HTTP
连接来模拟客户端和服务器之间的双向通讯,一个接连用来拍卖客户端到服务器端的数码传,一个连续用来拍卖服务器端到客户端的多少传,这不可避免地添了编程实现的复杂度,也增了劳务器端的负荷,制约了使用系统的扩展性。

Upgrade: websocket

Sec-WebSocket-Protocol: chat

脚我们来详细介绍一下 WebSocket 规范,WebSocket
协议来星星点点局部:握手及数据传。

Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

轮询和 WebSocket 实现方式的大网负载对比图

WebSocket 协议本质上是一个冲 TCP 的协议。为了建立一个 WebSocket
连接,客户端浏览器首先使朝着服务器发起一个 HTTP 请求,这个要和一般性的
HTTP 请求例外,包含了有的附加头信息,其中附加头信息”Upgrade:
WebSocket”
表明这是一个申请协议升级之 HTTP
请求,服务器端解析这些附加的条信息然后来对信息返回给客户端,客户端与服务器端的
WebSocket
连接就确立起了,双方就得经者连续通道自由的传递信息,并且这连续会没完没了有直到客户端还是服务器端的某部平等着主动的闭馆连接。

Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

         var support = “MozWebSocket” in window ? ‘MozWebSocket’ :
(“WebSocket” in window ? ‘WebSocket’ : null);

浏览器

支持情况

Chrome

Supported in version 4+

Firefox

Supported in version 4+

Internet Explorer

Supported in version 10+

Opera

Supported in version 10+

Safari

Supported in version 5+

本文介绍了 WebSocket 规范与 WebSocket
接口,以及与民俗的实时技术对比在性能及之优势,并且演示了哪些利用
WebSocket 构建一个实时的 Web 应用,最后咱们介绍了手上之主流浏览器对
HTML5 的支持情况。微软呢众所周知发表了前途本着 HTML5
的支撑,而且这些支持我们好于 Windows 8 和 IE10
里看,我们呢以各种活动装备,平板计算机上看出了 HTML5 和 WebSocket
的身形。WebSocket 将会晤成为未来付出实时 Web
应用之生力军应该是决不悬念的了,作为 Web 开发人员,关注 HTML5,关注
WebSocket。

web.config中配置文件证明参考 SuperSocket系列文档(2)
SuperSocket的核心配备。