Jump to content


Photo

Problema en servicio credo en delphi con windows 8


  • Please log in to reply
9 replies to this topic

#1 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 posts
  • LocationMéxico D.F.

Posted 16 December 2015 - 11:59 AM

buen día amigos Pues eso, se desarrollo un servicio windows desde delphi xe8 y el servicio corre bien en xp, windows 7 y windows 8, es decir hace sus procesos y bien, pero no muestra mensajes ni ventanas (formularios) en windows 7 ni en 8. Estuve leyendo y encontré algo que publico microsoft de que por el manejo de sesiones en windows 8 no se pueden mostrar los mensajes desde los servicios. alguien que le haya paso algo similar o alguien que lo haya resuelto, cualquier comentario se agradece. saludos y gracias
  • 0

#2 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 posts
  • LocationArgentina

Posted 16 December 2015 - 02:34 PM

Correcto, no hay mucho mas que puedas hacer si queres mantener un servicio :(

 

Hasta donde se, es por cuestiones de seguridad

 

La unica alternativa es conviertiendo el servicio en una aplicacion. Podes mantenerla oculta para que no "moleste"


  • 1

#3 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 posts
  • LocationMéxico D.F.

Posted 16 December 2015 - 03:10 PM

Correcto, no hay mucho mas que puedas hacer si queres mantener un servicio :(

 

Hasta donde se, es por cuestiones de seguridad

 

La unica alternativa es conviertiendo el servicio en una aplicacion. Podes mantenerla oculta para que no "moleste"

 

ups, si me temía eso.

 

gracias y saludos


  • 0

#4 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 posts
  • LocationCali, Colombia

Posted 16 December 2015 - 04:42 PM

Cuando necesito hacer algo así, creo una aplicación y conecto por sockets, para que en la aplicación muestre los mensajes del servicio,  igualmente se puede hacer que desde la aplicación se envíen datos o mensajes al servicio.

 

Pero definitivamente si quieres un servicio, el servicio no puede y no debe tener ventanas que se muestren, ni ninguna interacción con el usuario.

 

Es importante que utilices un protocolo UDP, ya que el TCP espera respuesta y esto daña el servicio.

 

Saludos.


Edited by genriquez, 16 December 2015 - 04:43 PM.

  • 0

#5 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6295 posts
  • LocationArgentina

Posted 16 December 2015 - 05:12 PM

Voy a hablar desde mi ignorancia en el tema ya que nunca he diseñado un servicio. Y admito que tampoco tengo alguna idea de a que se refieren por "mensaje" que envía un servicio.

 

Hasta donde tengo entendido, por lógica, un servicio es justamente un proceso que está activo en 2do plano, que requiere entrar en funcionamiento con el inicio del SO, y que no requiere forzosamente de una interacción con el usuario, y por tanto evitar el riesgo de que accidentalmente éste lo finalice prematuramente afectando asi el funcionamiento y el uso para el cual  fue diseñado. Por tanto no tiene sentido práctico alguno que ofrezca una interfaz.

Que luego exista alguna aplicación que pueda interactuar con el servicio ya es otra cosa.

 

El caso de Firebird es peculiar. Su instalador (al menos en FB 1.5) pregunta si desea correr el Server/Guardian como Servicio (recomendado) o bien como Aplicación.

 

Saludos,


  • 0

#6 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 posts
  • LocationArgentina

Posted 16 December 2015 - 05:53 PM

Yo por mensajes y ventanas entiendo Forms y cuadros de dialogo (ShowMessage, excepciones)

 

Y si, estamos de acuerdo en que un servicio deberia ser invisible 


  • 0

#7 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 posts
  • LocationCali, Colombia

Posted 16 December 2015 - 06:45 PM

Efectivamente Delphius el propósito de un servicio es como lo mencionas, sin embargo a veces  y sobre todo en tiempo de ejecución se requiere ver un log del servicio, el cual lo puedes hacer directamente a un archivo de Log o como mencioné con mensajes por sockets a una aplicación para ver que pasa dentro del servicio, especialmente porque es muy difícil depurar este tipo de aplicaciones.

 

Yo en particular tengo un servicio y una interfaz gráfica, la cual muestra cuantos usuarios hay conectados y cierta estadística, lo que hace el servicio es enviar esta información por Mensajes UDP al localhost a un puerto en particular, y la interfaz gráfica muestra dicha información.   Eventualmente si requiero reiniciar algún estado dentro del servicio lo puedo hacer igualmente por sockets, Ej. limpiar el caché, ya que gran parte de la información la subo a memoria.

 

Saludos.


  • 1

#8 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4107 posts
  • LocationMadrid - España

Posted 17 December 2015 - 04:26 AM

Aquí tienes más información.

 

Saludos.


  • 0

#9 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 posts
  • LocationMéxico D.F.

Posted 17 December 2015 - 08:40 AM

Buen día, gracias por tomarse un tiempito para contestar esta duda.

 

Delphius, efectivamente esa es la finalidad de un servicio, pero también hay "servicios interactivos", que precisamente muestran una ventana creada a partir de un TForm donde se puede preguntar al usuario deseas que se ejecute de esta manera o de otra manera, etc. y estos servicios hasta windows xp andaban sin ningún problema.

 

genriquez, gracias por los comentarios, voy a tomarlos en cuenta

 

escafandra, muy interesante tu aporte, lo voy a revisar y ojala pueda ayudarme a correr este servicio ya que hacerlo como me propone genriquez no creo que el cliente lo acepte, no al menos en tiempo y costo que se pueda elevar. muchas gracias.


  • 0

#10 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4107 posts
  • LocationMadrid - España

Posted 17 December 2015 - 10:32 AM

El enlace que te pongo es para mostrar como ejecutar una app gráfica desde un servicio. Un servicio no puede tener interface gráfico desde Vista, y si lo tiene no se verá, porque se ejecuta en un escritorio ajeno al usuario.

 

Saludos.


  • 0




IP.Board spam blocked by CleanTalk.