摘要: 微软动态CRM专家罗勇 ,回复307或者20190308可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me 。

本文系根据微软MSDN 博客的博文 Enable WCF Compression to Improve CRM 2011 Network Performance 而写,当时文章是针对Dynamics CRM 2011而写,那么针对Dynamics 365 Customer Engagement适合吗?我这里用我自己的 9.0.2.3034 版本来尝试下。

调用的程序很简单,就是C#写了一个控制台程序,使用组织服务执行FetchXml获取数据,当然我用Fiddler进行了抓包。

设置前用WCF压缩前的第一次抓包数据如下:

Request Count: 1
Bytes Sent: 12,864 (headers:250; body:12,614)
Bytes Received: 11,557 (headers:273; body:11,284)

ACTUAL PERFORMANCE
--------------
ClientConnected: 13:49:12.376
ClientBeginRequest: 13:49:13.035
GotRequestHeaders: 13:49:13.035
ClientDoneRequest: 13:49:13.386
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 0ms
HTTPS Handshake: 0ms
ServerConnected: 13:49:12.768
FiddlerBeginRequest: 13:49:13.387
ServerGotRequest: 13:49:13.388
ServerBeginResponse: 13:49:13.697
GotResponseHeaders: 13:49:13.697
ServerDoneResponse: 13:49:13.697
ClientBeginResponse: 13:49:13.697
ClientDoneResponse: 13:49:13.698

Overall Elapsed: 0:00:00.663

RESPONSE BYTES (by Content-Type)
--------------
application/soap+xml: 11,284
~headers~: 273

设置启用WCF压缩前的第二次抓包数据如下:

Request Count: 1
Bytes Sent: 12,908 (headers:250; body:12,658)
Bytes Received: 11,557 (headers:273; body:11,284)

ACTUAL PERFORMANCE
--------------
ClientConnected: 13:49:47.303
ClientBeginRequest: 13:49:47.752
GotRequestHeaders: 13:49:47.752
ClientDoneRequest: 13:49:48.103
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 0ms
HTTPS Handshake: 0ms
ServerConnected: 13:49:47.497
FiddlerBeginRequest: 13:49:48.104
ServerGotRequest: 13:49:48.105
ServerBeginResponse: 13:49:48.287
GotResponseHeaders: 13:49:48.305
ServerDoneResponse: 13:49:48.305
ClientBeginResponse: 13:49:48.305
ClientDoneResponse: 13:49:48.309

Overall Elapsed: 0:00:00.557

RESPONSE BYTES (by Content-Type)
--------------
application/soap+xml: 11,284
~headers~: 273

然后我用文中介绍的执行命令的方法来更改,以管理员身份打开 cmd ,执行如下命令:

%SYSTEMROOT%/system32/inetsrv/appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/soap+xml; charset=utf-8',enabled='true']" /commit:apphost

再执行下IISRESET命令以便更改生效,再次测试。

设置启用WCF压缩后的第一次抓包数据如下:

Request Count: 1
Bytes Sent: 12,864 (headers:250; body:12,614)
Bytes Received: 1,699 (headers:319; body:1,380)

ACTUAL PERFORMANCE
--------------
ClientConnected: 14:05:21.045
ClientBeginRequest: 14:05:26.227
GotRequestHeaders: 14:05:26.227
ClientDoneRequest: 14:05:26.577
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 0ms
HTTPS Handshake: 0ms
ServerConnected: 14:05:26.009
FiddlerBeginRequest: 14:05:26.577
ServerGotRequest: 14:05:26.578
ServerBeginResponse: 14:05:26.870
GotResponseHeaders: 14:05:26.870
ServerDoneResponse: 14:05:26.870
ClientBeginResponse: 14:05:26.870
ClientDoneResponse: 14:05:26.871

Overall Elapsed: 0:00:00.643

RESPONSE BYTES (by Content-Type)
--------------
application/soap+xml: 1,380
~headers~: 319

设置启用WCF压缩后的第二次抓包数据如下:

Request Count: 1
Bytes Sent: 12,864 (headers:250; body:12,614)
Bytes Received: 1,700 (headers:319; body:1,381)

ACTUAL PERFORMANCE
--------------
ClientConnected: 14:06:46.012
ClientBeginRequest: 14:06:46.474
GotRequestHeaders: 14:06:46.474
ClientDoneRequest: 14:06:46.825
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 0ms
HTTPS Handshake: 0ms
ServerConnected: 14:06:46.208
FiddlerBeginRequest: 14:06:46.825
ServerGotRequest: 14:06:46.826
ServerBeginResponse: 14:06:47.025
GotResponseHeaders: 14:06:47.025
ServerDoneResponse: 14:06:47.025
ClientBeginResponse: 14:06:47.025
ClientDoneResponse: 14:06:47.026

Overall Elapsed: 0:00:00.551

RESPONSE BYTES (by Content-Type)
--------------
application/soap+xml: 1,381
~headers~: 319

