silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

从此节开始,我们要开始WCF通讯了。 本游戏的只是基于WCF最基础的应用,没有WCF深奥的知识,相关的深奥知识请关注专业的WCF系列文章。 我们先来实现一个Silverlight里调用Hellow的尝试: 我们新建一个新的Silverlight应用程序:文件->新建->项目->Silverlight应用程序->Hellow 建立后就一个Hellow应用程序和一个Helow.web的Web应用程序。
@H_944_10@
从此节开始,我们要开始WCF通讯了。

本游戏的只是基于WCF最基础的应用,没有WCF深奥的知识,相关的深奥知识请关注专业的WCF系列文章

我们先来实现一个Silverlight里调用Hellow的尝试:

我们新建一个新的Silverlight应用程序:文件->新建->项目->Silverlight应用程序->Hellow

建立后就一个Hellow应用程序和一个Helow.web的Web应用程序。

 

一:我们将WCF集成在Web应用程序中

我们对着Web应用程序右键-》添加->新建项->WCF服务-》起名:service.svc

回车后,生成Iservice.cs接口和service.svc/service.svc.cs文件

我们看一下自动生成代码

 [serviceContract]
    
public   interface  Iservice
    {
        [OperationContract]
        
void  DoWork();

        [OperationContract]
        
String  SayHello( String  Name); // 这个是我加的
    }

 

看下代码分析:

接口标识:[serviceContract],

接口头顶上多了一个特性,翻译一下就叫“服务契约”,当初刚看WCF的webcast时,一听契约,迷糊了,这名字也扩鬼义了。

方法名标识:[OperationContract]

 

其实就是一些特性,用于微软内部反射的一个标识,看见不同名称干点不同的事。

当然了,除了接口,方法,还有实体类,和成员标识:

实体类契约:[DataContract]--有点神奇的是,我刚发现我的实体类里有一个忘了写这个,竟然也一直成功的运行到现在。

属性:[DataMember]

Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)

     ///   <sumMary>
    
///  游戏玩家
    
///   </sumMary>
    [DataContract]
    
public   class  Player
    {
        
///   <sumMary>
        
///  玩家ID
        
///   </sumMary>
        [DataMember]
        
public  Guid ID
        {
            
get ;
            
set ;
        }
    }

 

OK,现在我们回去实现上面我新加的那个SayHello接口方法,其实就是返回“Hello:加名字“;

Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)

  public   class  service : Iservice
    {
        
public   void  DoWork()
        {

        }

        
#region  Iservice 成员


        
public   String  SayHello( String  Name)
        {
            
return   @H_404_265@" @H_404_265@Hello: @H_404_265@"   +  NAME;
        }

        
#endregion
    }

 

好了,WCF的代码到此就写完了,和webservice差不多吧,既然差不多,那就用和webservice一样,我们到Silverlight应用程序中引用这个WCF。

对着Silverlight的“引用”右键-》添加服务引用-》出来对话框后点"发现(D)":

Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)

点一下那个service。svc,出来看见那个service和Iservice就说明正确了。

接着我们改下命名空间,改成Hellowservice。

确认之后,自动生成service References文件夹及serviceReferences.CLIENtConfig文件

Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)

接下来,我们要开始调用WCF的方法了。

回到Silverlight应用程序的MainPage里,拉入一个TextBox,一个TextBlock,一个button

 

Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)

< Grid x:Name = @H_404_265@" @H_404_265@LayoutRoot @H_404_265@"  BACkground = @H_404_265@" @H_404_265@White @H_404_265@" >
        
< Button Content = @H_404_265@" @H_404_265@WCF 调用 @H_404_265@"  Height = @H_404_265@" @H_404_265@23 @H_404_265@"  HorizontalAlignment = @H_404_265@" @H_404_265@Left @H_404_265@"  Margin = @H_404_265@" @H_404_265@84,111,0 @H_404_265@"  NAME = @H_404_265@" @H_404_265@btnCallWCF @H_404_265@"  VerticalAlignment = @H_404_265@" @H_404_265@Top @H_404_265@"  Width = @H_404_265@" @H_404_265@75 @H_404_265@"  Click = @H_404_265@" @H_404_265@btnCallWCF_Click @H_404_265@"   />
        
< TextBox Height = @H_404_265@" @H_404_265@23 @H_404_265@"  HorizontalAlignment = @H_404_265@" @H_404_265@Left @H_404_265@"  Margin = @H_404_265@" @H_404_265@84,71,0 @H_404_265@"  NAME = @H_404_265@" @H_404_265@txtName @H_404_265@"  VerticalAlignment = @H_404_265@" @H_404_265@Top @H_404_265@"  Width = @H_404_265@" @H_404_265@120 @H_404_265@"   />
        
< TextBlock Height = @H_404_265@" @H_404_265@23 @H_404_265@"  HorizontalAlignment = @H_404_265@" @H_404_265@Left @H_404_265@"  Margin = @H_404_265@" @H_404_265@228,0 @H_404_265@"  NAME = @H_404_265@" @H_404_265@tbMsg @H_404_265@"  text = @H_404_265@" @H_404_265@显示内容 @H_404_265@"  VerticalAlignment = @H_404_265@" @H_404_265@Top @H_404_265@"   />
    
</ Grid >

 

改完几个Name之后,双击Button进去事件。敲入以下代码

@H_127_489@

Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)

private   void  btnCallWCF_Click( object  sender, routedEventArgs E)
        {
            Binding binding 
=   new  BasichttpBinding();
            EndpointAddress endPoint 
=   new  EndpointAddress( @H_404_265@" @H_404_265@http://localhost:12345/service.svc @H_404_265@" );
            Hellowservice.serviceClient client 
=   new  Hellowservice.serviceClient(binding, endPoint);
            client.SayHelloCompleted 
+=   new  EventHandler < Hellowservice.SayHelloCompletedEventArgs > (client_SayHelloCompleted);
            client.SayHelloAsync(txtName.Text);
        }

        
void  client_SayHelloCompleted( object  sender, Hellowservice.SayHelloCompletedEventArgs E)
        {
            tbMsg.Text 
=  e.Result;
        }

 

这里说一下:

第一行:Binding binding =new BasichttpBinding(); --》绑定通讯方式,这里是Basichttp方式,基础的http请求方式。像这一类的方式有N种,10种左右。说明微软的支持是相当的强大的。

第二行:EndpointAddress endPoint = new EndpointAddress("http://localhost:12345/Service.svc");--》指定SVC的路径,要不然找不到路径调用了。这里我们用了固定端口12345。

如果要固定端口,这里需要配置一下Hellow.Web项目的属性

Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)

然后打开serviceReferences.CLIENtConfig,把特定端口号也改成12345。

第三行调用方法完成后的回调事件

第四行,异步调用SayHello方法

说明:所有WCF的方法调用都是异步的,所以总是伴有回调函数

对于WCF,用的最多的就是事件和委托了,这两点不熟悉的大伙子们,要赶紧补补课啦。

一切就绪,F5运行,出来如下窗口:

Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)

输入名称:路过秋天,点击调用,正常回来消息了。

Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)

说明,第一步的WCF调用已经成功了。

 大伙在试的时候要悠着点,不然很容易就出现各种各样的问题

下节我们讲将WCF独立出来一个项目,不放在Hellow.Web上,由于独立出来,所以会用另一个端口,

对于端口不同产生的跨域问题,也顺手解决

这里提供源下载:点击下载

大佬总结

以上是大佬教程为你收集整理的Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)全部内容,希望文章能够帮你解决Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)所遇到的程序开发问题。

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

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