Не подвергайте слишком много сборок клиентскому сервису WCF. - PullRequest
0 голосов
/ 21 сентября 2011

Мне нужно немного руководства здесь. У меня есть служба WCF, которая является частью более крупного решения. В настоящее время конечный потребитель должен ссылаться на слишком много сборок из-за проблем наследования. Например, вот моя основная настройка проекта:

MyProject.Domain

namespace MyProject.Domain
{
    public interface IFooable{}

    public class Foo : IFooable{}
}

MyProject.Contracts

namespace MyProject.Contracts
{
    [DataContract]
    public class FooData : IFooable{}

    [ServiceContract]
    public class IFooService
    {
        IEnumerable<FooData> GetFoos();
    }
}

MyProject.Proxies

namespace MyProject.Proxies
{
    public class WCFClient{}
}

Проблема заключается здесь:

class ConsumerCode
{
    private WCFClient = new WCFClient();

    void consumeService()
    {
        // Compiler error. No reference to MyProject.Domain.IFooable
        var foos = WCFClient.GetFoos();
    }

Это означает, что конечный потребитель, который использует объект FooData , должен будет также включать ссылку на MyProject.Domain , которая воняет, потому что мне не нужно раскрывать бизнес Логический уровень для конечного клиента службы WCF.

Есть ли способ обойти это?

1 Ответ

2 голосов
/ 21 сентября 2011

Это довольно просто - определить IFooable в контрактах, а не в домене.

Логика здесь в том, что все, что подвергается клиенту, является (по определению) договором или частью договора, а не субъектом домена.

...