リモーティングを使用する古いコードが残っています。このコードを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のソリッドインターフェイスとデータ構造設計の戦略に関する適切な推奨事項はありますか?