编写这个demo的目的主要是为了把最近学到的一些vs2008开发技术做一个综合归纳,并跟大家探讨一下这些技术在实际项目应用中遇到的一些问题。先来简单介绍一下这个demo:
1、 解决方案分为三个项目,分别对应data access,business logic和user interface
2、 data access layer 使用ado.net entity framework实现对象关系映射和数据库访问,business logic layer 使用linq(linq to entities),buildermethod,entitysql 实现对实体对象的操作和业务规则控制,user interface layer 使用asp.net ajax+wcf service实现用户和应用程序交互,web页面采用纯粹的javascript +ajax,没有用任何服务器控件。
3、 程序功能实现了对部门信息查询,员工信息列表,筛选,分页,排序,删除。
点击出处下载这个demo ,里面有数据库
要运行这个demo
您必须安装vs2008英文版,中文地不行,原因是中文的装上ado.net entity framework后在添加item里没有ado.net data model 的选择,也不知为啥。
您必须安装ado.net entity framework beta 2下载地址:
http://www.microsoft.com/downloads/details.aspx?familyid=f1adc5d1-a42e-40a6-a68c-a42ee11186f7&displaylang=en
ado.net entity framework tools aug 07 community technology preview
下载地址:http://www.microsoft.com/downloads/details.aspx?familyid=09a36081-5ed1-4648-b995-6239d0b77cb5&displaylang=en
您也必须安装asp.net futures 下载地址:http://www.asp.net/ajax/downloads/
在编写这个demo的过程中遇到的问题如下:
1、 关于ajax的数据绑定问题,我采用了asp.net futures中的客户端数据绑定功能,感觉不爽,首先就是那个什么 asp.net ajax xml 脚本的编程模型,编译器根本就不认识,更没有智能感应了,写起来累死人,教程里面只有对webservice的自动绑定,而我用的是wcf service,得自己显式绑定数据,麻烦!
2、 对于有外键字段的列表显示问题,难道真的要自己写个专门给ui使用的实体,再在bl里面对这个实体赋值,再由wcf service 传到客户端才可以吗?那不每个列表都要写一个?
3、 分页问题,在用webform的时候我都是把总记录数放在分页函数的out参数中一起传递给objectdatasource ,用来绑定分页信息,用了ajax可麻烦了,无法传递out参数,我绞尽脑汁也没找到好的解决办法,最终我屈服了,我tmd专门写了个得到记录数的函数用来返回给ajax来绑定分页信息,真是。。。。
4、 排序问题,我感觉我的实现方式实在是太愚蠢了,而且还没实现倒序,正序排列,其实给分页函数多加一个参数,再把列表头调用排序的方法改一下就可以了,可是我怎么就觉得这样做这么别扭呢?这样开发还不累死人?
5、 删除问题,那个功能为什么不能用?我也不知道,谁知道?
6、 关于ado.net entity framework使用中的一些问题,算了不说了,反正它也不随着vs2008一起发布,到时候先用着linq to sql 吧,要注意的地方就是那个web.config中的链接字符串!
7、 ie查看源文件一看,一大堆javascript,页面运行机制看得一清二楚,还直接暴露了web 服务方法。
8、 整个页面反应太慢,数据绑定慢,调用wcf 慢!
关于列表数据绑定,我觉得还不如直接让wcf service 返回html字符串(包含列表和分页信息),到时候搞个div显示出来就可以了,或者参照asp.net futures中的例子,在客户端进行分页?