Serveur SOAP et application cliente VCL + démo indépendante pour Delphi XE?


151

Delphi avait l'habitude d'inclure un dossier de démonstration pour les services Web, mais ne semble plus l'inclure.

J'ai juste essayé les projets de démonstration de Delphi 7 ( SOAPDMServerWAD, un serveur avec presque aucune interface utilisateur du tout, et SOAPDMClient) et je n'ai pas pu les faire fonctionner, même dans Delphi 7.

Si quelqu'un a déjà fait une démonstration similaire dans Delphi XE, ou Delphi 2010, identique aux anciennes SOAPDMServerWAD+SoapDMClientdémos, fonctionnant sous Delphi XE, et avec au moins l'interface utilisateur minimale fournie par l'assistant d'application Delphi SOAP Server, ce serait parfait.

Mise à jour: La démo apparaît jusqu'à Delphi 2010 mais utilise le WAD (web-app-debugger) désormais obsolète, j'ai essayé de le porter sur le nouvel Indy runtime/web-app-development-harnessing-code, mais je n'arrive pas à le faire fonctionner. La démo s'exécute, mais le serveur n'a pas d'interface utilisateur et ne semble pas exécuter de serveur HTTP (testé à l'aide d'un navigateur Web standard, via des http://localhost:port/URL. En passant, essayez de rechercher une démo sur Google, et cette URL apparaît, et J'ai demandé il y a moins d'une heure. C'est effrayant, google.

Update2 Voir ma propre réponse ci-dessous, un lien sera bientôt disponible avec le code de travail.


3
[offtopic] J'ai dû créer un client SOAP assez simple dans Delphi il y a quelques mois, ce qui s'est avéré être un véritable casse-tête et un gaspillage de productivité, je suggère de chercher une alternative en attendant.
ComputerSaysNo

13
@Dorin - Utilisation L'importateur WSDL est très simple pour créer un client SOAP.
Robert Love

8
@Robert ce n'est pas cette partie qui me donne des maux de tête, c'est la documentation et le manque de démos, etc. J'ai dû en apprendre beaucoup trop sur SOAP pour un client simpliste, qui ne m'a pas trop servi, d'après ce que j'ai compris en Java est beaucoup plus facile mais je ne l'ai pas essayé => Je suis un utilisateur inconditionnel de Delphi.
ComputerSaysNo

5
Le savon le plus simple est .net wcf
caché le

Réponses:


39

J'ai posté l'ensemble complet des démos pour SOAP sur CodeCentral en tant qu'article 28789 .

Ils contiennent chacune des démos SOAP de l'ère Delphi 2007 du WebServicesdossier, maintenant mis à jour pour Delphi XE et XE2, y compris la conversion des anciens serveurs WAD en nouveaux serveurs INDY VCL. Vous penseriez que c'était impressionnant, sauf que ce n'est pas le cas. C'est vraiment simple. Utilisez simplement l'assistant pour créer un nouveau projet, puis ajoutez l'interface du service Web et les unités d'implémentation, ainsi que toutes les autres unités appartenant à l'ancienne démo, au projet. Une fois qu'ils sont ajoutés au projet, ils fonctionnent simplement. Démonstration de base Les serveurs SOAP sont vraiment faciles à construire dans Delphi, une fois que vous avez une démo fonctionnelle, vous constaterez qu'il est assez facile de la modifier et de l'étendre.

La démo qui répond le mieux à la question que j'ai posée ci-dessus se trouve dans le SOAPDataModulesous-dossier.

Les problèmes de base avec la démo de l'ère 2007 sont deux:

  1. Le WAD (débogueur d'application Web) est parti. vous devez créer un nouveau serveur en utilisant le serveur Indy, à des fins de démonstration optimales, vous évitant d'utiliser WAD (qui a disparu) ou de configurer l'environnement ISAPI, sous IIS, ce qui n'est guère idéal à des fins de démonstration. Le nouveau projet de démonstration que j'ai créé s'appelle SoapDMServerINDY et se compose d'un module de données (datamod_u.pas), d'une unité d'interface utilisateur de formulaire VCL ( IndyServerVCLFormUnit.pas) et d'un module Web Indy Server, appelé IndyServerWebModule.pas.

  2. La démo de Delphi 2007 a éclaté grâce à la nouvelle pratique d'avoir un sous-dossier Debug / Win32 dans lequel se trouve maintenant l'exécutable de démonstration, vous devez aller plus loin. J'ai corrigé le serveur de démonstration pour qu'il vous avertisse avec un message d'erreur si les fichiers de données ne peuvent pas être localisés, vous évitant ainsi la mystérieuse "erreur d'analyse XML". J'ai également ajouté une vérification d'erreur dans quelques-unes des démos afin que cela vous indique que vous devez installer interbase pour que cette démo fonctionne, car certaines des démos nécessitent qu'Interbase soit installé et en cours d'exécution, et l'une d'elles nécessite un alias appelé IBLOCAL pour exister, et de préférence une table appelée EMPLOYEEà exister.

entrez la description de l'image ici

Les éléments de cette démo sont un serveur ( SoapDMServerINDY , basé sur le code de SOAPDMServerWAD), et le client SOAPDMClient qui se connecte à la démo et a deux pages, une page affichera l'accès aux données de base via un jeu de données DBGrid + à distance, et la seconde La page montre comment invoquer une méthode SOAP personnalisée.

Pour utiliser la démo: Vous devez démarrer le serveur, cliquez sur le bouton Démarrer, puis démarrez le client et cliquez sur Se connecter.

entrez la description de l'image ici


1
Bravo pour l'effort! Si vous ne pouvez pas publier la démo corrigée, peut-être qu'un diff / patch ferait l'affaire?
Chris Thornton

8
C'est un vieux principe de la communauté open-source; Grattez votre propre démangeaison et partagez les résultats, et j'espère que cela profitera non seulement à tout le monde, mais construira une communauté, au fil du temps, qui peut faire des choses ensemble que nous ne pourrions pas faire seuls. Veuillez donc m'envoyer des rapports de bogues si vous rencontrez des problèmes.
Warren P
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.