当我编写应用程序时,我使用System.Data接口(IDbConnection,IDbCommand,IDataReader,IDbDataParameter等...).我这样做是为了减少供应商的依赖性.除非,我正在做一个简单的测试应用程序,在咨询时看起来似乎是道德的事情.
但是,我看到的所有代码似乎都使用System.Data.SqlClient命名空间类或其他特定于供应商的类.在杂志和书籍中,很容易将其归结为微软的影响力以及他们的营销转向仅针对SQLServer进行编程.但它看起来像我看到的几乎所有.NET代码都使用SQLServer特定的类.
我意识到供应商特定的类具有更多功能,例如向SqlCommand对象添加参数是一种方法,其中将其添加到IDbCommand是令人恼火的4+行代码.但话又说回来; 为这些限制编写一个小助手类非常简单.
我还想知道当SQLServer是当前目标客户端时是否对接口进行编程是过度工程的,因为它不是立即需要的.但我不认为这是因为针对接口的编程成本太低,因为减少供应商依赖性提供了如此巨大的好处.
您是否使用供应商特定的数据类或接口?
编辑:总结下面的一些答案,并在阅读时提出一些想法.
使用接口实现供应商中立的可能陷阱:
使用接口的正面理由:
是否有一个SASS扩展,它将采用SASS样式表,找到中性属性(例如border-radius
)并自动输出所有特定于供应商的属性(例如-webkit-border-radius
等)?
我真的不想手动创建所有mixins,也不想手动编写代码.我敢肯定必须有这样的扩展,但我找不到它.救命?