`
star65225692
  • 浏览: 267592 次
  • 性别: 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控件的效果只是一闪而过,但当数据量大时,这个控件提供的提示功能还是很有用的:)

分享到:
评论

相关推荐

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

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

    Silverlight相册源码

    Silverlight是微软一个跨浏览器、跨客户平台的技术,能够设计、开发和发布有多媒体体验与富交互(RIA)的网络交互程序。 其中利用了一些简单的变化效果。创建了第一个元素,接下来的11个元素基本上是一样的,要修改的...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    silverlight小程序源码(手机模拟)

    就是网络资源共享。 说明:使用VS2008+SQL2005+SL2.0TOOLS开发,目录文件夹data 里面有.SQL文件可以直接创建数据库,将web.config里的pwd=123改成你的就行 滑盖按钮在手机最上方一个白色小方点, 使用linq加wcf...

    SilverLight学习资料

    SilverLight学习资料 Silverlight是一个创建吸引力,许多网络上的屏幕,台式机和移动设备的交互式应用程序的强大的开发平台。

    Silverlight WPF源码收集

    在.NET3.5框架下使用LINQ创建三层Web应用程序教程及源代码 本教程及文章教你如何在ASP.NET 3.0中使用LINQ实现三层Web网站应用程序,这里其实准确的说是多层,分别是:表现层、业务逻辑层、数据访问层、数据库层。...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf 第I部分 语言结构和环境 第1章 visual studio 2010 3 1.1 visual studio 2010:从express到ultimate的各种版本 4 1.2 visual basic的关键字和语法 7 ...

    AddFlow for Silverlight试用版:一款常用的流程图、网络图绘制控件

    AddFlow for Silverlight是一款基于Silverlight平台的,用于创建交互式地流程图和工作流程图的控件,使用控件可以快速地创建工作流程图、数据库关系图、通讯网络图、组织结构图、工艺流程图、状态转换图、电话网络图...

    silverlight制作的手机功能

    4.一个web服务(我实现的是查询学校图书馆) 5.silverlight动画效果(简单的滑盖功能) 6,手机游戏,代码是窃取网上一个拼图的游戏 不足:1.不能动态显示手机的时间(每一秒),虽然在.aspx中网上有很多代码实现了...

    Video.Show视频网站

    它提供一切您需要创建一个网站上载,编码,编目,出版和对视频进行评论,使用的的Windows Live Silverlight的,采用Silverlight流媒体编码器。 Video.Show提供Silverlight 1.0的视频控制,托管一体化的SilverLight ...

    如何用html5 和css3创建兼容就浏览器的作品集

    它希望能够减少浏览器对于需要插件的丰富性网络应用服务(plug-in-based rich internet application,RIA),如Adobe Flash、Microsoft Silverlight,与Oracle JavaFX的需求,并且提供更多能有效增强网络应用的标准集

    Windows Phone 4. 使用消息推送机制

    微软Windows® Phone推送通知服务(PushNotificationService)为第三方开发者提供了一个弹性、专注、可持续的通道,支持发送消息、从服务器(web services)端更新Windows® Phone应用程序。 在这一部分中,一个移动应用...

    SuperSocket服务器应用程序框架-.net

    你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,但是你却可以使用 SuperSocket 很容易的开发出一款 Socket 服务器端软件,例如游戏服务器,GPS 服务器, 工业控制服务和数据采集服务器等等。...

    ComponentOneStudio_2013v1.part04.rar

    该字典具有为错误单词提供建议的功能,并可根据现有词典创建新的主词典(例如,微软Word),并且可忽略或改正所有错误单词,并且具有创建和维护字典的功能。 VSVIEW (包括典型版本) 可对文本进行自动格式化,...

    ComponentOneStudio_2013v1.part03.rar

    该字典具有为错误单词提供建议的功能,并可根据现有词典创建新的主词典(例如,微软Word),并且可忽略或改正所有错误单词,并且具有创建和维护字典的功能。 VSVIEW (包括典型版本) 可对文本进行自动格式化,...

    ComponentOneStudio_2013v1.part07.rar

    该字典具有为错误单词提供建议的功能,并可根据现有词典创建新的主词典(例如,微软Word),并且可忽略或改正所有错误单词,并且具有创建和维护字典的功能。 VSVIEW (包括典型版本) 可对文本进行自动格式化,...

Global site tag (gtag.js) - Google Analytics