Silverlight 3.0+Wcf+LingToSql+lamda

 

       丰富型互联网应用将是未来的发展趋势,Silverlight 是c# vb 码农们建立富互联网应用的必备手段。  我使用的是工具是vs 2010 +blend 3。silverlight是个客户端工具。如何与数据库交互呢,这就用到了 wcf API  (vs2010中是:启用了silverlight的wcf服务)。使用 LingToSql 作为数据查询的架构,能够快速,高效,简便的使silverlight客户端与wcf服务端进行交互。lamda在处理silverlight控件事件的时候可以少写很多代码。使得我们的代码更简洁。

一:首先 建个silverlight  应用程序+web应用程序。

       在web应用程序中添加新项 : 选择启动了silverlight 的wcf 服务

  

                   代码示例:

  LingSqlHelp LS = new LingSqlHelp();

 [OperationContract]
    /// <summary>
    /// 查询角色
    /// </summary>
   public IEnumerable<User_Role> QueryUser_Role()
 {
        IEnumerable<User_Role> User_Roles = LS.Query();
        return User_Roles;
        
 }

LingSqlHelp 是我写的ling to sql的一个帮助类。  IEnumerable 这个类型 是ling to sql 返回的类型。wcf可以把这个类型直接返回的silverlight客户端。

User_Role是个模型类 ,这个类也会被silverlight客户端生成代理模型,   [DataContract]标识, [DataMember]标识不能少。这些都是约定好的标签。

   [DataContract]
public class User_Role
{

        [DataMember]
        public  int id {get;set;}
        [DataMember]
        public string rolename { get; set; }

}

二:silverlight客户端

    添加服务 -前往-生成代理类。跟引用webservice差不多

  ServiceReference1.ServiceClient  sc = new ServiceReference1.ServiceClient();//这个是生成的代理类
            sc.OpenAsync(); //打开连接
                  sc.QueryUser_RoleAsync();
            sc.QueryUser_RoleCompleted += (object sender, ServiceReference1.QueryUser_RoleCompletedEventArgs e)=》

          {

            ObservableCollection<ServiceReference1.User_Role> User_Roles = e.Result;
            User_Roles.Insert(0,new ServiceReference1.User_Role() { id=0, rolename="全部"});
            comboBox1.ItemsSource = User_Roles;
            comboBox1.SelectedIndex = 0;

            };//lamda表达式。 服务端所有的泛型集合 包括Lsit<T> 在silverlight客户端中生成的代理类中都会转化为ObservableCollection<T>泛型集合

             sc.CloseAsync()//关闭连接

职位是通过刚那个交互绑定的。其他的绑定datagrid绑定我们会在下一讲到。

要说明的一点是silverlight只是一个客户端。wcf是一个服务。我需要做些安全的措施。建议大家使用ssl 认证。没有条件的可以使用约定的密钥,ip限制等进行判断请求是否我们的客户端的发起的。

 

博客园首发 菜鸟原创 转载请著名作者:青牛客

posted @ 2012-05-04 16:40  青牛客  阅读(1641)  评论(2编辑  收藏  举报