IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[WCF] Bonnes pratiques


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut [WCF] Bonnes pratiques
    Hello,

    Je vais prochainement être amené à développer une application client/serveur en utilisant la techno WCF.

    N'ayant jamais utilisé cette techno, je recherche donc des conseils concernant les bonnes pratiques à respecter.

    J'ai joué un peu avec en suivant un tuto pour faire un chat mais rien de bien folichon.

    La question principale que je pose est de savoir s'il vaut mieux laisser le client connecté au serveur non-stop ou s'il faut le déconnecté après chaque demande.

    Y a-t-il une limite au nombre de canaux ouverts ?

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    La question principale que je pose est de savoir s'il vaut mieux laisser le client connecté au serveur non-stop ou s'il faut le déconnecté après chaque demande.

    Y a-t-il une limite au nombre de canaux ouverts ?
    Oui c'est comme pour ADO.NET, il vaut mieux ouvrir puis fermer dès qu'on a terminé.

    Dans certains scénarios, type batch, tu peux aussi mettre tes opérations en queue, puis ouvrir ta connexion, les exécuter et enfin fermer... L'idée derrière c'est que dès que tu n'as plus besoin de la connexion, tu dois la fermer, exactement comme en SQL.

    1 canal = 1 connexion, et il y a une sorte de connection pool (comme en SQL) qui s'occupe de gérer les connexions. A noter, les connexions ne sont pas thread-safe ! Il n'est en général pas conseillé de réutiliser les canaux, il vaut mieux en créer un à chaque fois que tu en as besoin. Ce n'est pas coûteux. L'opération la plus coûteuse est de créer la ChannelFactory, qu'il vaut mieux garder en cache pour la réutiliser lorsqu'on veut créer un canal.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Comme quoi, j'ai bien fait de poser la question aussi sur le forum.

    Avant de venir ici, je suis allé faire un tour sur le chat. Là, on m'a dit qu'il valait mieux laisser ouvert et fermé une fois tout fini.

    Sinon, si je compare avec le tuto du chat, là, on laisse effectivement ouvert. Mais WCF a un timeout par défaut à 10 minutes en cas d'inactivité. Mais le chat est p-e un cas particulier.

    L'application que je vais devoir faire devra aller récupérer des informations de tickets de caisses. Donc une fois la requête envoyée et la réponse reçue, c'est vrai que je n'aurai plus besoin de la connexion avant quelques minutes. Donc autant la fermer. C'était ma première intuition et tu la confirmes. Donc ça c'est bien.

    D'autres choses auxquelles il faut faire attention avec WCF ? Des trucs particuliers qui ne sont pas forcément intuitifs ? (le genre de truc qu'on se dit après coup "fallait le savoir!")

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Mais le chat est p-e un cas particulier.
    En effet par exemple si tu utilises des mécanismes tels que full duplex ou autre, ca peut varier. Je répondais d'une manière générale pour des scénarios classiques

    Citation Envoyé par Kropernic Voir le message
    D'autres choses auxquelles il faut faire attention avec WCF ? Des trucs particuliers qui ne sont pas forcément intuitifs ? (le genre de truc qu'on se dit après coup "fallait le savoir!")
    Avec WCF il y a plein de choses à savoir, donc difficile de te faire liste exhaustive, le mieux c'est de se casser les dents dessus Un truc quand même très important, les exceptions ne vont pas remonter jusqu'à ton client, du moins pas toutes. Donc le débuggage peut être compliqué et lourd parfois... En gros la plupart des fois où tu n'as pas de message très précis, il faut que tu regardes du côté du serveur.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Le serveur devrait à priori (pas encore vraiment fait d'analyse) être trèèèèèèès simple.

    Il devrait se contenter de
    1. Recevoir :

    • un numéro de magasin
    • une date
    • un numéro de caisse
    • un numéro de ticket

    2. Faire la requête vers le serveur approprié (déterminé en fonction du numéro du magasin) pour récupérer les infos du ticket
    3. Renvoyer le ticket vers le client (ce sera une classe qui contiendra toutes les infos nécessaires)

    Donc niveau erreur côté serveur, ça devrait aller ^^.

    Ce que je redoute le plus, ce sont les problèmes de communication entre clients et serveur car je n'y connais pas grand chose en réseau et quand bien même, je n'ai pas la main dessus pour pouvoir administrer quoi que ce soit...

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Donc niveau erreur côté serveur, ça devrait aller ^^.
    Tant mieux alors ! C'est souvent ce que je me dis aussi mais bizarrement il y a toujours quelque chose qui ne marche pas

    Citation Envoyé par Kropernic Voir le message
    Ce que je redoute le plus, ce sont les problèmes de communication entre clients et serveur car je n'y connais pas grand chose en réseau et quand bien même, je n'ai pas la main dessus pour pouvoir administrer quoi que ce soit...
    Ca tu peux (et tu dois ) le planifier avec ton équipe réseau. Pour chaque serveur il faut recenser la liste des ports nécessaires (ex. 80 pour HTTP, 443 pour HTTPS, 1433 pour SQL Server, etc.) et tu leur envoie en leur demandant s'il y a quelque chose (firewall, reverse proxy, etc.) qui puisse bloquer les communications entre les machines sur ces ports.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Bonnes pratiques de protections individuelles
    Par Community Management dans le forum Sécurité
    Réponses: 23
    Dernier message: 11/06/2024, 11h23
  2. [Débutant] Bonne pratique de WCF sans baisse de performance ?
    Par Tempinou dans le forum Services Web
    Réponses: 3
    Dernier message: 24/05/2015, 17h13
  3. WCF + Linq : bonnes pratiques ?
    Par Arnard dans le forum Windows Communication Foundation
    Réponses: 16
    Dernier message: 02/11/2008, 10h58
  4. [FOREIGN K] Valeur de champ = nom de table. Bonne pratique ?
    Par Seb des Monts dans le forum Langage SQL
    Réponses: 9
    Dernier message: 17/05/2005, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo