0

リモーティングを使用する古いコードが残っています。このコードをWCFにアップグレードする必要があります。

率直に言って、私はクライアントとサーバーが通信に使用するインターフェースを再設計する方法に固執しています。次のようになります。

public interface IDDCEngine
    {
        ReadDiagnosticEntirePointValuesResponse ReadDiagnosticEntirePointValues(string host);
        GetEntirePointListResponse GetEntirePointList(string host);

        SetSerialPortListResponse SetSerialPointList(string host, SetSerialPortList serialPortList);
        SetNationalListResponse SetNationalList(string host, SetNationalList nationalList, int count);
        SetModbusListResponse SetModbusList(string host, SetModbusList modbusList, int count);

        SetIOPointListResponse SetIOPointList(string host, SetIOPoint pointList, int count);
        GetIOPointResponse GetIOPointList(string host);
        SetLogicListResponse SetLogicList(string host, SetLogicList logicList, int count);
        GetDDCVersionResponse GetDDCVersion(string host);
        GetDDCUptimeResponse GetDDCUptime(string host);
        GetDDCCPUMemoryStatusResponse GetDDCCPUMemoryStatus(string host, int count);
        ...about 20 more interfaces
    }

そして、要求/応答のクラス:

[Serializable]
    public class SetIOPoint
    {
        public string[] pointidentifier;
        public string[] pointname;
        public string[] pointaddress;
        public string[] pointtype;
        public string[] devicetype;
        public string[] description;
        public string[] backup;
        public string[] relinquishdefault;
        public string[] unit;
        public string[] minpresvalue;
        public string[] maxpresvalue;
        public string[] correctvalue;
        public string[] covenable;
        public string[] covincrement;
        public string[] covtarget;
        public string[] covlifetime;
        public string[] historyenable;
        public string[] historyincrement;
        public string[] alarmenable;
        public string[] highlimit;
        public string[] lowlimit;
        public string[] polarity;
        public string[] inactivetext;
        public string[] activetext;
        public string[] feedbackenable;
        public string[] feedbacktime;
        public string[] numofstates;
        public string[] statetext;
    }

    [Serializable]
    public class GetIOPointResponse
    {
        public string[] pointidentifier;
        public string[] pointname;
        public string[] pointaddress;
        public string[] pointtype;
        public string[] devicetype;
        public string[] description;
        public string[] backup;
        public string[] relinquishdefault;
        public string[] unit;
        public string[] minpresvalue;
        public string[] maxpresvalue;
        public string[] correctvalue;
        public string[] covenable;
        public string[] covincrement;
        public string[] covtarget;
        public string[] covlifetime;
        public string[] historyenable;
        public string[] historyincrement;
        public string[] alarmenable;
        public string[] highlimit;
        public string[] lowlimit;
        public string[] polarity;
        public string[] inactivetext;
        public string[] activetext;
        public string[] feedbackenable;
        public string[] feedbacktime;
        public string[] numofstates;
        public string[] statetext;
    }

    [Serializable]
public class RequestDDCRebootResponse
{
    public string result;
}

[Serializable]
public class GetDDCCurrenttimeResponse
{
    public string result;
}

[Serializable]
public class StartDDCBackupResponse
{
    public string result;
}

[Serializable]
public class EndDDCBackupResponse
{
    public string result;
}

[Serializable]
public class StartDDCRestoreResponse
{
    public string result;
}

[Serializable]
public class EndDDCRestoreResponse
{
    public string result;
}
...List goes ON

かなりひどく書かれたインターフェースとデータ構造。何百万もの操作契約を定義する必要がないように、インターフェースとデータ構造を書き直したいと思います。

WCFのソリッドインターフェイスとデータ構造設計の戦略に関する適切な推奨事項はありますか?

4

1 に答える 1

1

この記事を見てください:

保守性の高い WCF サービスの作成

この記事では、コマンドクエリに基づいてしっかりと設計されたアーキテクチャ パターン上に、WCF サービスを非常に薄いレイヤーとして作成する方法について説明します。このコマンド/クエリ スタイルのプログラミングを使用する場合、WCF サービスは、新しい操作が追加された場合でも変更する必要のない非常に小さなインフラストラクチャ コードとして定義できます。

于 2012-09-14T07:06:48.740 に答える