このリポジトリには含まれています
堅牢なC ++アプリケーションのフレームワークは、ロバストサービスコア(RSC)と呼ばれます。 RSCは、要件を次のように特徴づけることができるシステムを開発またはリエンジニアリングしている場合、プロジェクトを正しいパスに配置し、ジャンプスタートします。
RSCで使用される設計パターンにより、開発者がより生産的になります。彼らは、(著者のチーフソフトウェアアーキテクトとしての経験から)AT&Tのセルラーネットワークのすべての呼び出しを処理するコアネットワークサーバーを含む、フラッグシップテレコム製品で証明されています。パターンを要約するパターン言語は、堅牢な通信ソフトウェアの第2章に表示されます。ドキュメントRSCソフトウェアの概要では、それらのどれがこのリポジトリで利用可能であるかを説明し、それらを実装するプライマリコードファイルを指しています。このチュートリアルは、それらのいくつかに関するより多くの情報を提供します。
RSCの開発は、C ++静的分析ツールの開発によってやや脇道にされています。これらのツールは、Scott Meyersの効果的なC ++に見られるような、さまざまなC ++設計ガイドラインの違反を検出します。また、 #includeディレクティブを分析して、追加または削除するディレクティブを決定します。その後、編集者を使用すると、ツールが生成する警告の多くを簡単かつインタラクティブに修正できます。 RSCを使用してアプリケーションを開発していなくても、これらのツールが便利であることがわかります。それらの概要はこちらで提供されています。
フレームワークを備えたアプリケーションを含めると、それをテストし、その使用を説明します。したがって、このリポジトリには、POTS(プレーン通常の電話サービス)アプリケーションが含まれています。いくつかの理由でポットが選ばれました。一つには、著者は通信業界で働いている間、同様のアプリケーションで豊富な経験を積んでいました。しかし、さらに重要なことは、Potsは自明ではないアプリケーションですが、誰もがそれが何をするかについて合理的な理解を持っています。したがって、大規模な仕様を読むことなく、POTSコードが何をしているかを把握できるはずです。 POTSアプリケーションの概要はこちらから提供されています。
2002年、英国のグループは、ソフトウェアボットがボードゲーム外交をプレイできるようにするプロトコルの設計を開始しました。彼らのウェブサイトには、さまざまな便利なリンクとダウンロードがあり、その中には外交サーバーの実行可能ファイルがあります。ボットはこのサーバーにログインします。このサーバーは、ゲームの状態を送信し、プロトコルを使用して互いに通信することができ、提出する動きを裁定します。彼らのウェブサイトは、ボットを開発するためのソフトウェアも提供しています。このソフトウェアをリファクタリングし、Windowsから切り離し、C ++ 11に沿ってさらに並べることにしました。これにより、RSCはIP(この場合はTCP)を使用するスタンドアロンクライアントをよりよくサポートするようになりました。結果のソフトウェアはDIPディレクトリで利用でき、ここでさらに詳細に説明されています。
このページでは、RSCの概要を説明します。別のページには、多くのトピックについてはるかに深くなるドキュメントがリストされています。
リリースの1つをダウンロードしてください。最新リリースが進行中であり、不安定または不完全な場合があるため、コードがコミットされるため、メインページのコードドロップダウンメニューからダウンロードすることはお勧めしません。
警告
適切な操作のために、RSCはSRCディレクトリの下のディレクトリから起動する必要があります。インストールガイドを参照してください。
RSC
RSCを構築したくない場合は、各リリースでデバッグおよびリリース実行可能ファイルが提供されます。
RSCのソースコードとそれらの間の依存関係を含むディレクトリは、 mainの実装に先行するコメントにリストされています。これらの各ディレクトリは、個別の静的ライブラリとして構築されており、 main独自のディレクトリに存在します。
RSCは、Visual Studio 2022を使用して開発され、ここで説明するようにCmakeを使用して構築されています。 RSCのWindowsビルドオプションについて説明します。 Visual Studioの.vcxprojファイルはビルド中に使用されなくなるため、リポジトリから削除されました。
初期化中、RSCは初期化されているため、各モジュールを表示します。 (モジュールは静的ライブラリに相当します。)すべてのモジュールが初期化された後、CLIプロンプトnb>は、 NBディレクトリ内のCLIコマンドが利用可能であることを示しているように見えます。起動中にコンソールに書かれたものをここに示し、すべてのCLIコマンドのリストをここに提供します。
入力>read saveinitと、 mainの呼び出しの前でさえ開始する初期化の関数トレースが生成されます。このトレースはこのように見えます。このようなトレースが呼び出されたDebug::ftに表示される各関数は、以下を記録します。
すべての出力はディレクトリに表示されます。//<dir>/ excluded/output。ここで、 <dir>はSRCディレクトリのすぐ上のディレクトリです。初期化トレースなど、要求する特定の出力に加えて、すべてのCLIセッションが生成します
数値文字列yymmdd-hhmmssは、これらのファイルの名前に追加され、システムが初期化された時間(コンソールファイルと初期ログファイルの場合)または最新の再起動の時間(以降のログファイルの場合)を記録します。
RSCをフレームワークとして使用する最も簡単な方法は、RSCのSRCディレクトリの下に静的ライブラリを作成することです。この目的のためにアプリディレクトリが提供されます。アプリケーションが必要とするRSCのサブセットを使用するだけです。これには、名前空間NodeBase ( NBディレクトリ)が常に含まれます。また、 NetworkBase ( NWディレクトリ)とSessionBase ( SBディレクトリ)も含まれる場合があります。アプリケーションに新しい名前空間を使用することをお勧めします。
他の場所にコードを置くと、インストールガイドに記載されているように、RSCはそれを起動するときに重要なディレクトリを見つけることができません。その後、 Inputディレクトリを含むディレクトリを見つけることができるように、関数Element::RscPathを変更する必要があります。また、RSCのヘルプディレクトリをそのディレクトリに追加する必要があります。
アプリケーションを初期化するには、 Moduleから派生します。たとえば、 NodeBaseを初期化するNbModule参照してください。 CreateModules変更して、モジュールやビルドで必要な他のモジュールもインスタンス化します。
アプリケーションと対話するには、 CliIncrementから派生します。たとえば、 NbIncrement 、 NodeBaseの増分を参照してください。モジュールのStartup機能にCLI増分をインスタンス化します。 RSCを起動すると、 >incrを入力してCLIを介して増分のコマンドにアクセスできます。ここではincr増分がCliIncrementのコンストラクターに渡された略語です。
入力ディレクトリ内のほとんどのファイルはテストスクリプトです。 POTSアプリケーションを説明するドキュメントでは、RSCのソフトウェアのかなりの部分を行使するテストについても説明しています。他のいくつかのテストは本質的により戦術的です:
一連のスクリプトは、 Threadクラスのセーフティネット機能をテストします。専用のページでは、これらのテストとそれぞれの現在のステータスについて説明します。
CLIに>ntを入力すると、「NT」増分(CLIコマンドのセット)にアクセスします。 BuddyHeap 、 SlabHeap 、 LeakyBucketCounter 、 Q1Way 、 Q2Way 、およびRegistryインターフェイスで機能をテストするコマンドを提供します。
RSCは、GNU General Public Licenseのバージョン3の条件の下で自由に利用できます。これは、基本的に、独自のソフトウェアとRSCへの変更も公開する必要があると述べています。独自の維持する商用ソフトウェアを開発している場合、GPLV3ライセンスは、Free Software Foundationによって承認された別のライセンスの条件の下でRSCをライセンスすることもできます。これらのライセンスの一部により、ソフトウェアは独自のままであることができます。ただし、補償が必要であり、RSC自体(バグ修正と拡張機能)に対して行った変更はまだ公開する必要があります。
RSCに貢献する方法については、ここで説明します。
GitHubでは、プロジェクトをスポンサーすることができます。 「スポンサー」ボタンは、このページの上部にあります。