摆脱WCF数据服务的紧耦合

本文关键字:耦合 服务 WCF 数据 摆脱 | 更新日期: 2023-09-27 17:50:41

我有一个WCF数据服务,它通过HTTP公开我的数据库。

我意识到,在将来,如果我的数据库发生变化,客户端也需要更新,这意味着我的数据库与客户端紧密耦合。

我如何保持WCF数据服务的优点(它可以轻松地通过http公开数据,不需要太多的努力),并且仍然具有低耦合?

摆脱WCF数据服务的紧耦合

计算机科学中的任何问题都可以通过添加间接层来解决

Wheeler进球居然

你应该把你的服务包装在一个抽象层中——我相信这叫做服务代理模式。

然后,你所有的客户端都将与代理交互,如果你的服务在未来发生变化,你只需要改变代理——当然,除非服务的工作方式发生了根本性的变化,在这种情况下,你自然必须改变你的客户端。

我从未使用过WCF,所以这个答案可能不适用于这项技术。但是,您能不能将所有DB逻辑封装在客户机与之交互的方法或类中呢?然后,您可以在方法/类中更改新DB事件中的逻辑,只要公共合约是相同的,那么您应该不必更新客户端代码。

例如:

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
     }
 }

除了在另一个注释中提到的抽象级别之外,您应该使用repository。

http://martinfowler.com/eaaCatalog/repository.html

如果您正在使用实体框架通过WCF数据服务公开您的数据库,那么EF就是您的间接级别。它允许您更改数据库模式并保持相同的模型(这是WCF Data Services公开的)。