首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Silverlight中向WCF添加压缩的最简单方法是什么?

在Silverlight中向WCF添加压缩的最简单方法是使用Gzip压缩。以下是一些简单的步骤来实现Gzip压缩:

  1. 首先,确保您的Silverlight项目已经引用了System.ServiceModel.Web和System.IO.Compression命名空间。
  2. 在WCF服务接口中,将操作标记为WebGet,并将ResponseFormat设置为WebMessageFormat.Json。
  3. 在WCF服务实现中,将数据序列化为JSON格式,并使用Gzip压缩。
  4. 在Silverlight客户端中,使用Gzip解压缩从WCF服务接收到的数据。

以下是一个简单的示例代码:

在WCF服务接口中:

代码语言:csharp
复制
[ServiceContract]
public interface IMyService
{
    [OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Json)]
    Stream GetCompressedData();
}

在WCF服务实现中:

代码语言:csharp
复制
public class MyService : IMyService
{
    public Stream GetCompressedData()
    {
        // 将数据序列化为JSON格式
        string jsonData = JsonConvert.SerializeObject(data);

        // 使用Gzip压缩
        byte[] compressedData = Compress(jsonData);

        // 返回压缩后的数据
        WebOperationContext.Current.OutgoingResponse.ContentType = "application/json";
        WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Encoding", "gzip");
        return new MemoryStream(compressedData);
    }

    private byte[] Compress(string data)
    {
        byte[] buffer = Encoding.UTF8.GetBytes(data);
        MemoryStream memoryStream = new MemoryStream();
        using (GZipStream gzipStream = new GZipStream(memoryStream, CompressionMode.Compress, true))
        {
            gzipStream.Write(buffer, 0, buffer.Length);
        }
        return memoryStream.ToArray();
    }
}

在Silverlight客户端中:

代码语言:csharp
复制
private void GetData()
{
    WebClient webClient = new WebClient();
    webClient.OpenReadCompleted += (sender, e) =>
    {
        using (GZipStream gzipStream = new GZipStream(e.Result, CompressionMode.Decompress))
        {
            using (StreamReader streamReader = new StreamReader(gzipStream))
            {
                string jsonData = streamReader.ReadToEnd();
                // 反序列化JSON数据并处理
            }
        }
    };
    webClient.OpenReadAsync(new Uri("http://localhost:8000/MyService/GetCompressedData"));
}

这样,您就可以在Silverlight中向WCF添加压缩的最简单方法了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

silverlight获取外部数据另一种选择:FluorineFx

Silverlight从其它系统获取外部数据常规途径无非下面2种: 1、直接远程加载文本或xml文件 (直接请求ashx/aspx,然后ashx/aspx上输出信息也可以归入这一类) 2、通过wcf...基本上这个配置作用就相当于添加wcf(svc文件)后,系统自动web.config增加配置节点,用于提供一些必要配置信息.   2.3修改web.confighttpModules节点为以下内容...,这里直接指定第2步webApp为承载项目(即相当于webApp项目添加对SliverlightApp引用) silverlight访问FluorineFx关键代码如下: using FluorineFx...所以FluorineFx相对于基于soap协议web service/wcf而言,应该是效率会更高,不过我们也应该看到微软进步:wcf传输数据时,除了xml格式,还可以用json格式甚至直接原始...这是用httpwatchfirefox下测试结果: 如果用原始stream方法封装json数据,返回数据为 ? 如果用系统提供json自动封装,返回数据为 ?

91250

更强悍Silverlight: WCF RIA Services

Service和Web服务都要简单....一个三层架构应用程序,中间层介于表示层和数据层之间,你所写业务逻辑和数据验证都将在中间层出现。...数据存读取和保存全都必须跨越网络,我们就必须使用N-tier架构才能让 Silverlight 顺利存取远程数据,这是一种很好实践,技术层面让开发者遵守现代软件开发最佳实践,但是对于小项目来说并不是一项简单事... Silverlight 3,我们通过WCF 或是ADO.NET Data Service 来实践所需功能,WCF RIA Service 则是完全为了解决这一方面的问题而发展出来相关服务,也是基于...WCF服务,WCF支持各种通讯协议,目前WCF RIA Service只使用HTTP绑定,而且Silverlight 4支持tcp绑定,参见InfoQ Silverlight 4高速通信,对于企业业务系统来说我会选择

871100

Silverlight DataGrid使用WCF RIA Service实现Load-on-demand数据加载

