200分征求意见:我们的网站需求非常庞大,我全站都采用SQLHelper直接返回DataTable然后绑定Reapter的做法,没用实体类和架构,为了提高开发速度,这样做法有什么坏处没?

超级大笨狼 2008-03-11 10:57:53
200分征求意见:我们的网站非常庞大,我全站都采用SQLHelper直接返回DataTable然后绑定Reapter的做法,没用实体类和架构,为了提高开发速度,这样做法有什么坏处没?
(实体类的代码生成器我也没用,因为我觉得实体类要不断修改完善巨麻烦)

大家是过来人,请评论一下你项目架构,碰到的问题和解决对策。

此问题非常重要,先表示感谢!~~~
...全文
1122 113 打赏 收藏 转发到动态 举报
写回复
用AI写文章
113 条回复
切换为时间正序
请发表友善的回复…
发表回复
fox123871 2011-06-03
  • 打赏
  • 举报
回复
其实速度快不快 ,并不是完全取决与你的 代码方式 ,那只是解决性能问题的一个小部分 ,如果想大幅度的提高网站性能 ,首先 缓存 非常重要 ,然后 就是 数据库索引的优化 ,这俩个都是在免费的情况下,极大提升网站性能的技术,然后呢 服务器的硬件与带宽 这俩个算然花钱 ,但也是最直接有效的手段 。
llainn 2009-03-28
  • 打赏
  • 举报
回复
[Quote=引用 106 楼 iuhxq 的回复:]
按理来说DataReader应该比DataSet要快,是否可以自己写一个方法,用DataReader取数据放到一个List里,然后把List绑定给各个控件。

为了通用和开发效率。List里存放的并不是实体类。如果是object怎么样?这样就避免了使用DataSet的性能问题,又兼顾开发效率问题。


有没有人跟我一个想法?
[/Quote]

你的想法我也相迅.把DataReader 放到一个List里.然后绑定到控件上.

不知道有人用这种方法开发么.
ahwangyibo 2009-01-17
  • 打赏
  • 举报
回复
我们网站也是像你说 的那样设计的。维护起来。麻烦呀。特别是人员流动比较大的时候。还是分层比较好,代码容易接受些
iuhxq 2008-03-14
  • 打赏
  • 举报
回复
按理来说DataReader应该比DataSet要快,是否可以自己写一个方法,用DataReader取数据放到一个List里,然后把List绑定给各个控件。

为了通用和开发效率。List里存放的并不是实体类。如果是object怎么样?这样就避免了使用DataSet的性能问题,又兼顾开发效率问题。


有没有人跟我一个想法?
大正他爹 2008-03-14
  • 打赏
  • 举报
回复
维护起来是个麻烦
要是有时间就是一次搞定吧。
purple_tide 2008-03-14
  • 打赏
  • 举报
回复
好的架构一般比较难带来性能的突破
不过对于 可维护性 来说 会有比较大的飞跃

复杂度 up
可维护性 up
性能? 其实架构不是性能的关键因素 虽然好的架构更容易调整
DataTable的性能不见得比最简单的实体类要好 应该说会更差

注意:不适合的架构是很惨的

数据库设计上要考虑冗余 减少查询压力

前端可以用均衡负载 页面静态化 缓存 等等技术优化

不过技术都是逐步调整的
等网站到了一个程度 调整是必然的

没有什么从100pv到1亿pv都通用的框架
必须要考虑的是 时间 资源 和性能
iuhxq 2008-03-14
  • 打赏
  • 举报
回复
楼上网站是?
zhqs1000 2008-03-14
  • 打赏
  • 举报
回复
如果是网站的话,赞成你这方法,网站开始起步的时候,你不可能考虑的东西很多,也不可能知道到底发生啥。
分太多的层,性能还损失了很多。对了网站最好生产静态的,负载均衡和seo都有好处。我们网站 pv在200万,采用的方法和你的差不多一样,目前修改和其他都没有出啥问题。
超级大笨狼 2008-03-14
  • 打赏
  • 举报
