DAL (customerDAL) 中的类不应该是单例的吗?由于我的控制器 (customerController) 公开了“Shared Subs”,因此在每次调用时,如果已经存在,则无需创建新的 DAL 对象。正确的?
谢谢
DAL (customerDAL) 中的类不应该是单例的吗?由于我的控制器 (customerController) 公开了“Shared Subs”,因此在每次调用时,如果已经存在,则无需创建新的 DAL 对象。正确的?
谢谢
如果你有一个网站,单例 dal 对象是非常危险的,因为对网站的每个请求都是同一个应用程序的一部分。如果构建错误,它们可能会成为访问数据库的瓶颈。
这在很大程度上取决于您的完整解决方案的架构。当您有很多消费者时,可能很难获得一个单身人士。以下是您在设计 DAL 时可能需要考虑的事项清单。此外,还有很多 DAL 模式,如 Repository 和一些外观模式。
众所周知,单例对象很难测试。我会考虑以一种不昂贵的方式创建 DAL,然后根据需要创建一个新的。通过这种方式,您将能够更轻松地为 DAL 编写单元测试,并且仍然不会产生太多开销。此外,如果您将 DAL 创建为单例,则在多线程环境(例如 Web 应用程序)中使用它时,您需要更加关注使其线程安全。
只有当您想确保在您的应用程序实例中只实例化一个类的实例时,才应使用单例。
单身人士几乎不能被认为是代码气味。大多数使用 Singleton 的人都使用得很糟糕。因此,当您看到一个时,很有可能它没有正确使用。
至于 DAL,对象的创建并不广泛。他们应该依赖于使用连接池,然后在每次需要执行命令时从池中请求连接。
当然,有不同的模式可用,您应该主要使用 ORM,除非需要调整请求以提高性能。
请参阅NHibernate、SubSonic、Linq2Sql、Entity Framework(尚未发布?)等。