Windows或者ASP.NET Web应用程序,我们经常可以看到Grid控件上通过Load-on-demand方式来提高系统性能,提升用户体验。...-         添加Silverlight enabled WCF Service WebApplciation工程添加一个新Item,选取”Silverlight enabled WCF Service...WCF Service后,会在Web.config文件添加关于Service配置信息: <serviceBehaviors...Load-on-demand数据加载 -         Silverlight工程添加Service引用 如下图通过给Silverlight工程添加Service reference来操作WCF...-         从WCFService获取数据 将WCF Service引入后,IDE会自动生成EmployeeServiceClient类,通过这个代理我们就可以使用Service上方法了。

65650

Silverlight与数据库三种互操作

安装完上述开发组件后,visual studio.net 2008会加入Silverlight项目模板,你可以选择Silverlight Navigation Application 或是 Silverlight...添加新页,而不是User Control,安装了RIA Service后会新增许多Silverlight项目模板,在你做应用开发时候会提供非常方便使用 创建一个普通WCF服务提供Silverlight...1执行SQL(insert ,update, delete),实现与数据库互操作 2执行SQL(select),得到返回dataset后以string类型返回 Silverlight调用WCF...新增功能实现完全参考LINQ to SQL实现方式,惟一不同是必须调用异步方法实现 创建一个Domain Service (RIA-LINK)提供Silverlight应用调用实现互操作 添加一个...调用LINQ查询,不同是不再需要调用异步方法实现这些功能,也不需要引用服务 RIA Serve框架 ? ?

1.4K70

WCF服务上应用protobuf

通过将这些类包含在项目中,可以很轻松调用相关方法来完成业务消息序列化与反序列化工作。...protobufgoogle是一个比较核心基础库,作为分布式运算涉及到大量不同业务消息传递,如何高效简洁表示、操作这些业务消息google这样大规模应用是至关重要。...TCP网络编程这是必须面对问题。tcp网络编程,要反序列化业务消息,就要先知道业务数据大小。而且实际应用可能在一个发送操作,发送多个业务消息,而且每个业务消息大小、类型都不一样。...官方文档也提到,protobuf并不太适合来作大数据处理,当业务消息超过1M时,就应该考虑是否应该用另外替代方案。...一个最小可以工作例子就是protobuf-net提供(client, server),它使用是共享契约方式,通过WCF配置方式,添加一个Endpoint-behavior,引用一个自定义WCF

73460

你应该知道15个Silverlight诀窍

