【问题标题】:If ObjectDataSource isn't the answer for a large application, what is?如果 ObjectDataSource 不是大型应用程序的答案,那是什么?
【发布时间】:2011-05-28 00:32:12
【问题描述】:

This Question上引用Andrew Hare的答案。

对象数据源非常适合小型 项目,但它们不能很好地扩展 您正在嵌入数据层 您的 UI 层中的信息 应用。我建议你 仅将它们用于非常小的 应用程序和暂存器测试 东西。如果你做出设计决定 准备好去使用它们 存在缩放和维护问题 未来。

应用架构 = 可维护性 + 可扩展性 + ......

而且我认为,我读过的每篇开始学习应用程序架构的文章都使用了一些类来构建业务数据层,并使用ObjectDataSource 将表示层与业务层连接起来。

看来我错了。真正用于业务层及其与表示层的连接的最佳方法是什么?

【问题讨论】:

  • 好问题。我已经看到了自己不同的方法。就个人而言,在构建专门的销售模块时,我尝试了两种方法 - 纯 ado.net 和对象源。第二个提供了更大的灵活性并减少了完成工作所需的工作量(大约 75%)。纯 ADO.NET 最糟糕的事情是管理数据库代码(我有大约 60 个表 + 许多存储过程,每次在架构中更改时我都必须更改它们。再也不会!)
  • @kubal5003- 谢谢...但是 ado.net 和 ODS 不是两个相互完善的工具吗?...我的意思是我用纯 ado.net 和 sql 查询我的数据库,并且将信息作为 List 发送到业务层,然后 BLL 使用 ODS 将其发送到 asp.net 页面....注意,我注意到它既快速又简单,特别是用于实现排序和此类功能,但我在说可扩展性和强大的结构,可悲的是,这些都不适合快速和简单! :)

标签: c# asp.net architecture ado.net objectdatasource


【解决方案1】:

我不使用 ObjectDataSource;个人比较喜欢对绑定过程的控制,所以直接通过DataSource属性进行绑定,不使用DS控件。因为 DS 控制何时绑定或不绑定,我不喜欢点击事件来取消绑定,只是因为我不想在那个特定时间这样做......它可以掩盖某些类型的编码错误,使其更难调试,但是如果有错误,你可以点击选择,插入等事件并处理错误,我相信。

但是,我不明白为什么它错了;我不太清楚为什么它不能很好地扩展......如果它适合你,并且当你测试性能还可以,那我为什么不说呢。

HTH。

【讨论】:

  • 嗯,我以前在代码隐藏中做所有事情,我什至没有使用 Text=' 方法,我从代码隐藏,但我不知道为什么人们说这是一种不好的做法! :S 你认为它会影响你的应用程序的可扩展性或安全性吗?......以及如何测试性能 - 特别是在开发本地机器上 - ?
  • 它会像调用方法一样影响安全性;安全可以处理。可扩展性,我不确定为什么要发表评论,我不明白为什么。性能测试——像任何其他代码一样,创建示例应用程序,并使用 Red Gate 等工具进行性能测试,或者 MS 有一些工具(没用过)。
  • 从性能来看,如果用户对性能没问题,那是最好的基准:-)
  • @Brain- 感谢您的帮助。但我不太明白你想说的关于安全性的内容。关于 Red Gate,您的意思是“ANTS Performance Profiler”吗?
  • ObjectDataSource 实例化一个组件并调用一个方法。如果该方法允许用户做他们不应该做的事情,那么使用 ODS 与直接调用该方法是一回事。所以我不明白 ODS 是如何规避安全性的,因为它与您直接调用该方法的作用相同。如果一个方法返回 20 条记录,其中 10 条用户不应该看到,那么问题不是 ODS,而是代码 :-)
【解决方案2】:

毫无疑问,ObjectDataSource 使绑定过程更容易。

它处理过滤、分页等..减少麻烦。

需要考虑的要点。

  • View(.aspx) 引用了 业务对象,因此它限制了一些 诸如重构之类的任务,而 应用越来越大。
  • 很多 现在的应用程序使用 IoC 和 ODS 不支持。
  • ODS 适用于 参数和 if 过滤条件 增加我们必须增加没有。的 业务中的参数是 也不可取。

因此,如果我们考虑所有这些点,ODS 无法很好地扩展。

【讨论】:

  • +1 终于有了一些充分的理由!...好吧,我们的替代方案是什么,或者我们如何构建可扩展的应用程序?
  • 您确实为这个问题提供了最佳答案,但我希望您可以分享 ObjectDataSource 的可扩展替代方案。
猜你喜欢
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
相关资源
最近更新 更多