正在将SqlDataSource移动到类文件ASP.NET

本文关键字:文件 ASP NET 移动 SqlDataSource | 更新日期: 2023-09-27 18:01:13

我的任务是将所有SqlDataSource对象从ASP.NET pages aspx文件中移出,并将它们放入一个单独的类文件中,但我丢失了。有没有办法在一个单独的类中创建一个SqlDataSource对象,并将查询字符串分配给SelectCommandDeleteParametersInsertParameters等?

到哪里可以在单独的页面上调用对象,而不是将代码放在aspx中?

正在将SqlDataSource移动到类文件ASP.NET

是的,你可以做到。我建议您将所有数据库IO移动到web服务

我还想补充一点,就应用程序的安全性而言,这是您正在采取的一个非常好的步骤。像这样将数据访问与用户IO分离是我认为必须采取的安全措施。如果做得好,您将大大提高应用程序的安全性

您可以很容易地创建WCF web服务。网上有很多教程,我很乐意为您提供指导。web服务将具有CRUD(插入、选择、更新、删除(操作。然后,您可以在网页上创建一个指向web服务的"Object"类型的数据源,页面上的元素可以从这些对象数据源中获取数据。您还可以在代码背后实例化web服务,并使用它来操作数据。当你创建对象类型的数据源时,你会指定与每个命令相对应的服务方法(选择、插入、更新…(。希望这能为你指明正确的方向,并随时在评论中问我更多,或者你可以发起聊天,我会给你我的电子邮件,你可以在那里对我大喊大叫。

如前所述,可以将SqlDataSource控件移出WebForm。我暂时假设您当前的代码在.aspx文件中声明了这些控件。例如,您可以更改为命令式方法,并在WebForm的代码隐藏类的事件处理程序中实例化数据源控件,但这样做不会带来太多好处。事实上,您甚至可以将大量执行实例化的代码移动到代码隐藏类调用的助手类中,但这不会让您走得更远。

DataSource控件的初衷是为开发人员提供一种快速创建原型/概念证明的方法。但这些控制并不是真正针对生产系统的。它们违反了关注点的分离,即使不是不可能,也会使单元测试变得困难。

在某些方面,DataSource控件可以更容易地使用(例如,与GridView控件结合使用(。但是,这种便利是有代价的,这可能有助于(部分(解释为什么你被要求使用控件。不幸的是,在2005年ASP.Net 2.0(WebForms(发布时,当时发表的文献大力推广了这些DataSource控件的使用。从那时起,社区就认识到,这些控件的生产价值是值得怀疑的,除非你正在开发不需要随着时间的推移而进化的简单系统。

正如Anon316所提到的,您可以使用web服务来处理CRUD操作。然而,这个解决方案可能不是您真正需要的。使用web服务会产生额外的开销(即,对服务的额外HTTP请求(。让应用程序直接调用数据库仍然是一种非常好的方法。

话虽如此,考虑创建一个单独的类(或多个类(来提供数据访问设施(例如,Repository(。例如,实体框架使创建这种东西变得相当简单(.Net生态系统中还有许多其他数据访问库(。准备将更多代码添加到WebForms的代码隐藏类中,以便使它们与您的存储库(或其他数据访问(类进行交互。您将获得的好处是数据访问代码的可测试性和可重用性更强。考虑将您的数据访问类放入解决方案中的一个单独项目中(开始(。

无论您是在解决方案中还是在web服务中创建单独的数据访问类,为了摆脱DataSource控件,都需要进行大量重构。因此,再次注意使用web服务所涉及的额外开销,认识到当您有多个客户端(例如web和移动客户端(时,web服务往往是有意义的,而不是当您只有一个客户端时。