[C#] C'est relou les web services !

C'est relou les web services ! [C#] - C#/.NET managed - Programmation

Marsh Posté le 19-04-2006 à 12:53:35    

Comprends pas pkoi tout le monde fait une pendule à 14 coups à propos des web services et de soap...
On peut pas transporter de types ni que dalle, c'est d'un pratique... (autant faire du TCP directement à la limite...)
 
Pour ceux que ça intéresse, voici comment charger une image depuis un web service... (ici le web service dessine une chaine de caractères dans un PNG, puis l'envoie comme résultat)
 
Service :

Code :
  1. [WebMethod]
  2.     public byte[] DrawString(string texte)
  3.     {
  4.         Graphics g = Graphics.FromImage(new Bitmap(1, 1));
  5.         SizeF imgSize = g.MeasureString(texte, new Font("Sans Serif", 10));
  6.         Bitmap b = new Bitmap((int)Math.Ceiling((double)imgSize.Width), (int)Math.Ceiling((double)imgSize.Height), g);
  7.         g = Graphics.FromImage(b);
  8.         g.DrawString(texte, new Font("Sans Serif", 10f), Brushes.Red, 0f, 0f);
  9.         MemoryStream st = new MemoryStream();
  10.         b.Save(st, ImageFormat.Png);
  11.         return st.ToArray();
  12.     }


 
Client :

Code :
  1. TestMagicService.localhost.Service tt = new TestMagicService.localhost.Service();
  2.             byte[] ret = tt.DrawString("bonjour le monde" );
  3.             MemoryStream st = new MemoryStream(ret);
  4.             this.CreateGraphics().DrawImage(Image.FromStream(st), 100, 100);


 
Je vous raconte pas comment ça doit être commode quand on joue avec des types complexes, genre un graph...


Message édité par Arjuna le 19-04-2006 à 12:54:08
Reply

Marsh Posté le 19-04-2006 à 12:53:35   

Reply

Marsh Posté le 19-04-2006 à 12:55:43    

Très franchement, mise à part l'absence de listner et d'emmerdement de recyclage des ressources, je ne vois pas en quoi ça diffère de la bonne vieille architecture TCP... Transport réseau ? Et qu'est-ce qui m'empêche de passer par le port 80 si les admins savent pas paramétrer un routeur ?

Reply

Marsh Posté le 19-04-2006 à 14:46:47    

avec un WS, tu encapsules ta logique métier dans des objets que tu peux partager
un peu plus haut niveau que TCP, tu trouves pas ?

Reply

Marsh Posté le 19-04-2006 à 14:56:23    

ze only matter, c'est que je ne peux transmettre mes types que via des strcutures de types simples.
super pratique quand je dois transmettre un graph ou autre objets structurés.
 
je pensais que les WS offraient une interface capable de transporter un type complexe plutôt :spamafote:
 
pour le reste, mise à part s'affranchir du protocole de communication, je ne vois aucune différence avec un simple client/serveur TCP. POP ou IMAP par exemple, permettent de transporter des données bien plus complexes que 3 strings encapsulées dans 20 Mo de XML...
 
berf, franchement pas convaincu par la chose. quand on regarde bien, c'est encore un super consortium qui nous veut que du bien qui a homologué la roue en bois à l'heure des chambres à air... ça doit être pareil que pour le XML, qui n'est ni plus ni moins que la même chose. tout un tas d'autre système de stockage/transfert de données existaient, dont la plupart notamment plus performants ou aisément lisibles, mais le marketing a eu raison de la logique.
 
je dis pas que c'est mal. je dis juste que je suis franchement déçu, je m'attendais à mieux.


Message édité par Arjuna le 19-04-2006 à 14:57:42
Reply

Marsh Posté le 19-04-2006 à 15:04:50    

t'as regardé du coté de DIME ? (pour les attachements)
Sinon, je suis assez d'accord par rapport au coté 'hype' des WS, ça n'a rien d'une révolution

Reply

Marsh Posté le 19-04-2006 à 17:00:38    

renseigne toi mieux alors :D.  
 
Jamais tu n'arriveras a avoir la facilité qu'offre les WebServices avec une connexion TCP.
 
N'oublie pas que TCP c'est du mode connecté ce qui amene vachement beaucoup de contrainte. Je vois mal utiliser une connexion TCP entre deux clients sur internet.  
 
De plus les problèmes de firewall ne sont pas résolu en TCP. Or avec les Web Service, comme ça passe avec HTTP ça va tout seul. Moi je ne vois que des avantages par rapport à des connexions TCP classiques.
 
De plus, les Web Services sont multi plateforme et multilanguage, ce n'est pas le cas des applications réseaux.

Reply

Marsh Posté le 19-04-2006 à 17:10:58    

moi23372 > euh... renseigne-toi toi-même donc...
 
là, je bosse sur un ERP.
dans la même version, je peux me connecter depuisun client lourd sous Windows, une console telnet depuis n'importe quel OS, ou même une URL intranet. C'est le même exe qui gère tout ça, et y'a pas l'ombre d'un web service dedans.
Les temps de réponse sont de 1 pour 1000 par rapport à un web service (sauf pour la version intranet evidement), l'appli est 100% multilangue, multiplateforme et surtout, massivement multiutilisateur.
 
T'ira faire du VNC en WS aussi toi...
 
Bref, tu t'emmerdes plus à écrire le truc, mais très franchement, les WS n'apporte aucune fonctionnalité. Le coup des firewall, ça me fait rigoler, parceque la pupart des sociétés passent par des proxy (source de merdes dans les consultations via WS) qui bloquent tout et ouvrent au cas par cas. Et pour les autres sociétés, en majorité on laisse tout passer c'est plus simple. Donc le support HTTP arrange les 5% des plus emerdeurs de la planète, trop paranos pour laisser les utilisateurs le soin de bosser, mais trop fénéant pour filtrer ce qu'ils font.
 
Bref :spamafote:
 
Je ne vois les WS que comme une surcouche "de moindre effort" genre "ben c'est déjà tout fait, donc je me contente de ses limitations", mais sorti de ça, y'a vraiment pas de révolution... Moi je m'attendais à un truc genre "l'invention de l'objet".
 
Sinon, y'a le RPC aussi qui existe... Ca marche plutôt pas mal, et étrangement, les services d'un réseau discutent plus souvent en RPC qu'en WS... Certainement une histoire de performance et de sécurité des transfert :p


Message édité par Arjuna le 19-04-2006 à 17:17:17
Reply

Marsh Posté le 20-04-2006 à 10:53:27    

il faut voir les webservices tels qu'ils sont. Ca te permet d'obtenir un flux qui peut être attaqué depuis n'importe quelle technologie, et en mode déconnecté.
Je travaille souvent avec un réferentiel commune (au sens les communes d'un departement). Et je ne suis pas le seul a l'utiliser, et les personnes qui developpent avec moi n'utilisent pas forcement les memes techno. Donc au lieu de faire une implementation en tcp & Cie sur n languages différents, j'ai un service qui peut etre attaqué. idem pour les problématiques de recherche sur un annuaire ldap et ainsi de suite.
 
l'autre avantage qu'il faut voir, c que la logique metier n'est pas dans ton webservice. Si tu as a faire une appli qui contient une couche de service, qui est appellé depuis une UI web ou client lourd, et que tu veux rendre disponible et accessible depuis d'autres projets , tu mets une "facade" webservice et ca roule.
 
Apres, le problème du tcp est le meme qu'en remoting. On peut dire oui, ce n'est qu'un problème de config de firewall et ainsi de suite....en attendant, dans la philosophie générale, ce n'est pas au développeur d'imposer les contraintes de sécurité à l'admin réseau en disant ouvre moi les ports x x x... mais au développeur de s'adapter
enfin, une opinion qui n'engage que moi ;)

Reply

Marsh Posté le 20-04-2006 à 11:05:50    

sinon en Java, y'a corba et rmi (mais jamais utilisé jusqu'à présent)...

Reply

Marsh Posté le 20-04-2006 à 11:07:06    

Corba c'est relativement multi-languages, mais la mise en place ... argh

Reply

Marsh Posté le 20-04-2006 à 11:07:06   

Reply

Marsh Posté le 20-04-2006 à 11:19:14    

rufo a écrit :

sinon en Java, y'a corba et rmi (mais jamais utilisé jusqu'à présent)...


Remoting est l'equivalent de rmi (en gros , sinon les puristes vont me tomber dessus :D)  
et corba...jms vu de projet qui l'utilisaient reellement (sauf des thesards, mais ils sont à part :D [smileypastaper])

Reply

Marsh Posté le 20-04-2006 à 13:22:42    

alien_man > je suis d'accord avec ton analyse du webservice. je ne remet pas en cause son utilité. le seul truc, c'est que je m'attendais à ce qu'il gère des flux un peu plus complexes que du simple xml "basique". je m'attendais notamment à pouvoir transporter des objets complexes de façon automatisée, sans devoir m'amuser à les décortiquer à la main. hors ce n'est pas le cas.
en fait, tu fous une page PHP, ASP ou autre sur un site web, qui accepte en POST des paramètres (ou un flux XML) et qui renvoie un flux XML en résultat, et t'as fait l'équivalent d'un webservice. je trouve la révolution plutôt limitée. notamment, pour un projet sur lequel j'étais à la bourre, c'est ce que j'ai fait : un post sur une page .NET avec un fichier XML, et la page qui va traîter les données reçues, puis renvoyer un résultat formatté en XML aussi. j'ai regardé les webservices pour voir si j'y gagnais quelquechose, et force est de constater que... mise à part une standardisation de mon implémentation, je n'y gagne rien au niveau fonctionnel...

Reply

Marsh Posté le 20-04-2006 à 13:39:43    

Arjuna a écrit :

alien_man > je suis d'accord avec ton analyse du webservice. je ne remet pas en cause son utilité. le seul truc, c'est que je m'attendais à ce qu'il gère des flux un peu plus complexes que du simple xml "basique". je m'attendais notamment à pouvoir transporter des objets complexes de façon automatisée, sans devoir m'amuser à les décortiquer à la main. hors ce n'est pas le cas.
en fait, tu fous une page PHP, ASP ou autre sur un site web, qui accepte en POST des paramètres (ou un flux XML) et qui renvoie un flux XML en résultat, et t'as fait l'équivalent d'un webservice. je trouve la révolution plutôt limitée. notamment, pour un projet sur lequel j'étais à la bourre, c'est ce que j'ai fait : un post sur une page .NET avec un fichier XML, et la page qui va traîter les données reçues, puis renvoyer un résultat formatté en XML aussi. j'ai regardé les webservices pour voir si j'y gagnais quelquechose, et force est de constater que... mise à part une standardisation de mon implémentation, je n'y gagne rien au niveau fonctionnel...


 
Les données que je remonte sont souvent des datasets, car derriere, ca reste une structure "xml-like". Par contre, c vrai que je n'avais pas d'objets complexes dans mes datasets. Pour en mettre, il me semble (de memoire) qu'il faut qu'ils soient serializable. car si tu mets des objets super complexe, il faut que tu sois garant de la possibilité de les reconstruire depuis n'importe quel autre techno
 
Sinon c vrai que ds le cas que tu evoques, ca n'apporte pas grand chose.
 

Reply

Marsh Posté le 20-04-2006 à 15:51:42    

en tt cas l'interopérabilité entre JAVA et .NET au niveau des WebServices, ça laisse à désirer. On voit que .NET ne respecte pas toujours les standards. :s

Reply

Marsh Posté le 24-04-2006 à 09:56:37    

En tout cas je te conseille le corba : j'avais fais un gros projet avec et c'est vraiment très sympa a utiliser.

Reply

Marsh Posté le 24-04-2006 à 10:32:09    

oui mais CORBA est en mode connecté. Et au niveau déploiement, c'est plus chiant à faire. De plus il faut faire un IDL afin de généré les classes vers les langages choisis.

Reply

Marsh Posté le 24-04-2006 à 11:12:09    

Je rejoins un peu les propos d'alien_man sur les WS.
 
L'idée était quand même de faire un standard de communication "web" multilangage.
Imagine que tu puisses envoyer un type complexe. Comment est-il codé ? Comment PHP peut le récupérer ? Peut-il le faire d'ailleurs ? Et en JSP, le résultat obtenu imposera-t-il une légère adaptation qui n'existe pas si j'utilise PERL ?
 
J'ai fait un petit prog qui implémente le protocole XML6RPC ainsi qu'une recopie sous un WebService.
 
C'est des types simples, ok, mais je peux te dire que c'était bien plus efficace et rentable de faire le WS que de refaire la partie envoi/réception d'un flux XML et son encodage/décodage. Surtout sous .NET ou Visaul Studio te mache pas mal de boulot...
 
Après faut savoir éclater les informations traitées pour simplifier le résultat. Par exemple, envoyer un graph... C'est une image... Donc du byte.
 
Moi le WS m'a pas encore frustré...


---------------
H. - 48h en fiat et j'ai déjà perdu la maitrise de mon argent
Reply

Marsh Posté le 24-04-2006 à 12:05:13    

C'est relou les web services !
=> je plussoie sans même lire la suite, juste pour le troll.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed