[英]Avoid exposing too many assemblies to client consuming WCF service
我需要一些指導。 我有一個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服務的最終客戶端。
有沒有解決的辦法?
它非常直接 - 在合同中定義IFooable,而不是在域中。
這里的邏輯是,暴露給客戶的任何東西(根據定義)是合同或合同的一部分,而不是域實體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.