可以看到的是,压缩比非常高,启用之前客户端收到的字节数在 11,557左右,启用压缩后收到的字节数是 1,700,只有原来的 14.7%左右,压缩比很高。

再来看下从ServerConnected到ClientDoneResponse的时间,四次分别花了:930ms, 812ms, 862ms, 818ms,  Overall Ellapsed四次分别花了 663ms, 557ms, 643ms,  551ms,有点儿差别,但是不大。

启用了WCF压缩后有个值得注意的地方就是要观察服务器CPU的利用率,因为是动态内容,每次都要压缩。

启用WCF压缩提升Dynamics 365 CE的网络性能的更多相关文章

  1. Dynamics 365 CE Update消息PostOperation阶段Image的尝试

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  2. 使用Dynamics 365 CE Web API查询数据加点料及选项集字段常用查询

    微软动态CRM专家罗勇 ,回复336或者20190516可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 紧接上文:配置Postman通过OAuth 2 implicit ...

  3. Use SQL to Query Data from CDS and Dynamics 365 CE

    from : https://powerobjects.com/2020/05/20/use-sql-to-query-data-from-cds-and-dynamics-365-ce/ Have ...

  4. Dynamics 365 CE中AsyncOperationBase表记录太多,影响系统性能怎么办?

    微软动态CRM专家罗勇 ,回复311或者20190311可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文主要是根据微软官 ...

  5. 安装完成Dynamics 365 CE后别忘了更改维护作业的运行时间

    摘要: 微软动态CRM专家罗勇 ,回复309或者20190308可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 安装完毕Dy ...

  6. Dynamics 365 CE将自定义工作流活动程序集注册到磁盘并引用其他类库

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  7. Dynamics 365 CE中使用FetchXML进行聚合运算

    微软动态CRM专家罗勇 ,回复328或者20190429可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...

  8. Dynamics 365 CE命令栏按钮点击后刷新表单页面方法

    微软动态CRM专家罗勇 ,回复326或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...

  9. 做了面向互联网部署的Dynamics 365 CE更改AD FS的登录页面

    摘要: 微软动态CRM专家罗勇 ,回复306或者20190307可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 默认情况下A ...

随机推荐

  1. 中文转拼音without CJK

    Xamarin写Android程序时,通常要使用按中文首字母分组显示(如通讯录) . 于是需要被迫包含CJK,不过包含后包肯定是会变大的,于是....自己写了一个硬枚举的中文转拼音的类. 原理是这样的 ...

  2. [Swift]LeetCode276. 粉刷栅栏 $ Paint Fence

    There is a fence with n posts, each post can be painted with one of the k colors. You have to paint ...

  3. [Swift]LeetCode830. 较大分组的位置 | Positions of Large Groups

    In a string S of lowercase letters, these letters form consecutive groups of the same character. For ...

  4. Android开发:修改eclipse里的Android虚拟机路径

    一.发现问题: 今天打开电脑发现C盘缩了不少,这才意识到:eclipse里配置的安卓虚拟机默认放在了C盘里. 当然,在不同的电脑上可能路径有所不同,我的默认路径是:C:\Users\lenovo\.a ...

  5. Qt创建分割窗口

    1.QT中QSplitter类可以用来灵活分割窗口,从而产生可用的布局,在以后进行界面布局很有用. 2.先看代码,这个分割窗口按顺序添加子窗口: #include "mainwindow.h ...

  6. Linux查找文件内容

    从当前目录递归查找文件名为 .py 中包含 conf 的文件名: find -name "*.py" | xargs grep "conf"

  7. 【Storm篇】--Storm分组策略

    一.前述 Storm由数源泉spout到bolt时,可以选择分组策略,实现对spout发出的数据的分发.对多个并行度的时候有用. 二.具体原理 1. Shuffle Grouping 随机分组,随机派 ...

  8. “吃人”的那些Java名词:对象、引用、堆、栈

    记得中学的课本上,有一篇名为<狂人日记>课文:那时候根本理解不了鲁迅写这篇文章要表达的中心思想,只觉得满篇的“吃人”令人心情压抑:老师在讲台上慷慨激昂的讲,大多数的同学同我一样,在课本面前 ...

  9. 并发编程(十二)—— Java 线程池 实现原理与源码深度解析 之 submit 方法 (二)

    在上一篇<并发编程(十一)—— Java 线程池 实现原理与源码深度解析(一)>中提到了线程池ThreadPoolExecutor的原理以及它的execute方法.这篇文章是接着上一篇文章 ...

  10. Docker实用技巧之更改软件包源提升构建速度

    一.开篇 地球,中国,成都市,某小区的阳台上,一青年负手而立,闭目沉思,阵阵的凉风吹得他衣衫呼呼的飘.忽然,他抬起头,刹那间,睁开了双眼,好似一到精光射向星空,只见这夜空......一颗星星都没有.他 ...