带有服务的 SQL Server 的模拟/外观?

Posted

技术标签:

【中文标题】带有服务的 SQL Server 的模拟/外观?【英文标题】:Mocking / facade for SQL Server with a service? 【发布时间】:2012-08-21 14:19:02 【问题描述】:

是否可以模拟或创建外观,用服务(理想情况下是 WCF 或其他 .NET 技术)替换当前由网站通过 ADO.net 直接使用的 SQL Server 数据库?

示例: 考虑一个具有许多功能的 ASP.NET 网站,它使用 SQL Server 2008 over ADO.NET。 SQL 事务涉及许多存储存储过程,但也有一些直接的 T-SQL 事务。如果能够将(单一的)SQL 服务器替换为更具可扩展性的实现,那将非常强大, 不必重新实现网站功能。

这可能是 ADO.NET 的垫片,或者是自定义服务框架的 ODBC 驱动程序,或其他东西。 “正确”的答案似乎是“重新实现网站以使用更抽象的数据接口”,但让我们考虑网站代码是不可变的(尽管可以更改配置)。

【问题讨论】:

“我们已经到了扩展数据库和添加新功能变得非常昂贵的地步” - 为什么?需要索引吗? 这项服务应该如何帮助解决问题?您是遇到性能问题,还是只是复杂性问题? 如果事情变得太复杂,我真的不认为添加这个非常不寻常的实现会有帮助。 【参考方案1】:

也许只是提供一个数据访问层来指定设计良好的接口。您的网站将永远只有一个接口的句柄,您可以使用依赖注入/IoC 根据需要提供您的接口的具体实现。

这不是一种“现有技术”,但可能只是我建议的一种谨慎的设计方式。

【讨论】:

虽然这个答案显然是理想的目标,而且我不是 .NET 专家,但在我看来,通过编写自定义 ADO.NET 驱动程序,可以完成特别要求的任务.

以上是关于带有服务的 SQL Server 的模拟/外观?的主要内容,如果未能解决你的问题,请参考以下文章

将带有 Access 前端的 CSV 文件导入 SQL Server

如何在 SQL Server 中列出所有带有“WITH NOCHECK”的外键

SQL Server - 按外观替换字符串

将 Oracle 外连接转换为 SQL Server

使用带有 oracle 的链接服务器更新 SQL Server 上的查询

使用服务器端 Blazor,在连接到 SQL Server 数据库时如何使用 Windows 身份验证模拟用户?