Windows Mobile 进阶系列.WCF Mobile(Part 2)
第零回.序和属性
第一回.真的了解.NET CF吗?
第二回.初窥CF类型加载器
第三回.让.NET CF CLR有条不紊
第四回.多窗体应用的性能与编程调试
第五回.WCF Mobile--Part 1
第五回. WCF Mobile(Part 2)
摘要
对于Windows Mobile来说,WCF是一个崭新的概念,在.NET CF v3.5中提供了对WCF的支持,它是桌面WCF(Windows Communication Foundation,也称作Indigo)的一个子集。本文阐述了Compact WCF的功能和模型以及如何使用WCF轻松创建通信程序。
Keywords
Windows Mobile, WCF, .NET CF, Web Service, BasicHttpBinding ,C#
本文是上一篇随笔WCF Mobile的第二部分。本文主要阐述如何使用Compact WCF的HTTP Transport的消息模型在我们的应用程序中进行实际的开发。如果您对WCF for .NET CF还没有概念的话推荐您先看看之前这篇随笔。
WCF for .NET CF-- BasicHttpBinding
上一篇随笔介绍了Compact WCF的一些背景知识,下面我们就通过一个例子来看看WCF For.NET CF的Message工作流程。这个例子采用的是BasicHttpBinding的方式,清晰地展示了该绑定方式下的应答式服务模型。不过非常建议您先看看之前的这两篇随笔作为热身:
Ø WCF for .NET CF快速入门
Ø WCF Mobile(Part 1)
前面已经提到过,BasicHttpBinding的方式还是比较好理解的,因为它跟传统的Web-Service是如此地类似(本质上其实就是调用WebService来实现的)。如图所示:
你的应用程序通过WiFi,有线同步网络或者移动运营商的网络向WCF服务发出一个SOAP消息形式的HTTP请求,并等待服务端的HTTP响应。与Email存储转发的传输方式(见这篇日志)不同的是,BasicHttpBinding这种应答模型使得服务端仅在客户端发送一个请求的条件下才会发送消息,而不会是客户端一旦在线就主动发送,事实上这种方式下服务端也并不关心客户端的任何状态。
好了,现在我们可以开始试着coding了。
打开VS,创建一个的Visual C#工程(我这里是用一个Windows控制台应用的工程),命名为WCFServer。先为项目添加以下引用:
Ø System.ServiceModel.dll
Ø System.XML.dll
Ø System.Runtime.Serialization.dll
(在后面的代码中你将会看到他们的作用)
这个可以XML序列化的类就是我们的消息体对象,为了简便,这里只给它两个字段。
接下来,理所当然的,我们需要一个用来在服务两端对这个消息对象进行序列化/反序列化的工具。于是,我们还得再添加一个新类,命名为XMLSerialHelper。首先添加以下using目录:
Ø using System.Xml.Serialization;
Ø using System.Runtime.Serialization;
然后让我们的XMLSerialHelper继承自XmlObjectSerializer这个抽象类,并对它做一点点扩展。
提示:上面两个类是服务双方(Client&Server)都要用到的,以维护同一类型的消息对象。待会儿您可能要Copy这两个类到你的客户端工程中去。
Ø using System.ServiceModel.Channels;
Ø using System.Runtime.Serialization;
好了,现在来测试一下吧,先让服务端跑起来,再从设备端发送消息。程序运行效果如下:
Windows Mobile 进阶系列.WCF Mobile(Part 2)相关推荐
- Windows Mobile 进阶系列.第一回.真的了解.NET CF吗?
第一回. 真的了解.NET Compact Framework吗? 作为系列文章的开篇,有必要先详细了解一下基于CE.NET的.NET Compact Framework(以后简称.NET CF),本 ...
- Windows Mobile 开发系列文章收藏 - Windows Mobile 6.x
收集整理一些Windows Mobile 6.x开发相关文章, 文章及相关代码大部分搜集自网络,版权属于原作者! 智能手机 手机词汇 研发手机基本流程 WAP协议分析(1) ...
- Dojo mobile TweetView 系列教程之三——Tweets和Mentions视图
Dojo mobile TweetView 系列教程之三--Tweets和Mentions视图 分类: Javascript Dojo扩展 (dojox)2011-05-18 19:13 2211人阅 ...
- 大疆 DJI mobile SDK系列详细教程——运行实例代码(跑通大疆官方提供Mobile SDK里的sample code)
大疆 DJI mobile SDK系列详细教程--运行实例代码(跑通大疆官方提供Mobile SDK里的sample code) 文章目录 一.官方文献与资源地址 二.操作步骤 提示:昨天在尝试跑通大 ...
- windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍
windows程序员进阶系列:<软件调试>之O--- WinDbg使用介绍 拥有一个顺手的武器是每一个武林高手梦寐以求的.对于windows程序员来说,WinDbg调试器就是我们的武器.熟 ...
- WCF4.0进阶系列--第四章 保护企业内部的WCF服务(转)
http://www.cnblogs.com/yang_sy/archive/2011/05/24/2054834.html [摘要] 安全是任何系统至关重要的一个方面,尤其当该系统由分布式的程序和服 ...
- Mobile net系列总结(V1、V2、V3)
一.Mobile Net V1 主要贡献: (1)使用了深度可分离卷积构建轻量级卷积神经网络,由depthwise(DW)和pointwise(PW)两个部分结合起来,用来提取特征feature ma ...
- DotNet进阶系列
一. 回顾历史 回顾个人发展历程,自2012年初次接触开发至今(2018年)已经有六个年头,这期间陆陆续续学习并掌握了不少技术,C#语言.ORM框架.多线程技术.设计模式.前端技术.MVC.MVVM框 ...
- 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇
https://www.cnblogs.com/harlanc/p/9693983.html 目录 OpenSL ES & AudioTrack 源码分析 创建播放器音频输出对象 配置并创建音 ...
- C#进阶系列——WebApi 身份认证解决方案:Basic基础认证
阅读目录 一.为什么需要身份认证 二.Basic基础认证的原理解析 1.常见的认证方式 2.Basic基础认证原理 三.Basic基础认证的代码示例 1.登录过程 2./Home/Index主界面 3 ...
最新文章
- 在centos 下安装配置基于gitosis 的git 服务
- python.re模块
- Google Chrome v48.0.2564.
- Mycat关键特性,什么是MYCAT,MYCAT监控,版本架构,长期规划2.0,Mycat高可用方案
- shell 删除七日内日志_shell日志删除(超容量自动)
- Windows XP系统安装SQL Server 2005(开发版)图解
- 后续的C++测试并不一定会成功
- centos yum出错:Cannot find a valid baseurl for repo
- wgan 不理解 损失函数_[图像盲去噪与GAN]GCBD翻译理解
- ORA-03113: 通信通道的文件结尾 进程 ID: 764 会话 ID: 125 序列号: 5
- pdfjs实现pdf预览
- Android 补间动画之平移动画TranslateAnimation
- 日常水文章之Linux+arm+阿里IOT sdk+Cmake
- 保险初识经验汇总(重疾、医疗、寿险、意外)
- serviceBattery mac换电池 mac怎么换电池mac拆机
- MathType中/英文版下载地址汇总(适用于Mathtype6.9)
- Project Ara 手机,拼装的DIY手机
- JavaScript 数据类型之 Symbol、BigInt
- 美多(web)后台第五天
- c语言换零钱程序,换零钱问题。将一元钱换成1分,2分,或5分的零钱有多少换法。vb编程...
热门文章
- 【图像分割】基于matlab GUI二值化+灰白质医学影像分割【含Matlab源码 184期】
- 【C++】演讲比赛流程管理系统
- python open函数用法_python中open函数的用法详解
- 选择mysql开发的原因_MySQL开发技巧
- python基础:变量与数据类型
- read.table--R语言
- selenium.common.exceptions.WebDriverException:Message: 'chromedriver' executable needs to be in PATH
- leecode---40---数组,dfs---求所有的组合为target,有重复数组
- Angular和Vue.js 深度对比
- Intel DCM 携手DELL共同推出关于DCIM的联合调研