¿Servidor SOAP y aplicación cliente VCL + demo indy para Delphi XE?

151

Delphi solía incluir una carpeta de demostración para los servicios web, pero ya no parece incluir esto.

Acabo de probar los proyectos de demostración de Delphi 7 ( SOAPDMServerWADun servidor con casi ninguna interfaz de usuario SOAPDMClient) y no pude hacer que funcionaran, incluso en Delphi 7.

Si alguien alguna vez ha hecho que una demostración similar funcione en Delphi XE, o Delphi 2010, idéntica a las SOAPDMServerWAD+SoapDMClientdemostraciones anteriores, trabajando en Delphi XE, y con al menos la IU mínima que proviene del asistente de aplicaciones del servidor SOAP de Delphi, sería perfecto.

Actualización: La demostración aparece hasta Delphi 2010 pero usa el WAD (depurador de aplicaciones web) ahora obsoleto. Intenté portarlo a la nueva Indy runtime/web-app-development-harnessing-code, pero parece que no puedo hacerlo funcionar. La demostración se ejecuta, pero el servidor no tiene interfaz de usuario, y no parece estar ejecutando ningún servidor HTTP (probado usando un navegador web normal, a través de http://localhost:port/URL. Por cierto, intente buscar en Google una demostración, y esta url aparece, y Pregunté hace menos de una hora. Eso da miedo, google.

Actualización2 Vea mi propia respuesta a continuación, pronto llegará un enlace con el código de trabajo.

Warren P
fuente
3
[offtopic] Hace un par de meses tuve que crear un cliente SOAP bastante simple en Delphi, resultó ser un gran dolor de cabeza y una pérdida de productividad, mientras tanto sugiero buscar una alternativa.
ComputerSaysNo
13
@Dorin: uso El importador WSDL es muy fácil de crear un cliente SOAP.
Robert Love
8
@Robert no es esa parte lo que me da dolor de cabeza, es la documentación y la falta de demos, etc. Tuve que aprender demasiado sobre SOAP para un cliente simplista, que no me sirvió demasiado, por lo que he entendido en Java es mucho más fácil pero no lo he intentado => Soy un usuario acérrimo de Delphi.
ComputerSaysNo
55
el jabón más fácil es .net wcf
oculto el
55
Hay un video tutorial en edn.embarcadero.com/article/40973 . ¿pertinente?
Alex

Respuestas:

39

He publicado el conjunto completo de demos para SOAP en CodeCentral como elemento 28789 .

Contienen todas y cada una de las demostraciones SOAP de la era de Delphi 2007 de la WebServicescarpeta, ahora actualizada para Delphi XE y XE2, incluida la conversión de los viejos servidores WAD en nuevos servidores INDY VCL. Uno pensaría que fue impresionante, excepto que no lo es. Es muy fácil Simplemente use el asistente para crear un nuevo proyecto, y luego agregue la interfaz del servicio web y las unidades de implementación, y cualquier otra unidad que pertenezca a la demostración anterior, al proyecto. Una vez que se agregan al proyecto, simplemente funcionan. Los servidores SOAP de demostración básica son realmente fáciles de construir en Delphi, una vez que tenga una demostración en funcionamiento, encontrará que es bastante fácil modificarla y extenderla.

La demostración que mejor responde a la pregunta que hice anteriormente está en la SOAPDataModulesubcarpeta.

Los problemas básicos con la demostración de la era 2007 son dos:

  1. El WAD (depurador de aplicaciones web) se ha ido. debe crear un nuevo servidor utilizando el servidor Indy, para fines de demostración óptimos, evitando el uso de WAD (que ya no existe) o la configuración del entorno ISAPI, bajo IIS, que no es ideal para fines de demostración. El nuevo proyecto de demostración que hice se llama SoapDMServerINDY , y consta de un módulo de datos (datamod_u.pas), una unidad de interfaz de usuario de formulario VCL ( IndyServerVCLFormUnit.pas) y un módulo web del servidor Indy, llamado IndyServerWebModule.pas.

  2. La demostración de Delphi 2007 se rompió gracias a la nueva práctica de tener una subcarpeta Debug / Win32 en la que ahora se encuentra el ejecutable de demostración, debe ir más allá. Arreglé el servidor de demostración para que le avise con un mensaje de error si no se pueden ubicar los archivos de datos, lo que le ahorra el misterioso "error de análisis XML". También agregué algunos errores de verificación en algunas de las demostraciones para que le diga que necesita instalar interbase para que esta demostración funcione, ya que algunas de las demostraciones requieren que Interbase esté instalado y en ejecución, y una requiere un alias llamado IBLOCAL para existir, y preferiblemente una tabla llamada EMPLOYEEa existir.

ingrese la descripción de la imagen aquí

Los elementos de esta demostración son un servidor ( SoapDMServerINDY , basado en el código de SOAPDMServerWAD), y el cliente SOAPDMClient que se conecta a la demostración y tiene dos páginas, una página mostrará acceso a datos básicos a través de una conexión remota de conjunto de datos DBGrid +, y la segunda La página muestra cómo invocar un método SOAP personalizado.

Para usar la demostración: debe iniciar el servidor, hacer clic en el botón de inicio, iniciar el cliente y hacer clic en Conectar.

ingrese la descripción de la imagen aquí

Warren P
fuente
1
Bravo por el esfuerzo! Si no puede publicar la demostración fija, ¿podría funcionar un diff / patch?
Chris Thornton
8
Es un viejo principio de la comunidad de código abierto; Rasque su propio picor y comparta los resultados, y con suerte no solo beneficiará a todos, sino que construirá una comunidad, con el tiempo, que puede hacer cosas juntos que no podríamos hacer solos. Entonces, por favor envíeme informes de errores si encuentra problemas.
Warren P