`
star65225692
  • 浏览: 273387 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

为Silverlight4创建网络服务

 
阅读更多

      右击WEB项目,添加Silverlight-enabled WCF Service,我们把服务名称命名为TestService,我们在此服务中添加方法如下:

    public
 class
 TestService
    {
        [OperationContract]
        public DateTime GetServerTime()

        {

            return DateTime.Now;

        }
 
    }

      现在我们添加服务引用,右击Silverlight项目,添加服务引用,找到刚才建立的TestService,并把新建的引用命名为MyWebServer。注意:应先把WEB项目生成一下,要不然无法正确识别新服务。  当你创建一个服务引用后,VS将为我们创建一个代理类,一个可以与Webservice交互的类,名称是:Service名称+Client。例如我们上面的服务引用将为我们创建一个TestServiceClient类,在这个类中,我们可以使用定制的方法。

      OK,现在我们开始使用新创建的服务。首先在cs中添加名称空间,如下:

using
 SilverlightApplication3.MyWebServer;      //我的应用程序名为SilverlightApplication3

      在Silverlight中,所有的WebServcie必须以异步的方式进行访问,原理是:你Call一个方法,此时你的应用程序可以继续干其他事情, 例如进行界面上的操作,当执行的结果返回后,它将触发一个事件来执行MethodNameCompleted方法,我们的方法就是 GetServerTimeCompleted。代码如下:

public
 MainPage()
        {
            InitializeComponent();
            TestServiceClient proxy = new
 TestServiceClient();
            proxy.GetServerTimeCompleted += new
 EventHandler<GetServerTimeCompletedEventArgs>(proxy_GetServerTimeCompleted);
            proxy.GetServerTimeAsync();   //异步执行。
        }

        void
 proxy_GetServerTimeCompleted(object
 sender, GetServerTimeCompletedEventArgs e)
        {
            try

            {
                label1.Content = e.Result.ToLongTimeString();
            }
            catch
 (Exception err)
            {
                label1.Content = "
获取服务数据失败
"
;
            } 
        }

      默认情况下,服务等待时间是1分钟,即1分钟后如果服务没有相应(服务器当机、或网络不顺畅),方法将会终止,但你可以自己设置相应时间,代码如下:

proxy.InnerChannel.OperationTimeout = TimeSpan.FromSeconds(30
);

      我们再考虑一个问题,现在的WEB服务地址是什么样子,如果是绝对地址,那么我们今后发布程序时就会遇到很大不便,因为这个服务地址是开发时用的绝对地 址,今后在配置到服务器上时,由于IP地址的改变,我们还需修改它。有经验的开发人员这时一定会考虑用相对地址,是的,我们现在做的工作就是这个。修改代 码如下:

EndpointAddress address = new
 EndpointAddress("
http://localhost:
"
 + HtmlPage.Document.DocumentUri.Port + "
/TestService.svc
"
);
TestServiceClient proxy = new
 TestServiceClient();
proxy.Endpoint.Address = address;

      我们看上面的代码第一行,如果Silverlight应用程序和网站在一个服务器中,那么OK,端口号自动获取了。当然,需要加两个名称空间:

using
 System.ServiceModel;
using
 System.Windows.Browser;

      接下来,我们又要考虑一个问题,如果提供Service的服务器很忙,我们如何提供一个友好界面来提示用户“服务器现在忙”,带着问题我们开始下面的工作。

      要实现这个功能,我们需要一个BusyIndicator控件,而这个控件在Toolkit中,如果你还没有安装,那就赶快上下载吧 http://silverlight.codeplex.com,安装好后,在工具栏就可以看见它,把这个控件放到页面的恰当位置,名称属性设为 busy,

<toolkit:BusyIndicator  Name="
busy
"
 VerticalAlignment="
Top
"
 Width="
100
"
 BusyContent="
正在连接服务器...
"
 />

之后在代码中加入下面的代码:

busy.IsBusy = true
; 
proxy.GetServerTimeCompleted += new
 EventHandler<GetServerTimeCompletedEventArgs>(proxy_GetServerTimeCompleted);
proxy.GetServerTimeAsync();
try

{
       label1.Content = e.Result.ToLongTimeString();
}
 catch
 (Exception err)
{
        label1.Content = "
获取服务数据失败
"
;
}
 finally

{
        busy.IsBusy = false
;
}

      由于我们从服务中获取的数据量太小,所以查看效果时,busy控件的效果只是一闪而过,但当数据量大时,这个控件提供的提示功能还是很有用的:)

分享到:
评论

相关推荐

    Silverlight4网络通信

    提到的`Silverlighter.net`是一个致力于推动Silverlight技术发展的社区或者资源平台,它为开发者提供了学习、交流Silverlight网络通信以及其他相关技术的平台。 ### 6. 总结 Silverlight 4的网络通信技术是其强大...

    silverlight4 中文帮助

    5. **离线应用**:通过Out-of-Browser(OOB)功能,Silverlight 4应用可以像桌面应用一样在不连接网络的情况下运行,增加了用户体验和应用的实用性。 6. **设备访问**:Silverlight 4允许访问本地资源,如打印机、...

    Silverlight4网络通信.ppt

    【Silverlight 4 网络通信】 Silverlight 4 是一种由微软开发的富互联网应用程序(RIA)平台,主要用于创建交互式、图形丰富的Web应用。在Silverlight 4中,网络通信是其核心功能之一,它使得开发者能够构建实时、...

    Silverlight 4 RIA开发全程解析(完整版)

    使用《SilverLight 4 RIA开发全程解析》所阐述的在线业务的新特性,您可以创建一个与传统的基于ASP.NET的网站相比响应速度大为提高的Web应用程序。为了了解这些新特性以及改进的Silverlight工具包,我们在每一章中都...

    我的博客中 Silverlight WCF RIA服务 (三)创建一个RIA Services Solution 源代码

    WCF RIA服务则为Silverlight应用程序与服务器端数据提供了便捷的数据通信方式,简化了业务逻辑和服务层的交互。 首先,让我们了解什么是RIA Services Solution。它是一个包含所有必要组件的项目结构,用于搭建基于...

    silverlight4 SDK

    Silverlight 4 是该技术的一个重要版本,它在前代基础上增强了功能,提供了更多的API和控件,为开发者带来了更多开发富互联网应用(RIA)的可能性。 **Silverlight 4 的主要特性:** 1. **增强的浏览器兼容性**:...

    最新 Silverlight 4 文件 资料 PDF 大集合!

    在Silverlight 4版本中,它进一步提升了性能,增强了功能,并且提供了更广泛的企业级支持,使得开发者能够创建出与桌面应用程序相媲美的Web应用。 **核心特性** 1. **增强的UI控件**:Silverlight 4引入了更多内置...

    Silverlight 4 RIA开发全程解析(源文件代码)

    此外,Silverlight 4的多媒体支持也得到了强化,包括高清视频播放、流媒体服务以及音频处理等,为创建丰富的媒体体验提供了可能。同时,它的动画和图形渲染能力也得到提升,利用Storyboards和Path Animation可以创建...

    (14)silverlight网络通信与开发示例

    - **WCF服务调用示例**:创建一个WCF服务,提供一些业务逻辑方法,然后在Silverlight客户端中创建并使用服务代理,调用这些方法,展示数据交换过程。 - **异步数据加载**:实现一个数据网格,通过异步方式从服务器...

    Silverlight 4 商业应用开发

    此外,书中还探讨了Silverlight 4中的离线应用支持,使得商业应用在无网络连接时也能保持一定的功能。 安全性是任何商业应用不可忽视的一环。书中详细讲解了Silverlight的安全模型,包括沙箱机制和如何实现身份验证...

    beginning silverlight 4 in C#

    1. **增强的用户体验**:Silverlight 4提供了更加强大的图形处理能力,包括对视频和音频的支持,使得开发者能够创建更加吸引人的多媒体应用。 2. **离线支持**:通过使用离线缓存机制,Silverlight应用可以在没有...

    Silverlight网络游戏飞行岛2.0源码

    3. **跨域服务**:在压缩包中有一个名为“DYComSLAndFlash跨域服务”的文件夹,这表明游戏可能使用了跨域策略,允许Silverlight应用和不同域名下的服务器进行通信。这对于分布式游戏系统至关重要,因为它允许客户端...

    Silverlight 4 API 文档

    **Silverlight 4 API 文档概述*...通过深入学习这些文档,开发者可以充分利用Silverlight 4的功能,创建出富有创新和用户体验优良的Web应用程序。同时,配合Visual Studio和Expression Blend,开发过程将更加流畅高效。

    Microsoft silverlight 4 从入门到精通 Step by Step 1-4 案例

    首先,Silverlight 4是微软推出的一个强大的RIA(Rich Internet Application)开发工具,它允许开发者创建具有丰富用户体验的交互式Web应用。在这一版本中,Silverlight进一步强化了与.NET Framework的集成,提供了...

    Silverlight 4.rar

    10. **开发者工具**:Visual Studio和Expression Blend的更新版本为Silverlight 4开发提供了更好的支持,包括调试工具、设计视图等,使开发过程更加流畅。 这个“Silverlight 4.rar”文件可能包含的资源,如开发...

    SilverLight 4开发教程

    - **网络通信**:介绍 AJAX、Web 服务调用等网络通信技术。 ##### 4.6 安全与调试 - **安全机制**:探讨沙箱模型和其他安全措施。 - **调试技巧**:利用 Visual Studio 的调试工具解决常见问题。 ##### 4.7 部署与...

    silverlight4富文本控件

    在IT行业中,Silverlight是一种由微软开发的网络应用程序框架,用于构建丰富的交互式用户体验,尤其在多媒体、图形和用户界面方面表现出色。本篇将详细探讨Silverlight 4中的富文本控件——RichNotepad。 ...

    Hello, Silverlight 4

    《Hello, Silverlight 4》是一本专注于Silverlight 4技术的电子书,它为开发者提供了全面深入的指导,帮助他们掌握这一强大的富互联网应用程序(RIA)开发平台。Silverlight是微软推出的一种插件技术,旨在增强Web...

Global site tag (gtag.js) - Google Analytics