簡體   English   中英

避免將太多程序集暴露給客戶端使用WCF服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM