そのため、C# で特定のニーズに合わせてサーバーを作成し、このサーバーを管理するための快適な方法を探しています。最初は単純な Web ベースのマネージャーでしたが、これはスケーラブルなソリューションではありません。サーバーのアーキテクチャが日々変化しているためです。これで、最も快適でスケーラブルなソリューションがコマンド ライン インターフェイスであることがわかりました。ただし、プリミティブな IF\CASE ( C# アプリケーション内のコマンド ライン インターフェイス) 構造はまったく使用したくありません。だから私の質問があります:
たとえば、サーバークラスがあります:
public class Server
{
private int succes_interval;
private int fail_interval;
private int threshold;
private int failed_requests;
private int request_timeout;
private int update_timer;
private string updt_path;
private DateTime start_time;
private bool snmp_enabled;
private int snmp_port;
[XmlIgnore()]
public string Version { get { return Assembly.GetEntryAssembly().GetName().Version.ToString(); } }
[XmlIgnore()]
public string Path { get { return Assembly.GetEntryAssembly().Location; } }
[XmlIgnore()]
public string ServerName { get { return System.Environment.MachineName.ToLower(); } }
[XmlIgnore()]
public int SuccessInterval { get { return succes_interval; } }
public void SetSuccessInterval(int interval) { succes_interval = interval; }
[XmlIgnore()]
public int FailInterval { get { return fail_interval; } }
public void SetFailInterval(int interval) { fail_interval = interval; }
[XmlIgnore()]
public int FailThreshold { get { return threshold; } }
public void SetFailThreshold(int thresh) { threshold = thresh; }
[XmlIgnore()]
public int FailedRequests { get { return failed_requests; } }
public void SetFailedRequests(int value) { threshold = value; }
[XmlElement("RequestTimeout")]
public int RequestTimeout { get { return request_timeout; } set { request_timeout = value; } }
[XmlIgnore()]
public int UpdateCheckInterval { get { return update_timer; } set { update_timer = value; } }
[XmlElement("UpdatePath")]
public string UpdatePath { get { return updt_path; } set { updt_path = value; } }
[XmlElement("SNMPEnabled")]
public bool SNMPEnabled { get { return snmp_enabled; } set { snmp_enabled = value; } }
[XmlElement("SNMPPort")]
public int SNMPPort { get { return snmp_port; } set { snmp_port = value; } }
}
コマンド「サーバーしきい値50」を渡して、実行時にこの変数を設定したいと考えています。コマンドをどのように (Telnet\ssh\http\whateverprotocol) に渡すかは問題ではありません。または、たとえば、コマンド「show server」は、このオブジェクト内のすべての変数を一覧表示します。
私はそれがツリーアプローチでなければならないことを理解していますが、誰かがこれを実装するための方向性を教えてくれますか?