本文利用IIS7的“动态内容压缩”,实现WCF RIA输出的内容压缩后发送到客户端浏览器。测试环境:Win7+IIS7.5;网络监视工具:Fiddler2 (用Firebug也可)。
web端:
[EnableClientAccess()]
public class StringService : DomainService
{
public string GetString()
{
return File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app_data/string.txt"));
}
}
silverlight端:
private void Button_Click(object sender, RoutedEventArgs e)
{
sc.GetString(io =>
{
tbString.Text = io.Value.Length.ToString();
},null);
}
代码很简单,Domain Service的Invoke方法GetString从文本文件string.txt中读取全部文本,输出一个很长的String,由silverlight端获取此字符串。
将应用程序发布到IIS后,运行如图:(注意将应用程序的身份验证方式,只保留匿名验证,其他都禁用)
1、使用Fiddler2截获请求,作为实战前的对照:
可以看出WCF Ria返回的内容类型是:application/msbin1
2、安装“动态内容压缩”:
以win7为例:
3、对appliction/msbin1类型启用压缩:
安装完后,打开inetmgr后发现:
动态内容压缩已经启用:
但这并不代表所有内容类型,都会启用压缩。打开“c:\Windows\System32\inetsrv\config\applicationHost.config”文件,添加如红色下划线的部分:
<add mimeType="application/msbin1" enabled="true" />
重启站点。
4、重新运行应用程序,用Fiddler2观察:
可以看到输出的内容压缩到了原来的1/18,gzip压缩确实很给力。
微软提示:使用动态内容压缩可能会提高cpu的使用率并降低服务器的总体性能。建议在局部范围内使用,具体情况具体分析了。