PDA

Ver la Versión Completa : Crear aplicación Servicio


S8VK
23-08-2017, 12:28:55
Hola,

Tengo desarrollada una aplicación Delphi que esta integrada por una parte que es de CLIENTE y por otra que es del SERVIDOR.
La primera de ellas introduce datos y la segunda realiza un determinado programa con ellos.

Me gustaría que la parte del SERVIDOR sea un servicio de Windows, manteniendo como aplicación la de cliente.

¿Podría programar ambas partes en el mismo programa que ya tengo desarrollado y que conste de una aplicacion y un servicio? En resumen, tener una apliacacion con una UNIT que sea de servicio.

Gracias.

Neftali [Germán.Estévez]
23-08-2017, 14:04:23
¿Podría programar ambas partes en el mismo programa que ya tengo desarrollado y que conste de una aplicacion y un servicio?


No acabo de entenderte muy bien.
Esta frase de por si, no tiene mucho sentido: "¿Podría programar ambas partes en el mismo programa..."

Un servicio no es más que un tipo de aplicación con unas caracteristicas especales, por lo tanto, la frase quedaría como "programar ambos programas en un mismo programa..." ¿?¿?¿?¿?

Si te estoy entendiendo bien, la respuesta es que no. Debes hacer una aplicación CLIENTE y otra aplicación SERVICIO (tendrás que convertir la actual que ya tienes a servicio).

S8VK
24-08-2017, 13:33:31
Muchas gracias, si que me refería a eso.

Me gustaría que dentro de una aplicación Delphi hubiera una parte que se ejecutara como servicio, y no tener dos programas por separado.
He leído en algunas páginas que si que hay formas de crear un programa Delphi mixto, que funcione como aplicación y como servicio, pero no he encontrado la forma de hacerlo.

Neftali [Germán.Estévez]
24-08-2017, 15:02:01
No digo que no se pueda hacer, supongo de lo complicado que sea tu programa.
Fíjate que desde el asistente de delphi para una nueva aplicación puedes crear el esqueleto de una "Aplicación Servicio". Es parecido a una aplicación normal.

En la código del proyecto verás algo similar a esto:


if not Application.DelayInitialize or Application.Installing then
Application.Initialize;
Application.CreateForm(TService2, Service2);
Application.Run;


Siempre podrías modificar eso, por ejemplo utilizando parámetros, para crear un TForm1 o TService2;

¿?¿?¿?¿?¿?¿
(No acabo de verlo claro, pero puedes probar...)

movorack
24-08-2017, 17:01:38
Hola. de poder hacer que una aplicación de usuario se pueda hacer funcionar como un servicio se puede.

Como dice Neftalí está el ejemplo acá (Está en inglés) (https://stackoverflow.com/questions/2387383/a-standalone-delphi-application-that-can-also-be-installed-as-windows-service)

Ahora! ¿Que eso sea lo más optimo? Como bien te dijeron eso depende de la complejidad de tu aplicación, pero mejor es dejarlo separado desde el principio ya que muchos programas comienzan con cosas sencillas y con cada cambio, cada solicitud con el tiempo se vuelven monstruos inmanejables.

Si necesitas manejar algunas funcionalidades tanto en el servidor como en el cliente, puedes crear unas clases que sean usadas por ambos artefactos.

S8VK
22-09-2017, 08:21:34
Hola,

¿Como puedo obtener la memoria que esta ocupando un servicio de Windows desde Delphi?

Me gustaria recoger cada 15 minutos, en un fichero .txt, la memoria que está ocupando un servicio que he creado.

Gracias.

Neftali [Germán.Estévez]
22-09-2017, 08:41:01
Puedes utilizar WMI para obtener información de los procesos ejecutándose.
Revisa los componentes GLibWM (https://sourceforge.net/projects/glibwmi/)I.