我以前使用Delphi的,现在才进入.NET开发环境。现在因为要做一个B/S系统,正在想架构问题,希望有人能够给我一些指导。
在.NET中很重要的一个组件就是DataSet,这个是学Delphi的Midas技术,对这点我非常熟悉,毕竟使用Delphi已经好几年了。
DataSet的可以让数据更新一个整体的概念进行数据的存储工作,如订单的明细表的修改、添加或者删除,可以一股脑提交给服务端集中处理。这样对我的体验是:干净。.NET使用DataSet是一个很大的特色。
但是我在ASP.NET的介绍中并没有看到DataSet的优点。在ASP.NET中,数据的存储使用SQLDataSource、ObjectDataSource,这些DataSource实际使用SQL语句或者TableAdapter捆绑的SQL语句进行数据的访问和更新,并没有打包的概念。是不是我了解的太少了?
看了WebCast只是说ASP.NET开发数据库应用很方便。是的,的确很方便,但这些是属于轻量级的。ObjectDataSource可以使用自定义的业务对象,但是这些业务对象的接受只能是一些基本参数,不能包含Master/Detail数据,这样如果要保存一个订单,只能先保存主信息,再让用户点击页面按钮保存明细信息--这是不能忍受的。我举的这个例子比较简单,更复杂的可能是页面提交的一笔数据可能要引起N个表格的更新,而这么多表格的更新过程是一种逻辑,应该有一个组件来支持。
我一直怀疑我自己对ASP.NET的了解程度,但是找来找去就是找不到页面提交数据,服务器上的业务组件对数据进行分析,然后更新到多个表这样的一个过程。
如果您知道,您不妨给我指点一下;如果您也有兴趣,大家一起讨论;共同学习,共同提高!
在.NET中很重要的一个组件就是DataSet,这个是学Delphi的Midas技术,对这点我非常熟悉,毕竟使用Delphi已经好几年了。
DataSet的可以让数据更新一个整体的概念进行数据的存储工作,如订单的明细表的修改、添加或者删除,可以一股脑提交给服务端集中处理。这样对我的体验是:干净。.NET使用DataSet是一个很大的特色。
但是我在ASP.NET的介绍中并没有看到DataSet的优点。在ASP.NET中,数据的存储使用SQLDataSource、ObjectDataSource,这些DataSource实际使用SQL语句或者TableAdapter捆绑的SQL语句进行数据的访问和更新,并没有打包的概念。是不是我了解的太少了?
看了WebCast只是说ASP.NET开发数据库应用很方便。是的,的确很方便,但这些是属于轻量级的。ObjectDataSource可以使用自定义的业务对象,但是这些业务对象的接受只能是一些基本参数,不能包含Master/Detail数据,这样如果要保存一个订单,只能先保存主信息,再让用户点击页面按钮保存明细信息--这是不能忍受的。我举的这个例子比较简单,更复杂的可能是页面提交的一笔数据可能要引起N个表格的更新,而这么多表格的更新过程是一种逻辑,应该有一个组件来支持。
我一直怀疑我自己对ASP.NET的了解程度,但是找来找去就是找不到页面提交数据,服务器上的业务组件对数据进行分析,然后更新到多个表这样的一个过程。
如果您知道,您不妨给我指点一下;如果您也有兴趣,大家一起讨论;共同学习,共同提高!
解决方案 »
- 刚刚出道,请高手指教!!!
- ASP.NET 运行不起来 提示错误: 试图运行项目时出错:无法在Web服务器上启动调试。未将项目配置为进行调试
- C#在哪里声明全局变量呀?
- 谁知道在ASP.net里 这样做发送传真啊(急)
- 各位:帮我看看下面这段代码,哪里错了?应该怎么写?
- 如何动态做层叠菜单?
- DataGrid中显示日期总是为2004-07-21 00:00:00 怎麽设置DataFormatString属性
- 怎么在客户端捕捉treeview结点的click事件呢?
- MVC4的程序,IE11访问使用时中间有一串代码,而其它浏览器没有
- 可以调试吗?--.Net中的客户端脚本可以设断点进行Debug吗???
- 关于模式窗口关闭的问题(在线等,解答立刻结贴给分)
- Web中如何调用SaveDialog
那么你要确保安全性的话 在架构方面 可以在这N的方法外整个加上一个事物
如果其中的一个方法出错 则全部回滚~~~这样做的时候 你就要使这N个方法的连接对象是同一个连接对象才能做到一个菜鸟的建议 仅供参考
因为就象你说的U第人必须对数据库了解 如果一旦要修改 一般都是涉及到几层去修改你要事物在一个模式下的话 大概思路是
接口有打开事物,关闭事物,事物回滚这3个方法(注意这个3个方法的连接对象是同一个,一个私有成员),其他的什么或者一行,获得 dataset都是一样的,只是接口的方法都必须是返回int 来看是否执行成功然后再搞一来进行增删改查 只做增删改查 不做别的然后逻辑层BC BC来调用那个增删改查的方法 但在这些方法外有一个事物 这个事物的连接对象和那些增删改查的方法的对象是同一个对象,BC里面有一个增删改查层的构造函数对吧 这个构造函数需要传递一个已经实例化的接口 那么增删改查的连接对象和事物的连接对象就是一个对象了
但是如果以上的不能满足实际要求,那么objectdatasource可能应不适应了,这时肯定要自已写代码.
其实从微软的想法上,是想提供一个应用程序的框架,而这个框架,是以组件的形式出现的,你用这些组件,就会不自觉的应用上设计模式一类的东西,而你并不会感觉到这些.但这里也有问题,就是它封装的东西,从演示上看,效果非常好,但只是对一般的应用效果好,而对于复杂的应用,它就显得力不从心.所以研究.net,很多时候都在研究怎么样扩展微软提供的类库,本人以为,这样做固然能加深对控件的理解,但很多时候并无必要.再好的控件,最后其实都是生成了一堆的html,如果你有学习这些控件的功夫,也许自已也已经写出了比较适用于自已项目的新的控件.
而这种模式使用现成的GridView、DetailsList和FormList这些控件。这些控件使用DataSource控件,而DataSource控件只能连接数据访问对象(TableAdapter对象,也可以访问业务对象,但是这种业务对象的接口太单一)现在要搞清楚的是,ASP.NET中是怎么一个过程来实现多层架构呢?
欢迎大家继续讨论!
DAL、BLL、Model三层,还可以扩展为IDAL等等
给你一个小例子
http://www.51aspx.com/CV/AjaxMyPage/
更多的在这里
http://www.51aspx.com/Tags/2/
汽车 car=new 宝马("AD382323",per);
事故 xx=new 撞车事故();
xx.car=car;
.....
using(Domain dm=new LocalDatabase())
{
xx.Save();
}这样就把整个故事保存进数据库了,根本不需要像关系数据库那样去创建表、索引、约束之类的东西。处理并发、缓存、搜索的性能比纯种的关系数据库通常都快10倍。asp.net中的webService也是类似,服务器上的类型更新可以自动部署到所有客户程序中。过去,所谓“三层”较多地谈软件接口、ORM 等如何如何,其实程序员光说不练也能吃得开。现在,慢慢地终于新的分布式系统架构可能要逼着程序员必须把数据库尽量简单化。包括Oracle、DB2等都在将应用开发平台转向上面程序那种面向对象的界面,关系数据库的那些繁琐的分析设计和维护技术会被人淡忘。
“不过,时代在往前发展,关系数据库开始让位给更高级的数据库结构了,SOA架构之下c/s数据库编程开始显露出更多弊病了。微软的东西比时代总是晚好几年。只是我们都用微软的东西,所以很多人觉得微软的改变很令人吃惊。而很多对软件工程早几年就有接触的人则会觉得欣喜,总算可以暂时不用去考虑放弃微软的这么流行的开发工具了。”我看不大懂,见谅见谅。微软的IDE的确是不错的,功能很强大。我想请教你一下,一般大型的业务管理网站是如何设计的呢?
或者: --> xx.Save(dm);实现方法不同,但是同一个意思,把对象丢进永久存储服务器里。
第二方面“慢慢地终于新的分布式系统架构可能要逼着程序员必须把数据库尽量简单化”,数据库简单化一直是大家追求的目标,不过即使到现在以及将来,分布式系统并不是让数据库更加简单,而是对各个系统的集成称为可能,各个内容提供商提供的服务进行集成。总之,分布式架构的产生不是因为数据库的存储原因而产生的。
我们现在谈的已经脱离我原来想知道的有关ASP.NET的问题。上面也仅是我个人从事软件行业而来一些想法,如有不妥敬请批评指正。
目前我有一个自己开发的代码生成器,它的功能非常强大,是要根据您输入的某个数据库的表就可以建立起模块,然后从数据链接层->业务层->表示层.一层一层的自动生成cs文件或aspx文件,而且在表示层能够实现添加,修改,列表查找,和删除.根本就不用怎么写代码,非常傻瓜.
其中在业务层我就是在每个模块的方法中写5个函数,分别是:增,删,改,查,数.每个函数都为ObjectDataSource做一个接口.
页面就用GridView做查找列表和删除,FormView做添加和修改,2个控件都是绑定ObjectDataSource的
zzmsl:您说的没错!服务器为每个客户端保持一份DataSet的Session的成本是挺大的。
我感觉这么发展下去,用不了多久,程序员可能就失业了。显示表里的数据,根本就不用写代码。拽两个控件,电几下鼠标就可了。一点难度都没有了呀。埃,怎么活呀。
您说的也是办法的一种,但肯定不是正统的办法。ObjectDataSource的功能并不强大,我认为。如果可以使用SQLDataSource的话,一般都会用它。ObjectDataSource既然不支持真正的业务对象,作用类似SQLDataSource。也许是我的误解,但是到现在我还真没找到方法,这不能不说一个缺陷,无论实际是可以做到,还是微软的介绍欠缺。
我好久没用2003了,我知道asp.net2.0的GridView里有个DataKey
顺便流个脚印
驾驶员 per=new 驾驶员("张三",28,"110109888981");
汽车 car=new 宝马("AD382323",per);
事故 xx=new 撞车事故();
xx.car=car;
.....
using(Domain dm=new LocalDatabase())
{
xx.Save();
}
*******************************************************
超强
1. 便捷开发:封装、整合数据库操作方式,让开发人员摆脱数据库的约束;
2. 规范开发:依据多层设计原理,明晰人员分工,提高程序可读性;
3. 记录运行情况:开发人员依据记录了解系统详情,方便调试排错;
4. 多样数据库连接:实现多种数据库连接方式,对开发人员透明化数据库连接,使其只关注上层程序,同时降低数据库转换、升级工作量,目前实现Access2000、SQLServer2000两种数据库,日后逐步增加关系型数据库连接配置;
5. 整合有效函数:对开发中其它的有用的、常用的函数进行整理,简单调用实现;访问http://blog.csdn.net/lizheng82
http://blog.csdn.net/lizheng82