LightSwitch在VS2013上的出色表现

[原文发表地址]LightSwitch Performance Win in Visual Studio 2013

[原文发表时间]2013-10-09

伴随着Visual Studio 2013 RC的发布,对于HTML客户端和服务器交互时所占用的带宽,我们LightSwitch Team也做了一些改善。一起来看看我们所做的,以及怎么样才能使lightSwitch应用的开发者和用户都获益。

一个不可取的开放式数据协议形式

LightSwitch 用一种基于REST的协议——ODATA来进行客户端和服务器的交互。ODATA可以通过一些不同的方式被格式化。这些当中一个比一个冗余,但是对于我们来说幸运的是微软的ODATA团队最近正致力于寻找方法使得ODATA没那么冗余。

之前发布的LightSwitch HTML客户端使用的是一种称为JSON Verbose的ODATA形式。正如它的名字暗示的一样,这种形式占用不少带宽。

伴随着Visual Studio 2013 RC的发布,LightSwitch现在正在使用一种叫做JSON Light的形式。正如你所猜测的,这种形式占用相当少的带宽。

现在来看看带宽的使用情况,我们得到的结论是仅仅使用了更少的带宽。

节约带宽

最简单的证明方法就是创建一个简单的LightSwitch 应用数据,添加数据到数据库,创建一个简单的界面,然后“启动”我们的APP。我们可以接着使用IE浏览器F12调试工具看一下HTTP请求和响应的带宽大小。

我将演示下制作一个简单的LightSwitch工程。如果你对如何制作LightSwitch工程不熟悉,请查看一个非常简短的教程在我们的教程开发中心

我同时还制作了一个简单的动画图片展示这些设计阶段的步骤。

登陆Visual Studio然后导航到文件–>创建新项目然后选择一个LightSwitch HTML 应用(LightSwitch 桌面应用使用一个silverlight客户端,它已经从Visual Studio 2012 Updata2开始一直使用Json light 形式)。

当你做完这些以后,接着去点击“添加外部数据库”。我们添加一些已经在数据库里有的数据。(添加的是Northwind ODATA Service)。但是假如你没有可用的有数据的数据库,你可以添加Northwind ODATA Service)。选择你想要导入的表然后点击“完成”

我们需要一些方式去展示数据,那么我们创建一个简单的界面来放数据库里的表。

右击LightSwitch HTML 工程,然后点击“添加界面”

选择“浏览数据界面”模版,然后为你知道有数据的表选择界面(我使用的是Customers表)。

现在我们可以启动我们的app然后使用IE浏览器F12的开发工具去看看特定的HTTP请求。

你可以参照这张动态图上的步骤:

1. 按F5去登陆LightSwitch HTML app

2. 当IE打开之后,按F12去打开这个开发工具

3. 选择“网络”选项卡然后点击“开始捕捉”按钮。这会开始“录制”所有的HTTP 流量。

4. 现在“刷新”你的浏览器。你应该会看到一些HTTP请求出现。等浏览器停止刷新之后,选列表当中最后一个HTTP请求(它应该是最后的或者靠近最后的)它会看起来像这个:

/DBData.svc/MyCustomers?$top=45 GET 200 application/json 12.60 KB 0.56

我之所以选择这个请求,是因为它的实际请求是来自服务器并且返回到客户端。所以这个请求,和其他任何类似的HTTP GET/READ请求,就是我们将看到的使用新的JSON Light 格式HTML 客户端。

在英语中,这请求显示的是我请求实体的前45条记录,然后这个请求以JSON格式的来响应。但是最重要的是,这个响应的大小是12.60KB而且它消耗0.56秒。

为了确定我们使用JSON Light格式,我们可以深入得更多一点。只需双击请求,选择响应头选项卡,并且查看Content-Type标头

这个表明的是HTTP响应以一种名叫minimalmetadata 的JSON 格式返回“minimalmetadata”(JSON Light的另外一个名字)。

(这个F12开发工具是相当有力的,假如你愿意的话绝对鼓励你去多看一点- IE F12 Developer Tools

很好,但是怎么对比这个和上一个发布的版本呢?

我走了一遍相同的步骤在我们早一些版本的产品上(我使用VS2012 Update2)因此我们可以对比数据,记住前面发布的版本使用的是JSON Verbose。

这是以前发布版本的请求的显示:

/DBData.svc/MyCustomers?$top=45&$inlinecount=allpages GET 200 application/json 31.10 KB 0.71 s

这个请求表明的是,我们再一次从我们的实体得到前45条记录,并且它返回一个JSON格式的响应。这个响应大小是31.10KB,而且需要消耗0.71秒。

我们可以把它分为下面这个样子:

Visual Studio 2012

客户实体请求响应大小

31.10 KB

客户实体请求响应时间

0.71 seconds

结论 – 更少的带宽,更快的处理时间

更少的带宽意味着很多,但是正如我们在这里所看到的,我们拥有更快的处理时间在HTML 客户端和服务器。这也是非常有利于托管你的网站在Azure上。更少的带宽意味着你会花费很少去拥有它。结论 - 更快的加载时间+更便宜的网站托管 = 胜利。

最后一个很重要的点,假如你是一个VS2012的用户,而且你也希望可以在你的HTML 客户端中使用新的JSON Light格式,那么读读this article from Huy Nguyen关于你怎样可以使得一个简单的NuGet包来更新

希望我们在减少带宽方面的投入可以给你和你正在做的LightSwitch apps带来帮助,假如你有任何问题、建议或者反馈的话,请分享到LightSwitch forum

Matt Sampson:

Matt在Visual Studio LightSwitch team里是一个高级SDET,并且在这里已经持续工作了好几年。他还有his own blog来写一些关于LightSwich的事情。 你可以在Twitter上找见他,如果你发关于Visual Studio的推文, 或者在推特上搜索Anime shows。