回复
[Quote=引用 101 楼 aoxin 的回复:]
支持,顶起..学习...

我是一个自学者..

有个问题想问superdullwolf

我下载了你提供的关系表,,并打印出来(两张A3纸合成A2,字虽小点但带上1500度眼镜还是看得清)

有个问题:就是里关系表里面有很多与会员表(User_Users)是一对一的关系如:用户头像表,用户等级表,用户角色表等等...

为什么要分开这么多表而不集成在一起呢....如果集成在一起比关联性能要好很多...(谢谢!)
[/Quote]

问题是我们的打印机是600毫米宽的,两张拼起来挂墙上的,一目了然。
http://www.dullwolf.cn/databaseinfo.swf

分开这么多表的原则是:

1对多关系需要2张表。
多对多关系需要3张表。

见数据库设计泛式1-3
fcuandy 2008-03-14
  • 打赏
  • 举报
回复
即, 机械化的东西给层去做, 数据性强的给过程封装.
fcuandy 2008-03-14
  • 打赏
  • 举报
回复
不分层,我也不想弄,那又回到asp年代了.

分层在业务多变经常改表的情况下维护很麻烦.(特别是像我们公司老大这样的一天天个想法的人手上),每次发布都头疼, 写了个数据库对象同步工具,局域网里好好的, 连到国外服务器一运行,处理一会就断线了, 用其它建模工具也一样, 还是每次手工上去改,改的我头大. 下面的程序员, 每次改了表及模型层,老东掉西拉的,不是把cache里的忘更新,就是新加的东西没给值.
这些都小问题, 主要的是, 涉及多个表相关的处理, 比如某表中记录一变,引起其它变化,它一变又引起别的变,就像递规操作一样, 每一个变化都又有自己的逻辑在里面. 或者数据表依赖性强的计算.

我采用的方式是找平衡, 分层 + 与数据表操作份量重的存储过程的业务逻辑封装.

zyowe 2008-03-13
  • 打赏
  • 举报
回复
只有学习。
jiangshilin9982 2008-03-13
  • 打赏
  • 举报
回复
我的网站首页,也是直接从存储过程里返回DataSet的形式,中间只经过了DaL层,然后直接交给N多个Repeter绑定输出!
zzxap 2008-03-13
  • 打赏
  • 举报
回复
自己写一个数据库操作类,然后调用,觉得这样比较好。
kafeiputao 2008-03-13
  • 打赏
  • 举报
回复
好资料,怎么获得?
sunlovesea 2008-03-13
  • 打赏
  • 举报
回复
1、从性能上讲使用SQLHelper直接操作数据库比操作实体类效率高.
2、是否使用框架看具体情况。如果前期需求分析做的很充分,使用用框架的确维护方便。反之如果频繁修改数据库字段使用框架会把人累死。
3、目前还没有看到能根据表关系生成符合代码的生成器,合理使用DataTable能提高开发效率。
exiori 2008-03-13
  • 打赏
  • 举报
回复
感觉开发速度是快了,但是维护有没有考虑过。
aoxin 2008-03-13
  • 打赏
  • 举报
回复
支持,顶起..学习...

我是一个自学者..

有个问题想问superdullwolf

我下载了你提供的关系表,,并打印出来(两张A3纸合成A2,字虽小点但带上1500度眼镜还是看得清)

有个问题:就是里关系表里面有很多与会员表(User_Users)是一对一的关系如:用户头像表,用户等级表,用户角色表等等...

为什么要分开这么多表而不集成在一起呢....如果集成在一起比关联性能要好很多...(谢谢!)

ReyZhang 2008-03-13
  • 打赏
  • 举报
回复
应该考虑到以后的维护成本,及扩展性
virusswb 2008-03-13
  • 打赏
  • 举报
回复
用sqlhelper的话,他的分层观念很弱的
既然网站庞大,个人认为不太适合吧
没有实体和架构不太好啊
加载更多回复(93)

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