= srv.GetSomeValue(); txtValue.Text = strReturn; 我们可以通过调用WCF服务来解决这个问题(比如在PageInitializeComponent方法之后来调用...优先使用Silverlight模板和主题,微软默认为应用程序提供了4种主题供用户选择。VS2010还可以使用内置导航应用程序模板,Blend4还有一些关于MVVM模板。...无法想象如何直接写出创建故事板或者动画代码,但是Blend却很简单。Blend学习曲线有一些陡峭,但是是完全值得。 ? 7. 优先使用Silverlight Toolkit。...通过积极社区发布产品信息,得到用户反馈,然后为开发者和设计者快速添加新功能。...你可以使用一些外部工具例如7zip,将文件进一步压缩。这些工具还可以打开XAP文件检查项目的内容。 ? 10. 如果并不是所有用户都需要某个文件,该文件不应该打包在XAP文件

82060

针对构架师.NET 3.0介绍

WCF3个关键设计理念是互操作性、生产力和面向服务开发。 微软提供了若干个可以轻易添加和删除消息层通道和服务模型层行为。...最后,从生产力来看,使用WCF来开发安全事务性网络服务,你将获得生产力级别上显著提高。...你甚至可以工作流已经处于运行过程添加和删除活动,这将使你面对改变时候具有巨大灵活性。...Windows SharePoint Services作为Windows Server添加项提供了一个MOSS 2007功能子集。简言之,WSS提供了简单文档管理和工作流能力。...我建议你去看一个WPF应用程序演示,来理解我指下一代用户界面是什么意思。例如,你可以查看一下收藏于不列颠图书馆里面的15大珍贵图书,其中包括了莫扎特和达芬奇手稿。

1.3K60

Silverlight 2 Beta 1学习资源

Using Silverlight 2's DataGrid with WCF + LINQ to SQL: 这个15分钟录像博客示范了如何在服务器上建造一个LINQ to SQL对象模型,然后用WCF...将其发布,然后示范了如何建造一个使用了新Silverlight DataGrid控件Silverlight客户端,该客户端调用WCF服务获取LINQ to SQL数据,将其绑定到DataGrid上。...,绑定到DataGrid,允许用户更新数据行,添加/删除数据行,然后使用 Silverlight 2 Beta1将数据保存到服务器上。...Sorting with Silverlight 2's DataGrid Control: Silverlight 2 Beta1DataGrid控件还没有内置列数据排序支持(将在Beta2提供...在这个贴子里,他展示了如何使用一个定制header列方法来实现排序。也看一下Matt这里贴子,该文提供了一个DataGrid测试页面,展示了目前DataGrid若干特性。

1.1K70

silverlight 《Hands-On-Labs》教程系列

[控件使用和特点上做了介绍] Requirements: This tutorial requires the above installs along with Expression Design...[在这个教程你会看到如何使用多种访问远程数据方法,你将使用除了WCF,web serviceWebClient, Downloader和 WebRequest来获取数据.LINQ to XML和数据绑定都已经...silverlight得到了支持.最后你将有sl中使用ASP.NET Extensions Preview提供ADO.NET Data Services和feed syndication support....你可以使用designer工具去设计界面然后添加事件,设置属性.在后置代码 调用方法.这个控件包可以在你开发项目中就像内置空间一样使用.此外你可以添加属性,方法,事件到你控件来制定更加适应控件...[设个教程你将会看到如何使用css来Silverlight plug-in进行交互.如何建立适应浏览器大小变化Silverlight,如何融合HTML和Silverlight,如何在浏览器和c#访问

87270

Silverlight+WCF 实战-网络象棋最终篇之房间装修-WCF端(二)

在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 佛靠金装,人要衣裳,房间也要加金砖。本篇我们来把房间装修下,让它看起来专业一点!...:房间游戏中状态图片 3:QQ用户头像 图片是从QQ象棋游戏安装程序Copy过来,由于Silverlight只支持png等个别种类图片,所以用ps把图片另存为png格式了。...OK,字段是简单改完了,编绎一下,发现近N个报错了吧,只能一个一个修改了。...2:WCF端:Service.cs代码修改[被注释是原来代码,未注释是修改代码] 方法:EnterRoom ExpandedBlockStart.gif //if (!...端就修改到这就完成了,接下来是Silverlight客户端,要调整代码N多。

42020

web开发web form,mvc,Silverlight比较优缺点

前一段时间Silverlight 2出来时候我们公司就有个家伙用Siverlight做了个项目,吹嘘了一下说开发有多快,用户体验有多好,搞得公司里火了一段时间,后来又有项目组也开始用silverlight...与后台交互虽然比Silverlight要好点,不用异步方法,但只能post,submit还是没有web form事件机制好用。  ...虽然silverlight,asp.net mvc都是asp.net webform后出来技术,但也没有必要就认为Silverlight,MVC就一定比传统asp.net webform就好。...个人建议 如果做业务系统web项目还是web form好,简单快速,做一些多媒体应用Silverlight当然是最好了,MVC可能做大项网站内容管理更合适。 ...当然了,不管什么都是孰能生巧,因为web form最多自然就数量,其他主要还是用少,我想Silverlight还是不错的如果RIA这块到2.0时候可能开发会变得更简单

1.2K40

LightSwitch Sliverlight应用系统开发入门

LightSwitch 开发入门 什么是LightSwitch 简单说LightSwitch就是一个基于模板自动化开发Silverlight应用程序工具,不同于一般基于数据字典,配置生成应用程序工具...LightSwitch 提供简单方法创建面向云和桌面的商业应用程序。...SharePoint和Office 应用程序可以运行在浏览器、脱离浏览器模式(OfB)下或云中 LightSwitch完成很多基础性工作,包括了大量拖拽特性,不过也允许开发人员需要时候访问...设计你查询条件 ? 页面布局把这些控件拖拽到页面上 ? 简单演示就到这里。 后续课程 下面我将准备详细说明如何完成一个具体业务应用系统。...,Screen中加入代码实现逻辑 如何初始化输入值,或计算子段值。

1.3K80

WCF IIS 部署错误处理

做Web接口,原来一直用Web Service,但是.Net 3.5后,Web Service变成了WCF。...代码编写上,把WebMethod特性改成了OperationContract,然后把方法分拆到契约接口和实现方法。然后部署上,不再依赖于IIS,但如果使用IIS,部署反倒麻烦了。...东西,我创建WCF应用是.Net4.5,而转换为Application,使用默认应用程序池,其使用.net框架为2.0。因此2.0无法解析protocolMapping配置节。...网上查找答案,有部署SilverLight遇到类似的问题。但是配置目录权限(给IISUser甚至是匿名用户添加了FullControl权限)后,仍然没有效果。...我创建了一个解决方案,其中包含几个类库以及WCF服务,后来将解决方案目录转换为应用程序,然后浏览,然后找到了服务,点击报错,问题在于WCF服务项目的目录没有被转换,正确是转换WCF服务。

1.3K70

SilverLight企业应用框架设计【五】客户端调用服务端(使用JSON传递数据,自己实现RESTful Web服务)

企业应用框架设计【二】框架画面 SilverLight企业应用框架设计【一】整体说明 在上一节中讲到自动生成服务代理类核心代码,如下 public event ServiceEventHandler...实例化ServiceInvoker类之后就注册了ServiceEventHandler事件 此事件是服务调用完成后触发事件(silverlight 原生ria service也有一个completed...把需要调用服务类名,方法名,返回值类型(如果有参数,这里还会自动加入参数) PrepareInvoke方法如下 public void PrepareInvoke(string ClassName...sb.Append("&"); } ms.Close(); paramStr = sb.ToString(); } 在此方法主要是记录下这些信息...request.BeginGetResponse(new AsyncCallback(ResponseReady), request); }); } 在此事件我们把服务类名方法名和参数写入了请求流

68220

如何使用Microsoft技术栈

可移植类库还允许你不同平台之间共享类库,包括Silverlight。...这个政策现在也没有发生变化;.NET/XAML、C++和JavaScript/HTML5这些技术之间选择首要标准是开发人员熟悉哪种技术。 除此之外,他们还提到了C++,因为它具有性能优势。...指南中并没有提及比较老ASP.NET渲染工具箱——Web表单。虽然该技术依然积极开发,同时从理论上说它也能够渲染设备特定HTML,但是在实践Web表单并没有发挥其真正潜力。...像“快速流畅”、“返璞归真”和“事半功倍”这样设计原则能够通过XAML设计中使用现代UI、谨慎地使用动画以及广泛地实现.NET异步编程这些方法应用到已有的桌面应用程序。...为了“解耦”这些依赖,他们建议从构造函数移除这些依赖,然后使用控制反转容器进行注入。 Microsoft还提到应使用面向切面的编程添加一些其他间接层,并且进一步注入依赖。

1.3K60

WCF后续之旅(1): WCF是如何通过Binding进行通信

如果说《我WCF之旅》主要是对WCF基本原理概括性介绍,而对于这个新系列,我将和大家分享我对WCF一些实现机制、设计原理理解,以及我实际项目开发一些实践经验(比如在后续一些文章,我将介绍通过...WCF Extension实现一些真正分布式项目开发很有现实意义功能)。...Extension对WCF进行自由扩展以适应我们具体需求, 本系列后续文章我将大家介绍一系列有用扩展。...不管Channel具体完成怎样功能,他们都可以看成是一个个Message处理器,这包括为了某种需求添加、修改Soap header;压缩整个Message、或者Message body; 对Message...对于方法来将,channel创建方式和简单,也很直接,就是单纯创建Channel并使用它接受方发送消息,并接受恢复(如果不是Datagram  channel shape),说发送方Channel

877100

最好.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

项目开发,除了对数据展示更多就是对文件相关操作,例如文件创建和删除,以及文件压缩和解压。...至于文件压缩原理,另一篇博客中有简单介绍,在这里就不再做介绍,需要了解可以查看。    ...4.修改现有归档WPF程序 - 重命名条目,从归档删除条目或归档添加新条目。   5.一个Windows窗体应用程序,用于为归档内容隐私创建AES加密zip存档。   ...一下主要介绍一些类和方法,没有完全介绍,首先是由于篇幅所限,其实是完全没有必要,因为对于开发者而言,没有必要全部了解这些类,实际开发,可以根据API进行对应方法调用,这些技能应该是一个开发人员应该具备...ZIP解压流对象: /// /// 得到指定字节数组ZIP解压流对象 /// 当前方法仅适用于只有一个压缩文件压缩包,即方法内只取压缩第一个压缩文件

3.1K70

微软大力支持开放数据协议(OData)

文章还提到了微软开放数据协议OData上应用,也提到了google采用Google数据交换协议:GData (Google Data APIs Protocol),微软Azure平台上引入了开发代号名为...微软另一项技术里头WCF Data Service,之前叫做ADO.NET Data Service也使用是OData协议。...如果你使用Visual Studio 2010里头使用WCF Data Service,你还可以下载Open Data Protocol Visualizer查看服务返回数据,Open Data Protocol...开放数据协议(OData)微软平台上占据了一个比较重要位置,WCF是过于底层技术,RIA开发面向数据驱动应用程序(EF访问数据,WCF直接暴露实体和实体操作方法),直接使用WCF技术或多或少会遇到不适应情况...还有更强悍Silverlight: WCF RIA Services,OData我们开发中使用将越来越多。

1.3K90
领券