转:SilverLight4 + WEB SERVICE 解决方案(二)

来源:互联网 发布:剑三捏脸数据魔道祖师 编辑:程序博客网 时间:2024/05/17 21:27

转自:http://www.cnblogs.com/anncesky/articles/1778061.html

 

解决了跨域访问之后,开始构建WEB SERVICE 端架构

我还是使用传统的三层,外加实体层,因为实体层可以很好的进行默认序列化,不必

自己进行序列化了。

数据层:

public class ADAL
{
public DataTable GetData()
{
DataTable dt
= new DataTable();
dt.Columns.Add(
"id",typeof(int));
dt.Columns.Add(
"name", typeof(string));
dt.Columns.Add(
"sex", typeof(bool));
for (int i = 0; i < 10; i++)
{
DataRow dr
= dt.NewRow();
dr[
0] = i + 1;
dr[
1] = ((char)('A' + i)).ToString();
dr[
2] = i % 2 == 0 ? true : false;
dt.Rows.Add(dr);
}
return dt;
}
}

 

业务逻辑层:

 

public class ABLL
{
public List<AModel> GetData()
{
DataTable dt
= new ADAL().GetData();
List
<AModel> list = new List<AModel>();

//DataConvter.TableToList(dt, list);

AModel mTemp;
foreach (DataRow dr in dt.Rows)
{
mTemp
= new AModel();
mTemp.id
= (int)dr.ItemArray[0];
mTemp.name
= (string)dr.ItemArray[1];
mTemp.sex
= (bool)dr.ItemArray[2];
list.Add(mTemp);
}

return list;
}
}

 

实体层:

 

public class AModel
{
public int id { get; set; }
public string name { get; set; }
public bool sex { get; set; }
}

 

 

这三层中,只有业务逻辑层,有点跟平时不太一样,就是加了一个从DataTable类型转成List<Model>类型

因为,虽然DataTable支持序列化,也带有[SerializableAttribute]属性,但在SL端,虽然可以,但并不

太容易获取数据,而List<Model>到SL端可以很容易获得数据,只是把它转换成 Model[] 组数类型了。

 

一些列表控件的绑定数据源只要求是 IEnumerable 类型就可以了,所以无论是 组数、List、 List<Model>

类型都能够胜任。下一篇 简化业务逻辑层的数据类型转换

原创粉丝点击