我有一个WCF数据服务,它通过HTTP公开我的数据库。
我意识到将来,如果我的数据库发生变化,客户端也需要更新,这意味着我已将数据库与客户端紧密耦合。
如何保持WCF数据服务的好处(它可以轻松地通过http公开数据而不需要太多努力)并且仍然具有低耦合性?
答案 0 :(得分:1)
我从未使用过WCF,所以这个答案可能不适用于这项技术。但是,您是否可以将所有数据库逻辑封装在客户端与之交互的方法或类中?然后,您可以在方法/类中的新数据库中更改逻辑,只要公共合同相同,您就不必更新客户端代码。
例如:
class Client
{
DatabaseClass DC = new DatabaseClass();
DC.PerformMethod(); //Blissfully unaware of the methods inner workings.
}
class DatabaseClass
{
public void PerformMethod()
{
//Encapsulate DB Logic here. If you need to change it, you can just change it here and the client needs to know nothing of it
}
}
答案 1 :(得分:1)
计算机科学中的任何问题都可以通过添加一个间接层来解决
-David Wheeler
您应该将服务包装在一个抽象层中 - 我相信这称为服务代理模式。
然后,您的所有客户都将与代理交互,如果您的服务将来发生变化,您只需更改代理 - 除非服务的工作方式发生根本性变化,在这种情况下您将拥有自然地改变你的客户。
答案 2 :(得分:1)
除了另一条评论中提到的抽象级别之外 - 您应该使用存储库。
答案 3 :(得分:0)
如果您使用Entity Framework通过WCF数据服务公开您的数据库,那么EF就是您的间接级别。它允许您更改数据库架构并保持相同的模型(这是WCF数据服务公开的内容)。