2

わかりましたので、私のビジネスは、データを送信するためにさまざまなサードパーティと常に契約を結んでいます。これらのサード パーティはそれぞれ、異なる統合手法を使用しています。たとえば、一部のサード パーティは、クエリ文字列データを使用した HTTP GET のみを受け入れます。他のものは XML フォーム ポストを使用しますが、WCF サービスを使用する必要があるものもあります。

各サードパーティに同じデータを投稿しますが、唯一の大きな違いはフィールド名のマッピングが異なることです。たとえば、「ApplicationID」を使用するものもあれば、「AppRef」を使用するものもあります。

新しいコードを記述しなくても、誰かがサードパーティと動的に統合できるようにアプリケーションを構築する方法を考え出そうとしています。マッピングは、データベース内のテーブルのマッピングなどによって処理できますが、私の最大の問題は、主に wcf などのさまざまなサードパーティ サービスと統合する方法を考えることです。

これは、データ提供を専門とするビジネスではかなり一般的な問題だと思いますが、共通のアプローチがあるのだろうか?

4

2 に答える 2

1

データ マッピングやトランスポートのような複雑なものを一般化しようとするのは避けたいと思います。最終的に、コードは単純に次のようになっている場合よりも理解しにくくなります。

public interface IDataExportTarget
{
    async Task ExportDataAsync(YourDataType data);
}

データ転送メカニズム (WCF、RESTful インターフェイスなど) が異なるだけでなく、データ形式 (CSV、XML、JSON など) や、転送中にデータをパッケージ化する方法も異なる場合があります。確かに、共通のエクスポートに関する懸念がある場合は、共通の抽象基本クラスを持つことができます。

public abstract class XmlDataExportTarget : IDataExportTarget
{
    public async Task ExportData(YourDataType data)
    {
        var xml = MapDataToXml(data);
        await SendXmlDataAsync(xml);
    }

    protected abstract XDocument MapDataToXml(YourDataType data);
    protected abstract async Task SendXmlDataAsync(XDocument data);
}

...しかし、これは、コードが原因で同じことを繰り返していることがわかった場合にのみ行う必要があります。

于 2013-06-12T19:01:16.563 に答える