silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

转载出处:http://www.cnblogs.com/wengyuli/archive/2010/07/18/1779981.html (由于最近是针对一个demo进行的研究,在之前公开过代码结构,这里只是对需要改动的地方加以说明) WCF4.0使得编写wcf服务不再那么复杂,去掉了许多的配置信息,客户端只需要一个服务地址,便可在系统生成的代理类下做开发了,在部署时也只需要更改引用配置文件的地址

转载出处:http://www.cnblogs.com/wengyuli/archive/2010/07/18/1779981.html

(由于最近是针对一个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,如果没有配置基地址,则终结点的地址采用全地址  
  

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

代码
< system.serviceModel >  
    
services >  
      
service  behaviorConfiguration ="Server.ChatserviceBehavior"  NAME ="Server.Chatservice" >  
        
endpoint  address ="net.tcp://localhost:4503/Chatservice"  binding ="netTcpBinding"  contract ="Server.IChatservice" ></ endpoint ="net.tcp://localhost:4503/Chatservice/mex" ="mexTcpBinding" ="IMetadataExchange"   >         
      
</ service >      
    
behaviors serviceBehaviors behavior  name ="Server.ChatserviceBehavior" >  
          
serviceMetadata  httpGetEnabled ="false" />  
          
serviceDebug  includeExceptionDetailInFaults />  
      
behavior >  

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

 

2,如果配置了基地址,则终结点的地址采用相对地址

 

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

代码 @H_905_197@
="" ="mex" host baseAddresses >  
            
add  baseAddress ="net.tcp://localhost:4503/Chatservice/" >  

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

 

 

3,其实,也可以通过http获得元数据,如下配置即可


 

< endpoint  address ="http://localhost:4503/Chatservice/mex"  binding ="mexhttpBinding"  contract ="IMetadataExchange"   ></ endpoint >  

 

4,一定要注意安全配置这里设置一下,否则认会有局域网的账户验证什么的。

 

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

bindings >  
      
netTcpBinding >  
        
binding  name ="netTcpBindConfig" >  
          
security  @H_791_78@mode ="None" />  
        
</ binding >  
    
>

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

 

 

5,行为配置 

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

代码
     serviceMetadata  >  
  
>

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

 

 

到这里,服务已经通过net.tcp方式建立起来了,静候silverlight客户端的调用了。

silverlight调用

silverlight以tcp方式访问服务器时,只能够访问固定的端口,需要一个策略文件验证,我们只需要将这个策略文件放到IIS下即可。

 

 

 

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

代码
void  MainPage_Loaded( object  sender, routedEventArgs E) 
        { 
            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 = @H_75_62@mac :1.8; color:rgb(128, PartnerName = Leon " }); 
        }

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

 

 

Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务

注意,一定要将策略文件放到IIS下面。

 

代码 http://files.cnblogs.com/wengyuli/WcfTcpSilverlight.rar

@L_944_50@

大佬总结

以上是大佬教程为你收集整理的Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务全部内容,希望文章能够帮你解决Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。