Este repositorio contiene
El marco para aplicaciones robustas de C ++ se conoce como el núcleo de servicios robusto (RSC). RSC colocará su proyecto en el camino correcto y lo iniciará si está desarrollando o reingineando un sistema cuyos requisitos pueden caracterizarse como
Los patrones de diseño utilizados en RSC hacen que los desarrolladores sean más productivos. Han sido probados en productos de telecomunicaciones insignia, que incluyen (de la experiencia del autor como su arquitecto principal de software) el servidor de red central que maneja todas las llamadas en la red celular de AT&T. Un lenguaje de patrones que resume los patrones aparece en el segundo capítulo del software de comunicaciones robusto . La descripción general del software del documento RSC describe cuál de ellos está actualmente disponible en este repositorio y señala los archivos de código primario que los implementan, y este tutorial proporciona más información sobre algunos de ellos.
El desarrollo de RSC se ha desviado de alguna manera por el desarrollo de herramientas de análisis estático C ++. Estas herramientas detectan violaciones de varias pautas de diseño de C ++, como las que se encuentran en C ++ efectivas de Scott Meyers. También analizan las directivas #include para determinar cuáles agregar o eliminar. Su editor le permite arreglar de manera fácil e interactiva muchas de las advertencias que genera la herramienta. Incluso si no está desarrollando aplicaciones con RSC, puede encontrar estas herramientas útiles. Aquí se proporciona una descripción general de ellos.
La inclusión de una aplicación con un marco sirve para probarlo e ilustrar su uso. Por lo tanto, este repositorio incluye una aplicación POTS (servicio telefónico ordinario simple). Pots fue elegido por varias razones. Por un lado, el autor tenía una amplia experiencia con aplicaciones similares mientras trabajaba en la industria de las telecomunicaciones. Pero lo más importante, POTS es una aplicación no trivial, pero todos tienen una comprensión razonable de lo que hace. Por lo tanto, debería poder averiguar qué está haciendo el código POTS sin leer una gran especificación. Aquí se proporciona una descripción general de la aplicación POTS.
En 2002, un grupo en el Reino Unido comenzó a diseñar un protocolo que permite a los bots de software jugar la diplomacia del juego de mesa. Su sitio web tiene varios enlaces y descargas útiles, entre los cuales se encuentra el ejecutable para un servidor de diplomacia. Los bots inician sesión en este servidor, que les envía el estado del juego, les permite comunicarse entre sí usando el protocolo y juzgar los movimientos que envían. Su sitio web también proporciona software para desarrollar bots. Decidí refactorizar este software, desacoplarlo de Windows y ponerlo más en línea con C ++ 11. Esto ayudó a RSC a evolucionar a apoyar mejor a los clientes independientes que usan IP (TCP, en este caso). El software resultante está disponible en el directorio DIP y se describe con más detalle aquí.
Esta página proporciona una descripción general de RSC. Otra página enumera documentos que tienen mucha más profundidad sobre muchos temas.
Descargue uno de los lanzamientos. El código comprometido ya que la última versión es trabajo en progreso y puede ser inestable o incompleto, por lo que no se recomienda descargar desde el menú desplegable Code▾ en la página principal.
Advertencia
Para un funcionamiento adecuado, el RSC debe iniciarse desde un directorio debajo de su directorio SRC . Consulte la guía de instalación.
RSC
Si no desea construir RSC, los ejecutables de depuración y lanzamiento se proporcionan con cada versión.
Los directorios que contienen el código fuente de RSC, y las dependencias entre ellos, se enumeran en los comentarios que preceden a la implementación de main . Cada uno de estos directorios se construye como una biblioteca estática separada, con main que reside en su propio directorio.
RSC se desarrolla con Visual Studio 2022 y se construye con CMake, como se describe aquí. Las opciones de compilación de Windows para RSC se describen aquí. Los archivos .vcxProj de Visual Studio ya no se usan durante las compilaciones, por lo que se eliminaron del repositorio.
Durante la inicialización, RSC muestra cada módulo a medida que se inicializa. (Un módulo es equivalente a una biblioteca estática). Después de que todos los módulos se hayan inicializado, el indicador CLI nb> parece indicar que los comandos CLI en el directorio NB están disponibles. Aquí se muestra lo que se escribe en la consola durante el inicio, y aquí se proporciona una lista de todos los comandos CLI.
Si ingresa >read saveinit como el primer comando CLI, se genera una traza de función de la inicialización, que se inicia incluso antes de la invocación de main . Este rastro se parecerá mucho a esto. Cada función que aparece en un rastro invocado Debug::ft , que registra lo siguiente:
Toda la salida aparece en el directorio ../ <dir>/excluded/output, donde <dir> es el directorio inmediatamente encima del directorio SRC . Además de cualquier salida específica que solicite, como la traza de inicialización, cada sesión de CLI produce
La cadena numérica YYMMDD-HHMMSS se agrega a los nombres de estos archivos para registrar el tiempo en que el sistema se inicializó (para el archivo de consola y el archivo de registro inicial) o el tiempo del reinicio más reciente (para un archivo de registro posterior).
La forma más fácil de usar RSC como marco es crear una biblioteca estática debajo del directorio SRC de RSC. El directorio de aplicaciones se proporciona para este propósito. Simplemente use cualquier subconjunto de RSC que necesite su aplicación. Esto siempre incluirá el espacio de nombres NodeBase (el directorio NB ). También puede incluir NetworkBase (el directorio NW ) y SessionBase (el directorio SB ). Se recomienda usar un nuevo espacio de nombres para su aplicación.
Si coloca su código en otro lugar, RSC no podrá encontrar directorios importantes cuando lo inicie, como se describe en la guía de instalación. Luego deberá modificar el Element::RscPath para que pueda encontrar el directorio que contiene el directorio de entrada . También debe agregar el directorio de ayuda de RSC a ese directorio.
Para inicializar su aplicación, deriva del Module . Para un ejemplo, consulte NbModule , que inicializa NodeBase . Cambie CreateModules para que también instancie su módulo, así como los otros módulos que necesita en su construcción.
Para interactuar con su aplicación, deriva de CliIncrement . Para un ejemplo, ver NbIncrement , el incremento para NodeBase . Instanciar su incremento CLI en la función Startup de su módulo. Cuando inicia RSC, puede acceder a los comandos en su incremento a través de la CLI entrando >incr , donde incr es la abreviatura de que el constructor de su incremento pasó al constructor de CliIncrement .
La mayoría de los archivos en el directorio de entrada son scripts de prueba. El documento que describe la aplicación POTS también analiza sus pruebas, que ejercen una parte considerable del software de RSC. Algunas otras pruebas son de naturaleza más táctica:
Un conjunto de scripts prueba la capacidad de la red de seguridad de la clase Thread . Una página dedicada describe estas pruebas y el estado actual de cada uno.
Ingresar >nt en la CLI accede al incremento "NT" (un conjunto de comandos CLI). Proporciona comandos para probar funciones en BuddyHeap , SlabHeap , LeakyBucketCounter , Q1Way , Q2Way e Interfaces Registry .
RSC está disponible gratuitamente bajo los términos de la Licencia Pública General de GNU, versión 3, que básicamente dice que también debe publicar su propio software, así como sus cambios en RSC. Si está desarrollando un software comercial que desea mantener propiedad, la licencia GPLV3 también permite que RSC tenga licencia bajo los términos de otra licencia aprobada por Free Software Foundation. Algunas de esas licencias permiten que su software permanezca propietario. Sin embargo, se requeriría una compensación, y cualquier cambio que realice a RSC (correcciones de errores y mejoras) aún debería publicarse.
Cómo contribuir a RSC se describe aquí.
Github ahora te permite patrocinar proyectos. Se encuentra un botón "patrocinador" en la parte superior de esta página.