-
Web services (soap)
bonjour a tous!
juste une question éclaircissement!
En fait je dois créer une application qui récupère la majorité de ses infos dans la base de données d'un CRM; pour cela je pense que je dois mettre en place un service web d'où le problème! j'en ai jamais fais et j'ai décide de développer mon application sur symfony(j ss tombé amoureux de ce framework).Voici donc mes questions:
- comment est c ke les web services marchent: est ce que je dois créer une base de données pour stocker les informations que je vais recuperer sur le CRM?(ces informations seront constamment modifier)
- quels plugin me conseiller vous d'utiliser pour développer mon web service sous symfony(s'il vaille la peine d'en utiliser un)?
merci d'avance pour vos reponses!
ps: si vous avez des liens intéressants sur des tuto web services soap sous symfony , je suis preneur! merci!
-
Heureux que tu sois heureux de symfony !!!
Tu es en bonne compagnie ici.
Pour ton application, c'est un rien plus compliquer. Tu laisses beaucoup de questions en suspend et peu de réponse pour te conseiller efficacement.
Donc, à moi de poser quelques questions :- Il faudrait un description un peu plus touffue de ce que tu veux construire.
- Quel est l'application CRM de base,
- quel est la structure des données,
- c'est développé en quoi, on y accède comment,
- y a-t-il déjà un service web développé sur ce site,
- as-tu un accès directe possible à la base de données,
- quel est la fréquence des modifications sur le site CRM, quel est la "vieillesse" possible des donnée que tu veux récupérer,
- dois-tu faire des mises à jours des données.
Bon, pour commencer...
-
wouaouhh!!
il en est fallu de peu pour que je me décourage mais bon...
Pour répondre à tes questions:
- le crm c'est E-DEAL, il utilise une architecture 4 tiers java2
- il utilise une base de données oracle
- il n'existe pas pour l'instant un service web sur ce crm, mais il est prévu qu'on en conçoive une dessus
- je peux avoir un accès direct à la base de données (mais je sais pas trop comment ca se passe)
- les données sont constamment modifiées
- les mises à jours seront faites par l'administrateur du CRM et devront en toute logique se répercuter sur l'application que je dois concevoir (vice versa)
Je dois rencontre l'administrateur du dit CRM quels sont les questions utiles que je pourrais lui poser en plus de ce que vous m'avez poser!
merci!
-
S'il n'y a pas de service web pour récupérer les informations, il ne reste qu'un accès directe à la base de donnée.
Il faut donc avoir une description de l'architecture de la base.
Il faut aussi un compte au moins en lecture sur la base CRM.
Si tu dois écrire des données, autan utiliser une deuxième base oracle sur le serveur, réservée à ton application. Pourquoi jouer avec un MySql alors que tu as une rolls sous la main ! Donc, il faudrait que le compte lecture sur la base CRM aie aussi des droits en écriture sur trois bases oracle pour ton application (une pour le dev, une pour les tests et une pour la prod).
Je pense que c'est le plus simple. Doctrine sait gérer les informations qui proviennent de plusieurs sources presque transparent pour le développeur, au coup de quelques requêtes excédentaires.
Bonne chance,
Michel
-
Merci pour tes réponses mimi,
En fait le web service mis en place par le CRM ne peut être interroger que par les applications utilisant les technologies ASP.NET et J2EE.est c ke avec symfony c'est possible??
Par ailleurs la base de données est sur PostgreSQL, et je peux avoir acces à celle-ci.
travaillant sur symfony qu'est qui peut-etre le plus aisé pour moi?web services ou accès direct à la bd postgresql?
-
Sauf protocol très particulier, il n'y a pas vraiment de raison pour que tu ne puisses utiliser le service web. Après tous, j'ai bien écris des "boites noires" pour faire communiquer des AS400 avec des Digital, chacun imaginant travailler de son côté avec un de ces "frangins".
Donc, au mieux, c'est un protocole standard et on doit trouver un composant qui en permette l'accès depuis PHP, donc depuis symfony (faudra trouver le nom du protocol et l'implantation).
Il est parfaitement possible d'accéder à postgre avec doctrine. La configuration se fait dans le database.yml, on doit pouvoir trouver des exemples sur le site de doctrine.
Quant à savoir quel est la bonne solution, aucune idée, les deux sont, à ce stade, viable. Tous dépend de ce que tu veux faire et récupérer. L'accès à la base de donnée devrait être plus rapide, par contre, l'utilisation des services devrait garantir la pertinence des données même si le format de la base change, au prix d'une perte de rapidité. Dans le deuxième cas, il faudra probablement mettre en place des objets permettant de récupérer les données proprement pour les intégrer facilement dans le modèle MVC de symfony.
A toi de voir la solution la plus simple en fonction de ton cahier des charges. Ou de donner plus de détail pour avoir un avis plus orienté.
-
Le protocole utilisé par le webservice est WSDL
Voici un exemple de méthodes mis à disposition pour utiliser ce service.
pour se logger:
boolean authenticate(String login, String password)
lister les champs d'une table:
String[][] getObjectList(String nomObjetSql, String[] fields, String[][] query)
Modifier ou creer un objet:
String modify(String nomObjetSql, String objID, String[] fieldToModidy, String[] values)
Le truc c'est que quand je lis ces méthodes pour moi je vois du java (et on ne s'entend pas bien tous les deux)
A supposé que je veuille utiliser le web service avec ce protocole et ces méthodes.Quel est la procédure pour le mettre en place sur symfony(une sorte de petit guide étape par étape)
-
Un guide étape par étape, c'est pas avec moi que tu pourras l'avoir.
Je n'ai jamais utilisé ce protocol et j'ai encore moins un serveur SOAP sous la main pour tester. Quant à parler du temps bénévole à y consacrer...
Mais,
J'ai peut-être un début de solution. A ma connaissance, il y a dans le Zend Framework un composant qui permet de causer avec un serveur SOAP depuis du PHP ; PHP SOAP Extension
A priori, cela ne semble pas insurmontable, mais je n'ai fais que parcourir en diagonal.