Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务
(由于最近是针对一个demo进行的研究,在之前公开过代码结构,这里只是对需要改动的地方加以说明)
WCF4.0使得编写wcf服务不再那么复杂,去掉了许多的配置信息,客户端只需要一个服务地址,便可在系统生成的代理类下做开发了,在部署时也只需要更改引用配置文件的地址即可。但是今天我尝试silverlight以net.tcp方式连接host到console上的wcf服务时,却颇费周折,一个wcf console server 和一个console client 之间的通信很简单,不需要任何配置,但是silverlight如果想引用这个服务,则必须为服务定义元数据才能供silverlight生成代理类,如果直接用之前的服务,会产生错误。
WCF服务端配置
这个是简单的服务,没有任何配置,本次我是想完全由配置文件来解决信息公开的问题,所以服务端实际上很简单
host = new ServiceHost(typeof(ChatService));
host.Open();
在silverlight引用时会出现找不到元数据的情况,原因是没有公开服务的描述信息,没有元数据无法让外界知道服务的信息,所以经过反复的试验后终于能够正常访问到服务,配置文件有两种情况:
1,如果没有配置基地址,则终结点的地址采用全地址
<services>
<service behaviorConfiguration="Server.ChatServiceBehavior" name="Server.ChatService">
<endpoint address="net.tcp://localhost:4503/ChatService" binding="netTcpBinding" contract="Server.IChatService"></endpoint>
<endpoint address="net.tcp://localhost:4503/ChatService/mex" binding="mexTcpBinding" contract="IMetadataExchange" ></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Server.ChatServiceBehavior">
<serviceMetadata httpGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
2,如果配置了基地址,则终结点的地址采用相对地址
<services>
<service behaviorConfiguration="Server.ChatServiceBehavior" name="Server.ChatService">
<endpoint address="" binding="netTcpBinding" contract="Server.IChatService"></endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" ></endpoint>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:4503/ChatService/"/>
</baseAddresses>
</host>
</service>
</services>
3,其实,也可以通过HTTP获得元数据,如下配置即可
4,一定要注意安全配置这里设置一下,否则默认会有局域网的账户验证什么的。
<netTcpBinding>
<binding name="netTcpBindConfig">
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>
5,行为配置
代码
<serviceBehaviors>
<behavior name="Server.ChatServiceBehavior">
<serviceMetadata />
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
到这里,服务已经通过net.tcp方式建立起来了,静候silverlight客户端的调用了。
silverlight调用
silverlight以tcp方式访问服务器时,只能够访问固定的端口,需要一个策略文件验证,我们只需要将这个策略文件放到IIS下即可。
{
ChatService.ChatServiceClient proxy = new ChatService.ChatServiceClient();
proxy.SendMessageCompleted += (o,ev) => {
string str = string.Empty;
if (ev.Error == null)
{
str = "发送成功";
}
else
{
str = "发送失败";
}
MessageBox.Show(str);
};
proxy.SendMessageAsync(new ChatService.MessageInfo() { Message="hello,leon", UserName="mac", PartnerName="leon"});
}
注意,一定要将策略文件放到IIS下面。
本文转自wengyuli 51CTO博客,原文链接:http://blog.51cto.com/wengyuli/587227,如需转载请自行联系原作者
Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务相关推荐
- Silverlight与WCF之间的通信(5)silverlight应用和wcf服务的发布方法
上一篇博文中有朋友问到关于silverlight程序发布的问题,上一篇写的是silverlight访问host在console上的wcf,其实关于wcf和silverlihgt通信的问题有好几种方式, ...
- Silverlight 应用程序之间在客户端通信
运行在同一台电脑上的多个 Silverlight 应用程序可以通过本地消息进行通信,通信是在客户端进行的,不需要与服务端交互.使用这一功能可以使在同一页面承载的多个 Silverlight 应用程序之 ...
- 【转】利用WCF的双工通信
Silverlight与WCF之间的通信(2)利用WCF的双工通信"推送"给SL数据 作者:Leon Weng 来源:博客园 发布时间:2010-06-19 23:43 阅读 ...
- 【Android 应用开发】Activity生命周期 与 Activity 之间的通信
一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...
- 如何解决服务之间的通信问题?
文章目录 1.如何解决服务之间的通信问题? 2.如何在java代码中发起http方式请求? 3.实现服务间通信的小案例 3.1 使用两个测试服务 用户服务users和订单服务orders 3.2 用户 ...
- 如何在基于 Silverlight 的本地应用程序之间实现通信
http://msdn.microsoft.com/zh-cn/library/dd833075(VS.95).aspx 在两个Silverlight应用间数据通信(包括与Flash通信) 如何在基于 ...
- 一步一步学Silverlight 2系列(23):Silverlight与HTML混合之无窗口模式
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 写在Silverlight 5发布前 - 盘点2010年Silverlight开发书籍
距MIX11还有一个月,Silverlight 5即将到来(了解Silverlight 5新特性),为了方便大家学习Silverlight开发技术,本文汇总了2010年较为流行的Silverlight ...
- Silverlight C# 游戏开发:游戏循环体的五种设计方式
我们在游戏设计和开发中,尤其是引擎开发中,逻辑循环是一个重要组成部分,循环决定了游戏的基础逻辑和运行方式,在不同的开发环境和语言下,对于循环的释义甚至相差甚远,那么我想和大家分享的是在Silverli ...
最新文章
- 【工具】TFT彩屏图片点阵取模工具,Img2Lcd图片取模软件,图片生成c语言头文件...
- TikTok信息流广告怎么做才有效果?我从100个营销短视频中总结了这些方法
- Deeplearnng.AI第四部分第一周、卷积神经网络
- 一元多项式的建立及加减
- python试卷河南理工大学万方科技学院_河南理工大学万方科技学院
- 内置对象和自定义对象的原型链
- Windows下C语言网络编程快速入门
- 前端开发知识点解答-问题-面试问题
- 多元正态分布、多元t分布中的行列式求解 Java
- php生成红包数组,PHP 生成微信红包代码简单
- 3D打印策略:检验CIO领导力的试金石
- Integrity Pro for mac(网站死链接清理)
- CSS 命名 BEM 。线上样式不对。已经更新。El-input__suffix偏上。字体样式 苹方-简 PingFangSC-Regular。echarts字体。
- 40篇英语短文搞定高考3500个单词
- 20211高考成绩查询,青岛理工大学教务系统URP成绩查询、网上选课查分 http://211.64.192.21/,精英高考网...
- 进击的马云,失落的码农
- 分布式-分布式常见问题和解决方案
- 周鸿祎自称3次破解特斯拉云端系统:安全隐患巨大
- 中国制霸生成器火了/ 马斯克香水被炒至原价10倍/ 闽南话翻英语算法来了… 今日更多新鲜事在此...
- Modelsim添加altera仿真库