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限制等进行判断请求是否我们的客户端的发起的。
博客园首发 菜鸟原创 转载请著名作者:青牛客