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

Windows Communication Foundation .NET Discussion :

Ne pas modifier maxArrayLength


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre du Club Avatar de ralf91
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 419
    Points : 60
    Points
    60
    Par défaut Ne pas modifier maxArrayLength
    bonjour,

    je voudrais savoir une chose, a quoi sert d'augmenter la taille de MaxReceivedMessageSize et MaxBufferSize ?? j'ai essayé d'envoyer des images relativement volumineuses donc pour les faire passer j'ai du augmenter la taille de maxArrayLength, je convertis l'image en tableau de bytes et j'envoie ce tableau par la suite.

    pour ne pas modifier la taille de "maxArrayLength", donc au lieu d'augmenter la taille de maxArrayLength j'ai augmenté la taille de MaxReceivedMessageSize et MaxBufferSize et cette fois ci je n'envoie plus des tableaux mais des stream (je veux éviter l'augmentation de taille de maxArrayLength) mais c'est pareil apparemment car lorsque j'envoie mon image de grande taille ca passe pas ?

    Bref, comment pourrais je envoyer mon image volumineuse sans augmenter maxArrayLength ? j'ai eu l'idée de l'envoyer avec des streams au lieu de tableaux de bytes mais ca ne résout pas le problème !

  2. #2
    Nouveau membre du Club

    Inscrit en
    Juillet 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Je suis conscient que ça ne répondra peut-être pas totalement à ta question, mais si ça peut te débloquer ...

    Pourquoi ne pas scinder le byte[] et envoyer ton fichier par parties en l'accompagnant d'un flag de début/fin ?

    Grâce à cette méthode tu pourrais envoyer des données de la taille que tu souhaites avec la configuration de base des services, ton back office n'a qu'à concaténer le tout à la réception du flag de fin. (si tu as plusieurs clients potentiels accompagne le tout d'un token d'identification pour ne pas confondre les morceaux )

  3. #3
    Membre du Club Avatar de ralf91
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 419
    Points : 60
    Points
    60
    Par défaut
    salut,

    merci de m'avoir répondu, a vrai dire j'avais déjà pensé a cette solution et je voulais l'éviter un petit peu, car je la trouve un peu compliquer a gérer, merci quand même !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Salut,

    ton exemple est un peu spécifique. WCF utilise plusieurs quotas afin d'éviter les attaques de type DoS. On peut citer MaxReceivedMessageSize, MaxBufferSize et maxArrayLength.

    Le comportement de WCF par défaut est de bufferiser les messages c'est à dire de copier en mémoire l'ensemble du message avant et après traitement dans les pipelines WCF. Dans ce sens, MaxReceivedMessageSize et MaxBufferSize représente à peu près la même chose. maxArrayLength lui limite les tableaux en paramètre ou en sortie des opérations du service. Au final dans ce mode et si ton service possède un méthode avec un tableau, ces trois paramètres sont liés.

    Il existe un autre mode Streamed plus adapté au transfert de fichier et des gros volumes. L'idée est que WCF copie par des parties dans le buffer sans vraiment manipuler l'ensemble du message en mémoire. Voici un lien pour expliquer les différences.

Discussions similaires

  1. [ADO.Net][VB.NET 2.0] Pourquoi ma bdd n'est pas modifiée ?
    Par olivier57b dans le forum Accès aux données
    Réponses: 5
    Dernier message: 30/04/2006, 22h51
  2. Réponses: 2
    Dernier message: 04/01/2006, 10h13
  3. [D7] comment ne pas modifier des lignes d'1 TStringGrid
    Par raoulmania dans le forum Composants VCL
    Réponses: 5
    Dernier message: 15/12/2005, 08h28
  4. Réponses: 4
    Dernier message: 21/08/2005, 20h14

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