1

C# を使用して SVN の更新を実行しようとしています。これを行ういくつかの方法を知っていますが、どれが最適かはわかりません。

今、私は最善を定義することから始めます: CPU 使用率、帯域幅、または RAM 使用率を気にしない方法を探しています (これを VPS で実行するので、これらは通常すべて重要です。ただし、この例では、ゲーム サーバーがダウンしている間にアクションを実行します)。私は基本的に最速の方法を探しています。IE は、開始から終了までの時間が最も短いものです。

私が知っている方法は次のとおりです。

コンソール アプリケーションから .bat ファイルをプロセスとして実行します。StartParameters を使用してコマンドを実行し、ディレクトリを変更してリポジトリを更新します。アプリケーションの内部で SVN クエリを実行できるライブラリを作成またはダウンロードします。

さて、3 番目の作業がどれほど簡単かはわかりません。私は C# の専門家ではありません。趣味で少し時間があるだけです。これまでの私のコードは次のようになります。

class ServerLoader
{
    public static Process TFS = new Process();
    static void Main(string[] args)
    {
        Console.WriteLine("Welcome to XtrmJosh's control centre for TFS Console.");
        // Function generate processes
        Init();

        // Function begin process
        RunServer();

        string userInput = Console.ReadLine();
        if (userInput == "r,0")
        {
            StopServer();
            Init();
            RunServer();
        }
        else if (userInput == "s,0")
        {
            StopServer();
        }
        else if (userInput == "st,0")
        {
            Init();
            RunServer();
        }
        else if (userInput == "u,0")
        {
            StopServer();
            UpdateSVN();
            RunServer();
        }

    }

    static void UpdateSVN()
    {

    }

    static void Init()
    {
        //Initialise the TFS process
        Console.WriteLine("Initialising Process");
        TFS.StartInfo.FileName = "tfs.exe";
        Console.WriteLine("Preventing window creation");
        TFS.StartInfo.CreateNoWindow = true;
        Console.WriteLine("Redirecting Output");
        TFS.StartInfo.RedirectStandardOutput = true;
        Console.WriteLine("Stopping shell execution");
        TFS.StartInfo.UseShellExecute = false;
    }

    static void RunServer()
    {
        Console.WriteLine("Running Server");
        TFS.Start();
    }

    static void StopServer()
    {
        Console.WriteLine("Closing Process");
        TFS.Close();
        Console.WriteLine("Releasing Resources");
        TFS.Dispose();
    }
}

さらに下に進むと、このコードに TCP サーバーを追加するつもりであることは明らかだと思います。TCP サーバーは、リストされたコマンドをリッスンし、それらに基づいて動作します。私は TCP サーバー アプリケーションを書く練習を十分に行ってきたので、苦労する必要はありませんが、これは特定のことを行う方法の問題を引き起こします。ネットワークを使用している場合は、ライブラリを使用してレポを更新する方が簡単かもしれません。

また、この種のジョブに対してどの SVN クライアントが最も安定していると思いますか? また、それらがすべて同じように安定している場合、どの SVN クライアントがこのアクションを最も速く実行しますか? 参考までに、私は 3 つのファイルのみを更新しようとしています。2 つは小さな XML ドキュメントで、1 つはサイズが約 3 MB の大きなグラフィックス ベースのドキュメントで、すぐに 10 MB を超えるサイズになるため、速度は特に重要です。ゲーム サーバーを実行している場合、ダウンタイムを最小限に抑えたい...

ありがとう

4

0 に答える 0