【发布时间】:2011-09-21 18:54:11
【问题描述】:
我需要一些指导。我有一个 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 服务的最终客户端的业务逻辑层。
有没有办法解决这个问题?
【问题讨论】:
-
通过 Contracts.FooData 实现 Domain.IFooable 有什么好处吗?如果您删除此依赖项,则不会公开您的域命名空间对象。
标签: c# wcf web-services assemblies business-logic