您的位置:首页 > 数据库

Silverlight 3.0+Wcf+LingToSql+lamda

2012-05-04 16:40 169 查看
丰富型互联网应用将是未来的发展趋势,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限制等进行判断请求是否我们的客户端的发起的。

博客园首发 菜鸟原创 转载请著名作者:青牛客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: