Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-08-2006
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 20
papulo Va por buen camino
Servidor web + Apache 2.0.58 + Delphi 7 + 0% de experiencia...

Veamos como está el asunto.

Quiero hacer un servicio web para poder hacer consultas a una base de datos en firebird que tengo por aquí.

Ya no voy a masacraros con preguntas sobre como acceder a la DB y esas cosas (mas adelante tal vez ), pero ahora, de momento, el problema es hacerlo funcionar con Apache 2.0.58.

Tal y como sale en esta página http://www.drbob42.com/delphi7/apache2040.htm
tengo que hacer unas cuantas operaciones con archivos

Cita:
Before you modify HTTP2D.pas make sure you have a backup of the original file as well - just in case. After you've modified HTTP2D.pas, you have to make sure that this file is "found first" by your web project, which can be done in a number of ways. The safest is to place the new HTTPD2.pas in your project directory itself, so only this project will use the modified VCL file.
Alternately - a more dangerous approach - you can rename the HTTPD2.dcu file in the Lib directory (for example to HTTPD2.dcu_) and place the new HTTPD2.pas file in the Lib directory, so Delphi will recompile it when needed.

Note that anything you change in the "official" Delphi directory is "dangerous", since official patches from Borland will only patch original untouched files. So I personally always make local copies of modified VCL files (and add them to the project directory only).
Update: note that you may also need to recompile the ApacheTwoApp.pas and ApacheTwoHTTP.pas files (because they depend on the changes in HTTP2D.pas). So, you may want to copy these two files the LIB directory and rename their .DCU counterpart to .DCU_ as well. Then, do a Build All (so the new .dcu files are generated). That should work (I just rechecked it on a clean configuration).
Y claro, yo solo encuentro la mitad de esos archivos.

¿Alguno me guía un poco, o en su defecto, me da otra posible solución para este problema?

Estoy atascadete, pero creo que es un tema en el que merece la pena insistir por lo útil que puede llegar a ser.

Saludos y espero con ganas respuestas.

Papulo.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0

Última edición por papulo fecha: 03-08-2006 a las 13:02:23. Razón: Uops! Tengo una versión de Apache que nadie tiene... ¡¡la 2.58!! ¿o será que me he equivocado?
Responder Con Cita
  #2  
Antiguo 03-08-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Una preguntita: ya que sabes php, ¿no te interesaría hacerlo en ese lenguaje?

Porque, exactamente, ¿qué quiéres hacer?.
Responder Con Cita
  #3  
Antiguo 03-08-2006
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 20
papulo Va por buen camino
Digamos que hay un "ente superior" (AKA as boss) que sabe que delphi lo puede hacer, y en principio me lo ha dejado claro. Ahora bien, sois gente que domina delphi a un buen nivel, y si argumentais el por que de hacerlo con PHP, de una forma clara y coherente (que mi jefe, ante todo, razonable), decida hacerlo con PHP, porque con argumentos se va a todos los sitios.

Saludos Antonio y resto de gente.

PD: Pasa por gmail esta tarde y charlamos del tema.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #4  
Antiguo 03-08-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Asi de forma general, php esta mas pensado y es mas adecuado para hacer temas de la web que delphi. Pero primero habria que sabe exactamente que va a hacer ese servicio web, y despues con esa informacion se podria decidir cual es la mejor opcion.

Saludos
Responder Con Cita
  #5  
Antiguo 03-08-2006
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 20
papulo Va por buen camino
Unos clientes nos han pedido que les cedamos nuestra DB (no son listos ni nada ) pero, obviamente, se les ha denegado. Pero mi jefe ha pensado que a lo mejor, podemos implementar un servicio web para que, mediante ficheros XML, podamos permitir a los clientes hacer consultas a la DB dentro de sus propias aplicaciones, fuera del ambito de la nuestra.

Asi pues sería Consulta(Cliente)->Recepción(Nuestro servidor web)->Procesar(Nuestro servidor web)->Devolver datos(Nuestro servidor web)->Recibir respuesta(Cliente)

La idea que tengo en mente es recibir el ficherito, extraer las vartiables, montarlas en una query para, via SQL, consultar la DB y devolver el resultado en otro fichero XML (llenito de etiquetas para que no se equivoquen ) hacia la aplicación del cliente.

Si necesitais mas datos, por favor, no dudeis en preguntar.

Saludos,
Papulo.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #6  
Antiguo 03-08-2006
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
¿No seria mas facil crear un usuario con solo permisos de solo lectura.
y hacer una aplicacion que solo los consulte via http, que un servicio web?

que de servicios web no tengo ni ide aunque quiero aprender a hacerlos
Responder Con Cita
  #7  
Antiguo 03-08-2006
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 22
Sick boy Va por buen camino
Creo que lo mejor sería Intraweb.

Cita:
Asi pues sería Consulta(Cliente)->Recepción(Nuestro servidor web)->Procesar(Nuestro servidor web)->Devolver datos(Nuestro servidor web)->Recibir respuesta(Cliente)
Asi pues sería Consulta(Desde un navegador web, apuntando a tu ip y el puerto adecuado)->Recepción(Lo recibe tu aplicación Intraweb)->Procesar(Desde Intraweb, accedes a tu base FB, limitando según convenga)->Devolver datos(Los devuelve Intraweb al navegador web de tu cliente)->Recibir respuesta(Se reciben los datos en la navegador del cliente, formateados como convenga, e incluso con dbgrids, etc...)

Te aseguro que tardarás un 90% menos de tiempo que en montar un servidor apache.

Cita:
La idea que tengo en mente es recibir el ficherito, extraer las vartiables, montarlas en una query para, via SQL, consultar la DB y devolver el resultado en otro fichero XML (llenito de etiquetas para que no se equivoquen ) hacia la aplicación del cliente.
No es necesario, en cuanto trabajes un poco con Intraweb descubriras un mundo nuevo

Si es un requisito el fichero XML, lo que puedes hacer es que tu aplicacion IW envie ese fichero al navegador del cliente. Hay varias formas más de hacerlo.

PD: Que listos son los jefes, verdad??
Responder Con Cita
  #8  
Antiguo 04-08-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo más simple, si son consultas específicas, es hacerlas "tal cual", una consulta "normal" a la base de datos, tan sólo que en la oficina del cliente tendrás que decirle que la base de datos está en (ejemplo): 215.215.215.215:/servidor/datos/basedatos.fdb

La 215.215.215.215 sería vuestra IP de internet, y en el router vuestro se direcciona el puerto 3050 a la IP del servidor en la red local.

Si no tenéis IP fija, podéis usar los servicios de http://www.no-ip.com/ u otros similares.

Para el cliente puedes crear un programita delphi con una lista (grid, listbox, menu, etc. como prefieras) con las distitnas posibles consultas permitidas, ejemplo:
Cita:
Elija una consulta:
-Ver Stock de un artículo
-Ver Precios de ventaa de un artículo
-Ver últimas compras realizadas
-etc...
Y "por debajo" haces el select "normal y corriente" para cada una de las consultas.
Responder Con Cita
  #9  
Antiguo 04-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Yo hablando de bases de datos .. Bueno, en serio, si das acceso a la base de datos a los clientes, ¿como puedes controlar las consultas que van a hacer? ¿que les impedirá crearse su propio programa con sus propias consultas? y de esa manera poco a poco copiar la base de datos (que creo que es lo que se quiere evitar). Desde mi ignorancia: ¿se puede limitar en la base de datos que consultas puede hacer cada usuario?, de no ser así, yo apostaría por interponer algún software entre los clientes y la base de datos, así nos aseguramos de que nadie se pase de listo.

No creo que tenga que ser nada muy complicado, de hecho para no liarnos con temas de sockets, que siempre son molestos y pueden ocasionar muchos fallos de seguridad si se nos cuela algún fallo, podemos usar un servidor con una estabilidad probada como el Apache. A partir de ahí crear un simple cgi es trivial, no hacen falta librerías especiales ni nada, al fin y al cabo no deja de ser un simple .exe

Luego solo tenemos que decidir como se comunicaran entre ellos, es decir, el programa del cliente enviara una consulta al nuestro, este comprobara que es una de las consultas permitidas y la mandara a la base de datos. Entonces nuestro programa generara una respuesta que el programa del cliente pueda entender (Campos separados por comas, XML, etc) y se lo dará al apache para que lo envié como respuesta.

PD: Si lo anterior sonó como si estuviera intentando reinventar la rueda o simplemente es una tontería, por favor ignorarlo.
Responder Con Cita
  #10  
Antiguo 04-08-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Partiendo de que el que lo vaya a desarrollar sepa tanto php como delphi yo me inclinaria sin dudarlo por implementar una capa intermedia programada en php en el lado del servidor (Lo cierto es que esto ya lo he hecho asi en varias ocasiones).

En el caso de intraweb yo lo he descartado hace tiempo, es demasiado inestable e inseguro, si miramos las actualizaciones del intraweb, continuamente descubren bugs que son criticos para un servidor accesible desde internet en cuanto a la seguridad. Intraweb, ya lo dice su nombre, puede valer para Web Internas de una empresa a la que acceden personas confiables pertenecientes a esa empresa y que no estan expuestas a internet.

Razones para usar php y una capa intermedia:

1. Es muy sencillo implementar ese tipo de cosas en php.

2. Es mucho mas sencillo manternelo y añadir nuevas caracteristicas sin tener que parar el servicio.

3. Se puede usar https de forma sencilla, para que vayan los datos encriptados: siendo datos internos de la empresa este requisito seria casi imprescindible.

4. El hecho de usar una capa intermedia permite logear todo lo que hagan y consulten los clientes. Otra cosa muy importante es que podemos añadir restricciones adicionales en el codigo del servidor en el futuro si fuese necesario. Por ejemplo que el jefe decida que tal rango o tipo de informacion a partir de ahora no pueda ser vista por los clientes.

5. Si no tenemos una capa intermedia, como necesitemos hacer algun cambio estructural en la base de datos de la empresa, podriamos romper el funcionamiento del sistema y que dejase de funcionar, obligandonos a actualizar el software de todos los clientes, por ejemplo un simple cambio de un campo podria hacer que las queries fallasen. Con una capa intermedia esto siempre se puede arreglar en un unico punto, en los scripts de php que hacen las consultas, pero manteniendo igual el interface de cara a los clientes para que no haya que modificar y actualizar el software que tengan instalado.

Saludos
Responder Con Cita
  #11  
Antiguo 04-08-2006
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.927
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
En primer lugar, una cosa.

PHP es para correr sobre un servidor Web. Eso lo limita.

Delphi es para correr o para ser su propio servicio web. Delphi puede hacer mas cosas que un lenguaje especifico de Web como PHP, a la vez, es mas "simple" hacerlo en PHP o en Python.

Mi solucion es eliminar Apache, y IIS. La manera de hacerlo con un lenguaje como Delphi es hacer un servidor SOAP directamente con Delphi, con Indy o RemObjects (este producto es de cobro pero te hace muchas cosas que son soñadas: Failover, Compresion, Encriptacion hasta 512, multiples formatos de retorno, como SOAP, Binario y otros, muy simple hacer clientes, etc...)

Creo que RemObjects e Indy son prueba suficiente para hacer valer a Delphi por lo que es: Una herramienta versatil. Eso NO es PHP, que es mas restringido a paginas (no aplicaciones) Web. PHP, en mi opinion, es el Visual Basic del momento.
__________________
El malabarista.
Responder Con Cita
  #12  
Antiguo 07-08-2006
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 20
papulo Va por buen camino
Bueno, ya he vuelto a la vida (4 días de fiestas y excesos machacan cosa mala mala).

Iré por partes:
El acceso a la DB es para nuestros clientes, los cuales, a traves de nuestro programa, ya tienen acceso total a la misma a traves del interface. Algunos quieren usar la DB en sus propias aplicaciones, para ello queremos crear este servicio, para permitirles, via XML, adaptarlo a lo que lo necesiten, pero sin tener la DB desencriptada .

Por otra parte, no se si hacerlo via PHP o directamente en DELPHI, de momento ya me las veo negras para hacer funcionar DELPHI 7 con Apache 2.0.5X, cosa que está resultando "jarto" complicada.

Sigo intentando decidirme por una de las opciones y todas y cada una de las opiniones que dais las leo, así que por mi, no pareis todavía

Saluditooos,
Papulo.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #13  
Antiguo 07-08-2006
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.927
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Porque?

Es cierto que compilar librerias para Apache tiene sus "jartancias" pero pienso que deberias explorar otras opciones mas flexibles.

En este momento, con el augue de stacks como RubyOnRails y Django/TurboGears se esta moviendo la cosa de modulos a FastCGI, que es mucho mas simple y mejor desempeño a la larga.

Con respecto a Delphi, muy facil: Crea tu servidor como quieras y haces una redireccion desde apache y/o un proxy inverso. Es muy facil, no friegas con la memoria del servidor (porque no instancias nada dentro del proceso), te permite usar un esquema mas flexible luego (ej: Dejar corriendo varias copias del servicio entre distintas maquinas y hacer un failover), no tienes que preocuparte si es un apache con o sin prefork, puedes moverlo a otro servidor mucho mas rapido y liviano como Lighttpd, etc...

Como dije, la mejor manera de hacerlo con una herramienta como Delphi es un servicio independiente que luego le haces la conexion... y con apache/lighttpd con su funcionalidad de redireccionamiento (que solo requiere editar el archivo de configuracion) es muy facil
__________________
El malabarista.
Responder Con Cita
  #14  
Antiguo 13-08-2006
vhr vhr is offline
Miembro
 
Registrado: feb 2005
Ubicación: Argentina- Buenos Aires- Quilmes
Posts: 28
Poder: 0
vhr Va por buen camino
webservice

Este hilo en mi humilde opinión tenia un nivel un poco… digamos… bajo, de menor a mayor estaba mejorando un poquito (jejeje saliamos de PHP para pasar a INTRAWEB un poco mejor pero no cumplia con lo que el Jefe le pedia a este pobre muchacho) , hasta que mamcx prendio la luz, ahora permitanme bajarlo nuevamente con mi ignorancia: Si tu jefe te pide que hicieras WebService con delphi 7 Apache 2.0.58 lo que podes hacer es compilar el proyecto como si lo fueras a usar IIS, luego configuras apache para que ejecute las dll ISAPI, pues de otro modo yo no logre hacer andar los servicios web con versiones nuevas de apache.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
php y apache, ¿CGI Binary o Apache Module? D-MO PHP 12 06-06-2006 03:11:43
Servidor Apache en Suse 9.1 Sasuke_Cub Linux 1 23-11-2005 20:50:01
Tu experiencia trabajando a distancia Al González Debates 8 27-04-2005 01:17:46
Apache e ISAPI de Delphi anitra_cattivo Internet 10 22-05-2004 19:21:07
Se puede usar apache server con delphi? CORBATIN Internet 4 18-08-2003 16:58:09


La franja horaria es GMT +2. Ahora son las 01:21:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi