Este repositório contém
A estrutura para aplicativos C ++ robustos é chamada de Robust Services Core (RSC). O RSC colocará seu projeto no caminho certo e o saltará se você estiver desenvolvendo ou reengendo um sistema cujos requisitos podem ser caracterizados como
Os padrões de design usados no RSC tornam os desenvolvedores mais produtivos. Eles foram comprovados em produtos de telecomunicações, incluindo (da experiência do autor como seu arquiteto de software principal) o servidor de rede principal que lida com todas as chamadas na rede celular da AT&T. Uma linguagem padrão que resume os padrões aparece no segundo capítulo do software robusto de comunicação . A visão geral do software RSC do documento descreve qual deles está disponível atualmente neste repositório e aponta para os arquivos de código primário que os implementam, e este tutorial fornece mais informações sobre algumas delas.
O desenvolvimento do RSC foi um pouco desviado pelo desenvolvimento de ferramentas de análise estática C ++. Essas ferramentas detectam violações de várias diretrizes de design de C ++, como as encontradas no C ++ eficaz de Scott Meyers. Eles também analisam as diretivas #include para determinar quais adicionar ou excluir. O editor deles permite que você corrija de maneira fácil e interativa muitos dos avisos que a ferramenta gera. Mesmo se você não estiver desenvolvendo aplicativos com o RSC, poderá achar essas ferramentas úteis. Uma visão geral deles é fornecida aqui.
A inclusão de um aplicativo com uma estrutura serve para testá -lo e ilustrar seu uso. Este repositório inclui, portanto, um aplicativo POTS (serviço telefônico comum simples). POTS foram escolhidos por vários motivos. Por um lado, o autor teve uma vasta experiência com aplicações semelhantes enquanto trabalhava na indústria de telecomunicações. Mais importante, porém, os POTs são uma aplicação não trivial, mas todos têm uma compreensão razoável do que faz. Portanto, você deve descobrir o que o código do POTS está fazendo sem ler uma grande especificação. Uma visão geral do aplicativo POTS é fornecida aqui.
Em 2002, um grupo no Reino Unido começou a projetar um protocolo que permita que os bots de software joguem a diplomacia do jogo de tabuleiro. O site deles possui vários links e downloads úteis, entre os quais é executável para um servidor de diplomacia. Os bots fazem login nesse servidor, que envia o estado do jogo, permite que eles se comuniquem usando o protocolo e julgam os movimentos que eles enviam. O site deles também fornece software para o desenvolvimento de bots. Decidi refatorar este software, desacoplá -lo do Windows e trazê -lo mais alinhado com o C ++ 11. Isso ajudou o RSC a evoluir a apoiar melhor os clientes independentes que usam IP (TCP, neste caso). O software resultante está disponível no diretório DIP e é descrito em mais detalhes aqui.
Esta página fornece uma visão geral do RSC. Outra página lista documentos que entram em muito mais profundidade em muitos tópicos.
Baixe um dos lançamentos. O código cometido desde a versão mais recente está em andamento e pode ser instável ou incompleto; portanto, o download do menu suspenso Code▾ na página principal não é recomendado.
Aviso
Para operação adequada, o RSC deve ser iniciado a partir de um diretório abaixo do seu diretório SRC . Veja o guia de instalação.
Rsc
Se você não deseja criar o RSC, os executáveis de depuração e liberação são fornecidos com cada liberação.
Os diretórios que contêm o código -fonte do RSC e as dependências entre eles estão listados nos comentários que precedem a implementação do main . Cada um desses diretórios é construído como uma biblioteca estática separada, com main residente em seu próprio diretório.
O RSC é desenvolvido usando o Visual Studio 2022 e construído usando CMake, conforme descrito aqui. As opções de construção do Windows para RSC são descritas aqui. Os arquivos .vcxproj do Visual Studio não são mais usados durante as compilações, portanto foram removidas do repositório.
Durante a inicialização, o RSC exibe cada módulo à medida que é inicializado. (Um módulo é equivalente a uma biblioteca estática.) Após a inicialização de todos os módulos, o prompt de CLI nb> parece indicar que os comandos da CLI no diretório NB estão disponíveis. O que está escrito no console durante a inicialização é mostrado aqui e uma lista de todos os comandos da CLI é fornecida aqui.
Se você inserir >read saveinit como o primeiro comando da CLI, é gerado um rastreamento de função da inicialização, que começa antes mesmo da invocação do main . Este rastreamento será muito parecido com isso. Cada função que aparece em um traço invocado Debug::ft , que registra o seguinte:
Toda a saída aparece no diretório ../<dir>/ excluded/output, onde <dir> é o diretório imediatamente acima do diretório SRC . Além de qualquer saída específica solicitada, como o rastreamento de inicialização, todas as sessões da CLI produzem
A string numérica Yymmdd-HHMMSS é anexada aos nomes desses arquivos para gravar o tempo em que o sistema inicializado (para o arquivo de console e o arquivo de log inicial) ou o tempo do reinício mais recente (para um arquivo de log subsequente).
A maneira mais fácil de usar o RSC como estrutura é criar uma biblioteca estática abaixo do diretório SRC da RSC. O diretório de aplicativos é fornecido para esse fim. Basta usar qualquer subconjunto de RSC que seu aplicativo precise. Isso sempre incluirá a NodeBase de espaço para nome (o diretório NB ). Também pode incluir NetworkBase (o diretório NW ) e SessionBase (o diretório SB ). Usando um novo espaço para nome para o seu aplicativo é recomendado.
Se você colocar seu código em outro lugar, o RSC não poderá encontrar diretórios importantes quando você o iniciar, conforme descrito no guia de instalação. Você precisará modificar o Element::RscPath para que ele possa encontrar o diretório que contenha o diretório de entrada . Você também deve adicionar o diretório de ajuda do RSC a esse diretório.
Para inicializar seu aplicativo, deriva do Module . Por exemplo, consulte NbModule , que inicializa NodeBase . Altere CreateModules para que também instancie seu módulo, bem como os outros módulos que você precisa em sua construção.
Para interagir com o seu aplicativo, deriva do CliIncrement . Para um exemplo, consulte NbIncrement , o incremento para NodeBase . Instanciar seu incremento de CLI na função Startup do seu módulo. Quando você inicia o RSC, você pode acessar os comandos em seu incremento através da CLI digitando >incr , onde incr é a abreviação que o construtor do seu incremento passou para o construtor do CliIncrement .
A maioria dos arquivos no diretório de entrada são scripts de teste. O documento que descreve o aplicativo POTS também discute seus testes, que exercem uma parte considerável do software da RSC. Alguns outros testes são de natureza mais tática:
Um conjunto de scripts testa a capacidade da rede de segurança da classe Thread . Uma página dedicada descreve esses testes e o status atual de cada um.
A entrada na CLI acessa o incremento >nt NT" (um conjunto de comandos da CLI). Ele fornece comandos para testar funções nos interfaces BuddyHeap , SlabHeap , LeakyBucketCounter , Q1Way , Q2Way e Registry .
O RSC está disponível gratuitamente nos termos da licença pública geral da GNU, a versão 3, que basicamente diz que você também deve publicar seu próprio software, bem como suas alterações no RSC. Se você estiver desenvolvendo software comercial que deseja manter proprietários, a licença GPLV3 também permite que o RSC seja licenciado nos termos de outra licença aprovada pela Free Software Foundation. Algumas dessas licenças permitem que seu software permaneça proprietário. No entanto, seria necessária uma compensação e quaisquer alterações que você fizer no próprio RSC (correções e aprimoramentos de bugs) ainda teriam que ser publicados.
Como contribuir com o RSC é descrito aqui.
O Github agora permite que você patrocine projetos. Um botão "patrocinador" está localizado na parte superior desta página.