今天早上我和我的一位同事讨论了一些ASP.Net主题。由于我习惯于桌面应用程序,我不知道在ASP.Net中使用DataSet与数据库连接被认为是不好的风格。我的同事无法向我解释为什么它被认为是不好的风格(他的学校老师总是这么说)所以我想知道这里是否有人可以解释数据集的问题是什么。 我认为数据集是一个明智的选择,因为它们实现了IXmlSerializable和ISerializable,并且对API或其他东西很方便。 我认为它因为尺寸而被认为是不好的风格,但正如我所提到的,我不是这个主题领域的专家。
我之前读过这篇文章:C# Dataset or not? 但它并没有真正向我澄清为什么有人会说DataSet是ASP.Net的坏风格。我不想宽泛,所以我在这里使用一个假设的案例
所以这是一个假设的案例:
我的数据库是 MS SQL Server Express 2012 ,我正在使用 .Net Framework 4.0 。 假设我有一个拥有6000个客户和大约46000个商品的在线商店。如果我想在 ASP.Net和C#中实现这一点,那将是最好的选择。我是否应该使用DataSet,POCO或DataTables作为在线商店中使用我的数据的最佳选择?也许有一种标准的方法可以做到这一点,这被视为可行的方式。
如上所述,我没有实际的问题,我只是好奇。
答案 0 :(得分:2)
过去十年中,大多数人使用ORM(如EntityFramework或NHibernate)来绕过使用ADO.NET DataSet
和DataTable
编写相对低级代码的需要。它也没有传达商业意图(尽管你可能会认为这在应用程序的这个层面上并不重要)。基本上,您不应该编写代码来填充数据集,因为现在有许多其他选项可以为您完成工作,而无需反复编写类似的代码。尽管如此,虽然远不是一个完美的解决方案,但在大多数情况下,对于中小型项目DataSet
都可以正常工作,就像ORM一样。在您提供的假设情况下,您可能仍然可以使用DataSet
或ORM而没有太多问题。
当您希望在网站变大或流量高峰时扩展网站时,会出现问题。根据你在问题中提到的,听起来你还在使用" classic" N层架构。在过去几年中,许多技术已经开发出来,它们尝试使用Web而不是我们希望Web工作的方式。查看文档数据库(MongoDB,RavenDB,CouchDB),微服务架构和CQRS(带事件源)。没有银子弹(借口陈词滥调),但至少你看到有很多选择与不到十年前被认为是理想的架构不同。