Cómo desarrollar un pequeño Nginx en lenguaje C y realmente ejercitar el uso de C
Nginx está escrito en lenguaje C, pero esta no es la clave para reescribirlo en C. La clave es el pensamiento orientado a procesos en el desarrollo del lenguaje C, mientras que el desarrollo en C es el pensamiento orientado a objetos. entre los dos sigue siendo muy grande. En términos sencillos, el desarrollo orientado a procesos significa diseñar "qué hacer en el primer paso", "qué hacer en el segundo paso" y "qué hacer en el tercer paso". . . . . El desarrollo orientado a objetos consiste en diseñar objetos, como codificadores, decodificadores y analizadores de protocolo HTTP. Estos objetos pueden participar en diferentes pasos.
Tome el procesamiento HTTP de Nginx como ejemplo (ejemplo, solo como referencia, es más de 10 veces más complicado que esto):
Método de procesamiento orientado a procesos en lenguaje C: Paso 1 : Análisis del método HTTP; segundo paso: analizar el encabezado HTTP; tercer paso: analizar el cuerpo HTTP. . . . . . Paso Un paso corresponde a un objeto, pero un objeto puede aparecer en muchos flujos de procesamiento. Por ejemplo: el objeto Encabezado se puede usar para analizar el Encabezado en el segundo paso, o se puede usar para generar un Encabezado de retorno específico en el paso X.
Además, el diseño del módulo de Nginx está esencialmente orientado a objetos. Un módulo es un objeto en un sentido amplio.
Entonces, si desea reescribir Nginx en C y practicar la programación orientada a objetos de esta manera, primero debe estar muy familiarizado con los principios y mecanismos de implementación de Nginx, y luego podrá extraer la programación orientada a objetos. objetos y si la clase finalmente se implementa en C o Java no hará una gran diferencia. Después de realizar los cambios usted mismo, puede compararlo con el diseño de Netty para ver la diferencia entre su diseño y el de Netty.