избавиться от жесткой связи службы данных wcf - PullRequest
4 голосов
/ 20 апреля 2011

У меня есть служба данных WCF, которая выставляет мою базу данных по HTTP.

Я понял, что в будущем, если моя база данных изменится, клиенты также должны будут обновляться, что означает, что я тесно связанмоя база данных с клиентами.

Как сохранить преимущества службы данных WCF (она может легко предоставлять данные через http без особых усилий) и при этом иметь низкую связь?

Ответы [ 4 ]

1 голос
/ 20 апреля 2011

Любую проблему в информатике можно решить, добавив слой косвенности

- Дэвид Уилер

Вы должны обернуть свой сервис в слой абстракции - яПолагайте, что это называется шаблоном прокси-сервера службы.

Тогда все ваши клиенты будут взаимодействовать с прокси-сервером, и если ваша служба изменится в будущем, вам просто нужно будет изменить прокси-сервер - если, конечно, не произойдут фундаментальные изменениякак работает сервис, в этом случае вам, естественно, придется сменить клиента.

1 голос
/ 20 апреля 2011

В дополнение к уровню абстракции, указанному в другом комментарии, вы должны использовать репозитории.

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

1 голос
/ 20 апреля 2011

Я никогда не использовал 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
     }

 }
0 голосов
/ 20 апреля 2011

Если вы используете Entity Framework для предоставления вашей БД через службы данных WCF, то EF - это ваш уровень косвенности.Это позволяет вам изменять схему БД и при этом сохранять ту же модель (что предоставляет WCF Data Services).

...