Red de conocimiento informático - Material del sitio web - Cómo usar mono para migrar el programa de servicio de ventanas .net a Linux

Cómo usar mono para migrar el programa de servicio de ventanas .net a Linux

Propósito: Usar mono para migrar servicios de Windows escritos en ASP.NET para ejecutarlos en Linux

Software utilizado: mono2.0, Linux Red Hat

Pasos:

1. Escriba el servidor remoto en forma de servicio de Windows en Ventana. Incluir

RemoteServer.exe (archivo de tiempo de ejecución del servicio)

RemoteServer.exe.config (archivo de configuración)

Coloque estos dos archivos en el sistema Linux en un directorio , en este ejemplo se coloca en /home/RemoteTest/. RemoteServer

2. Escriba el script de servicio de Linux sjhServer y coloque el script en el directorio /etc/rc.d/init.d

3. Utilice el siguiente comando para crear enlaces simbólicos a los scripts en los niveles de tiempo de ejecución apropiados (niveles 2, 3, 4 y 5 en este ejemplo):

cd /etc/rc.d/rc2.d ( apropiadamente (Para establecer un enlace al nivel 3, cd al directorio rc3.d)

ln -s /etc/rc.d/init.d/ sjhServer S97sjhServer

4. Inicie el servicio. Utilice el comando:

service sjhService start

5. En este ejemplo, se utiliza un programa cliente RemoteClient.exe como escucha. Ejecute RemoteClient.exe y el resultado obtenido mostrará que el servicio se está ejecutando. Si la máquina de destino rechaza el cliente, significa que el servicio no se ha iniciado

6. :

servicio sjhDetención del servicio

En este punto, se ha completado el trabajo de migración de ASP.NET. Incluso después de completar la migración de Linux, las operaciones con otros servicios del sistema Linux son las mismas.

Existen varias dudas:

A. Al establecer el enlace simbólico del punto 3, sólo se establece el enlace S, pero no el enlace K. Además, ¿cuáles son las reglas que definen el orden de inicio y finalización de los servicios?

En segundo lugar, la suspensión del servicio no funciona. El remoting, como servicio, no tiene este concepto. Otros tipos de servicios aún están por probarse.

Otro método:

Cómo implementar mono en Linux y ejecutar con éxito el programa .net, consulte más. Acabo de crear este aspecto con éxito y los problemas que encontré aún persisten. allí, si no son suficientes, no engañarán a todos.

Todavía es muy fácil usar mono para ejecutar un programa .net en Linux, pero ¿cómo ejecutar un programa de servicio en segundo plano? Hoy me esforcé mucho y finalmente tomé prestada una respuesta de stackoverflow. este enigma.

En Linux, los demonios son procesos simples en segundo plano. A diferencia de Windows, se utilizan métodos de control especiales (como start(), stop()). Cree su servicio como una aplicación simple (consola) y ejecútelo en segundo plano. Utilice una herramienta como daemoniz para ejecutar el programa como un demonio Unix y recuerde especificar mono como programa a activar.

Como otros han señalado, un monoservicio es un host que ejecuta un servicio creado utilizando el ensamblado ServiceProcess.

Los servicios creados para Windows pueden utilizar este método para ejecutar el servicio como una aplicación simple (consola), que se ejecuta en segundo plano. Puede controlar los servicios enviando señales a los procesos (consulte el manual).

Mi inglés no es bueno, así que solo puedo entender el significado. Puede controlar los servicios enviando señales a los procesos (consulte la página de manual).

El primer método consiste en convertir el servicio de Windows en un programa de consola en Linux. Segundo método: utilice monoservicio para ejecutar el programa de servicio de Windows. La premisa es que su programa esté escrito en .net.

¿Cómo configurar los parámetros de tiempo de ejecución monoservicio?

Formato de comando: mono-service [opciones] program.exe

-d: DIRECTORIO Utilice esta opción para especificar el directorio de trabajo del servicio.

-l: LOCKFIL especifica el archivo utilizado para el bloqueo. El valor predeterminado es el nombre del archivo integrado en /tmp según el nombre del programa del servicio de alojamiento.

-m: MESSAGEN El nombre que se mostrará en el registro del sistema.

-n: NOMBRE Utilice esta opción para especificar el servicio a iniciar (si el programa contiene múltiples servicios). Ejecute el primer servicio definido de forma predeterminada: el uso de esta opción evita que el monoservicio redirija stdin y stdout y evita que el programa se envíe a segundo plano. Equivalente a

--no-daemon: utilice esta opción para evitar que el monoservicio redirija stdin y stdout, y envíe el programa a un segundo plano. Equivalente a --debug.

Ejemplo: mono-service -l:/root/service-lock MyService.exe

Mono-service -l:/root/service-lock MyService .exeexe

Servicio de control (para conocer la diferencia entre estas operaciones, consulte el uso de Windows, no explicaré demasiado aquí):

Pausa: kill -USR1 'cat lt; lock filegt;'

Continuar: kill -USR2 'cat lt;lock filegt;'

Detener: kill -USR2 'cat lt;lock filegt;'

Detener: kill 'cat lt;lock filegt;'

Continuar: kill -USR2 'cat lt;lock filegt;'

Detener.kill 'cat lt;lock filegt ;'

Nota: Utilice mono-service para ejecutar servicios que utilicen el ensamblado 1.0 y utilice mono-service2 para ejecutar servicios que utilicen el ensamblado 2.0.