• 在Silverlight中访问Web服务 为 Silverlight 客户端生成服务


    Silverlight 应用程序常常需要访问后端服务器上的某些数据或功能。例如,如果您正在写入客户管理应用程序,该服务器可能包含您的 Silverlight 应用程序需要检索的客户数据库。如果您正在写入游戏,该服务器可能包含您的 Silverlight 应用程序需要更新的高分数信息。在很多情况下,让 Silverlight 能够使用服务器上的功能的最好方法是创建 Web 服务

    将启用 Silverlight 的 WCF 服务添加到现有网站或 Web 应用程序

    1. "文件"菜单中依次选择"新建""项目",然后从"项目类型"中选择 Silverlight,再从"安装了 Visual Studio 的模板"中选择"Silverlight 应用程序"。接受默认"名称"SilverlightApplicaton1,然后单击"确定"

    2. 在弹出的"新建 Silverlight 应用程序"向导中,接受已选中的默认选项"在新网站中承载 Silverlight 应用程序"。接受"新建 Web 项目名称"的默认值 SilverlightApplication1.Web,并接受默认的"ASP.NET Web 应用程序项目"作为"新建 Web 项目类型"。然后单击"确定"

    3. 若要将启用 Silverlight 的 Windows Communication Foundation (WCF) 服务添加到生成的默认 Web 应用程序中,请右击"解决方案资源管理器"中的 SilverlightApplication1.Web 项目,并选择"添加",然后选择"新建项"打开"添加新项"窗口。在左侧的"已安装的模板"窗格中,从相关语言组(Visual C#Visual Basic)中选择"Silverlight",然后从中央窗格中选择"启用了 Silverlight 的 WCF 服务"模板。在底部附近的"名称"框中将服务名称更改为 CustomerService.svc,然后单击该框右侧的"添加"按钮。

    4. 若要定义和实现 CustomerService 协定,请使用希望服务支持的操作替换 CustomerService 类中的 DoWork 方法(已在 CustomerService.svc.cs 文件中定义)。在此示例中,我们将添加两项操作以支持 Silverlight 客户端检索数据库中的用户数量以及每个用户的信息。

    5. 服务中使用的类型需要遵守称为数据协定的特定规则。创建有效类型的最简单方法是确保它是公用的,具有公共成员,并且具有不需要任何参数的公共构造函数。全部公开即隐式定义了此类型的数据协定。例如,可以按如下方式实现 GetUser 操作中的 User 类型(在 SilverlightApplication1.Web 命名空间中,CustomerService 类后面)。

    6. 若要在 Visual Studio 中测试服务实现,请选择"解决方案资源管理器"中的 CustomerService.svc 文件,然后右击并选择"在浏览器中查看"(或按 Ctrl + F5)以显示服务的测试页。您应看到"CustomerService 服务"测试页,这样便可确定该服务可用。

    示例

    以下示例总结了完成以上过程后 CustomerService.svc.cs 文件中的代码。

    View Code
    //CustomerService.svc.cs
    using System;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Activation;

    namespace SilverlightApplication1.Web
    {
    [ServiceContract(Namespace
    = "")]
    [AspNetCompatibilityRequirements(RequirementsMode
    = AspNetCompatibilityRequirementsMode.Allowed)]
    public class CustomerService
    {
    [OperationContract]
    public int CountUsers()
    {
    return 2;
    }
    [OperationContract]
    public User GetUser(int id)
    {
    if (id == 1)
    {
    return new User() { IsMember = true, Name = "Paul", Age = 24 };
    }
    else
    {
    return new User() { IsMember = false, Name = "John", Age = 64 };
    }
    }
    }

    // All public read/write properties and fields of a type are serialized by default.

    public class User
    {

    public bool IsMember { get; set; }


    public string Name { get; set; }


    public int Age { get; set; }
    }

    }

  • 相关阅读:
    mysql索引
    mysql中的事务
    mysql的各种join连接
    java集合-LinkedList源码分析
    java集合(二)-ArrayList源码分析
    java集合(一)-集合概述
    java并发(五)-重排序、 happens-before
    vue引入百度地图 --BMap is not defined ,eslint BMap报错
    红星美凯龙前端面试内容总结
    vue父子组件钩子函数的执行顺序
  • 原文地址:https://www.cnblogs.com/landexia/p/1991896.html
Copyright © 2020-2023  润新知