Этот репозиторий содержит
Структура для надежных приложений C ++ называется Contruck Services Core (RSC). RSC поставит ваш проект на правильный путь и запустите его, если вы разрабатываете или реинжинирируете систему, требования которых можно охарактеризовать как
Паттерны дизайна, используемые в RSC, делают разработчиков более продуктивными. Они были доказаны в флагманских телекоммуникационных продуктах, в том числе (из опыта автора в качестве главного архитектора программного обеспечения) основной сетевой сервер, который обрабатывает все вызовы в сотовой сети AT & T. Язык шаблонов, который суммирует шаблоны, появляется во второй главе надежного программного обеспечения для коммуникаций . Обзор программного обеспечения Document RSC описывает, какие из них в настоящее время доступны в этом репозитории, и указывает на файлы первичного кода, которые их реализуют, и этот учебник предоставляет больше информации о некоторых из них.
Разработка RSC была несколько отвлечена из -за разработки инструментов статического анализа C ++. Эти инструменты обнаруживают нарушения различных руководящих принципов проектирования C ++, таких как факты, которые можно найти в эффективном C ++ Scott Meyers. Они также анализируют директивы #include , чтобы определить, какие из них добавить или удалить. Затем их редактор позволяет легко и интерактивно исправлять многие предупреждения, которые генерирует инструмент. Даже если вы не разрабатываете приложения с RSC, вы можете найти эти инструменты полезными. Обзор их представлен здесь.
Включение приложения со структурой служит для проверки его и иллюстрации его использования. Таким образом, этот репозиторий включает в себя приложение POTS (простая обычная телефонная служба). Горшки были выбраны по нескольким причинам. Во -первых, у автора был обширный опыт работы с аналогичными приложениями, работая в телекоммуникационной индустрии. Но что еще более важно, POTS является нетривиальным применением, но у каждого есть разумное понимание того, что он делает. Поэтому вы должны быть в состоянии выяснить, что делает код POTS, не читая большую спецификацию. Обзор приложения POTS представлен здесь.
В 2002 году группа в Великобритании начала разрабатывать протокол, который позволяет программным ботам воспроизводить дипломатию настольной игры. Их веб -сайт имеет различные полезные ссылки и загрузки, среди которых исполняется для сервера дипломатии. Боты войдут в этот сервер, который отправляет им состояние игры, позволяет им общаться друг с другом, используя протокол, и выдвигает решения, которые они отправляют. Их веб -сайт также предоставляет программное обеспечение для разработки ботов. Я решил реорганизовать это программное обеспечение, отделить его от Windows и привнести его больше в соответствии с C ++ 11. Это помогло RSC развиваться, чтобы лучше поддерживать автономных клиентов, которые используют IP (TCP, в данном случае). Полученное программное обеспечение доступно в каталоге DIP и описано в некоторых дополнительных деталях здесь.
Эта страница содержит обзор RSC. На другой странице перечислены документы, которые входят в гораздо большую глубину по многим темам.
Скачать один из релизов. Код, совершаемый с момента последнего выпуска, находится в процессе работы и может быть нестабильным или неполным, поэтому загрузка из раскрывающегося меню Code▾ на главной странице не рекомендуется.
Предупреждение
Для правильной работы RSC должен быть запущен из каталога под его каталогом SRC . Смотрите руководство по установке.
Rsc
Если вы не хотите создавать RSC, отладки и выпуска будут предоставлены исполняемые файлы с каждым выпуском.
Справочники, которые содержат исходный код RSC и зависимости между ними, перечислены в комментариях, которые предшествуют реализации main . Каждый из этих каталогов построен как отдельная статическая библиотека, с main проживанием в собственном каталоге.
RSC разработан с использованием Visual Studio 2022 и создан с использованием CMAKE, как описано здесь. Варианты сборки Windows для RSC описаны здесь. Файлы Visual Studio .vcxproj больше не используются во время сборки, поэтому они были удалены из репозитория.
Во время инициализации RSC отображает каждый модуль при его инициализировании. ( Модуль эквивалентен статической библиотеке.) После того, как все модули инициализированы, подсказка CLI nb> , по -видимому, указывает на то, что CLI в каталоге NB доступны. То, что записано на консоли во время запуска, отображается здесь, и здесь предоставляется список всех команд CLI.
Если вы вводите >read saveinit в качестве первой команды CLI, функциональная трасса инициализации, которая начинается еще до вызова main , генерируется. Этот след будет выглядеть так. Каждая функция, которая появляется в таком следе, вызванном Debug::ft , которая записывает следующее:
Весь вывод появляется в каталоге ../<dir>/ excluded/output, где <IR> является каталогом непосредственно над каталогом SRC . В дополнение к любому конкретному выводу, который вы запрашиваете, например, след инициализации, каждый сеанс CLI производит
Числовой строки YYMMDD-HHMMSS добавляется к именам этих файлов, чтобы записать время, когда система инициализируется (для файла консоли и исходного файла журнала ) или времени самого последнего перезапуска (для последующего файла журнала ).
Самый простой способ использования RSC в качестве структуры - создать статическую библиотеку ниже каталога RSC SRC . Справочник приложений предоставлен для этой цели. Просто используйте любое подмножество RSC, которое нужно вашему приложению. Это всегда будет включать в себя NodeBase пространства имен (каталог NB ). Это также может включать в себя NetworkBase (каталог NW ) и SessionBase (Directory SB ). Рекомендуется использовать новое пространство имен для вашего приложения.
Если вы поместите свой код в другом месте, RSC не сможет найти важные каталоги при его запусках, как описано в Руководстве по установке. Затем вам нужно будет изменить Element::RscPath , чтобы он мог найти каталог, который содержит входной каталог. Вы также должны добавить справочный справочник RSC в этот каталог.
Чтобы инициализировать ваше приложение, выведите из Module . Для примера см. NbModule , который инициализирует NodeBase . Измените CreateModules так, чтобы он также экземпляр ваш модуль, а также другие модули, которые вам нужны в вашей сборке.
Чтобы взаимодействовать с вашим приложением, выведите из CliIncrement . Например, см. NbIncrement , приращение NodeBase . Создайте приращение CLI в функции Startup вашего модуля. Когда вы запускаете RSC, вы можете получить доступ к командам с помощью вашего приращения через CLI, введя >incr , где incr - это аббревиатура, которую конструктор вашего приращения передал конструктору CliIncrement .
Большинство файлов в каталоге ввода являются тестовыми сценариями. В документе, который описывает приложение POTS, также обсуждается его тесты, которые осуществляют значительную часть программного обеспечения RSC. Некоторые другие тесты носят более тактический характер:
Набор сценариев проверяет возможности безопасности в классе Thread . Выделенная страница описывает эти тесты и текущее состояние каждого из них.
Ввод >nt в CLI обращается к увеличению «NT» (набор команд CLI). Он предоставляет команды для тестирования функций в BuddyHeap , SlabHeap , LeakyBucketCounter , Q1Way , Q2Way и Registry .
RSC свободно доступен в соответствии с условиями общей публичной лицензии GNU, версии 3, которая в основном говорит, что вы также должны публиковать свое собственное программное обеспечение, а также свои изменения в RSC. Если вы разрабатываете коммерческое программное обеспечение, которое хотите сохранить собственность, лицензия GPLV3 также позволяет RSC иметь лицензию в соответствии с условиями другой лицензии, утвержденной Фондом свободного программного обеспечения. Некоторые из этих лицензий позволяют вашему программному обеспечению оставаться собственностью. Тем не менее, потребуется компенсация, и любые изменения, которые вы вносите в сам RSC (исправления ошибок и улучшения), все равно должны быть опубликованы.
Как внести свой вклад в RSC здесь описано.
GitHub теперь позволяет вам спонсировать проекты. Кнопка «Спонсор» расположена в верхней части этой страницы.