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 :

un service pour récupérer des ZIP


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut un service pour récupérer des ZIP
    Bonjour à tous
    Je n'ai jamais fait de services ni utiliser WCF

    Je cherche juste la méthode, les grandes lignes, la structure générale pour réaliser mon service via WCF

    J'ai un poste windows seven qui va me servir de serveur, avec des fichiers ZIP dessus
    Les clients ont tous une même application sur leur propre poste de travail
    Cette applicatin doit utiliser un service sur le serveur afin de récupérer des ZIP (d'une GED) en fonction de paramètres divers (version, date, param1, param2 ...)

    J'ai aussi mon poste de dev en windows seven et VS 2010 utiliser pour réaliser ce service

    Il ne s'agit pas réellement d'un service web; l'application est en winform !

    Quelle est la manière de réaliser le transfert d'un ZIP (donc un fichier) via WCF, sécurisé (crypté ?) du serveur vers le client ?

    Je peux me débrouiller pour le formulaire éventuel de saisie des paramètre, de recherche du ZIP dans une liste ...

    Mais ensuite, pour utiliser WCF et récupérer ce fichier ZIP ?

  2. #2
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    je me lance :

    Mon choix porte déjà sur un service WCF library en C#, et pas l'application service WCF
    J'espère avoir raison ...

    Ensuite, il faudra que mon service me renvoi d'abord la liste des ZIP suivant les paramètres fournis au service (version, date, param1 ...)

    Puis, après sélection du ZIP, l'envoi du ZIP lui-même

    pour les contrats, je vais en avoir deux dans la partie Interface de iService1.cs:

    pour la liste :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [OperationContract]
            List<String> list;


    mais pour le transfert ?
    quel objet ?

  3. #3
    Membre régulier
    Homme Profil pro
    Developpeur
    Inscrit en
    Décembre 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 111
    Points : 79
    Points
    79
    Par défaut WCF envoie des fichiers Zip
    Pourquoi mettre une liste qui renvoie des Strings alors que tu maniple des fichiers?
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [OperatinContract]
    List<File>lstfile;

  4. #4
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Merci HLama de ta réponse,

    je tiens compte de cette correction dans mon code dès ce jour
    Cependant, j'ai trouvé un document intéressant sur le web.

    du coup je partirais sur :

    [Messagecontract]

    en lieu et place de
    [DataContract]

    ... je continue ma lecture et je l'adapte à mon besoin.
    Je reviens ici pour vous informer de mes choix et en discuter, "si tel est votre bon plaisir" ... LZ

  5. #5
    Invité
    Invité(e)
    Par défaut
    Le lien que tu fournis correspond à la bonne méthode.

    Par contre pour le binding si toutes tes machines utilisent les technos microsoft c'est à dire tu peux utiliser WCF des deux cotés Server et Client alors je te conseille le binding TCP : netTcpBinding au lieu du basicHttpBinding utilisé dans le tuto. Plus de détails sur l"utilisation de certaines binding par rapport à d'autres ici.

  6. #6
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Merci H2S84

    J'en tiens compte aussi
    Tous les clients seront sous Windows, Framework 3.5 mini

    Question actuelle en plus :
    Mon service doit d'abord me retourner la liste des fichiers ZIP
    Puis le fichier Zip choisi

    Ceci implique deux messages différents non ?
    Comment dois-je programmer cela ?

    je cherche ça...

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Hepil Voir le message
    Ceci implique deux messages différents non ?
    Oui il s'agira de faire deux opérations différentes.

    Citation Envoyé par Hepil Voir le message
    Comment dois-je programmer cela ?
    La première qui te retourne la liste des fichiers n'a pas besoin d'être un MessageContrat tu peux utiliser la collection List<string>.
    La deuxième opération tu la programmes comme expliquer dans le tuto.

  8. #8
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Peut-être faire un contrat de Données "généraliste"
    et deux contrats de services "spécialisés ?


    ok pour ta réponse, j'adapte ...

  9. #9
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Oui il s'agira de faire deux opérations différentes.


    La première qui te retourne la liste des fichiers n'a pas besoin d'être un MessageContrat tu peux utiliser la collection List<string>.
    La deuxième opération tu la programmes comme expliquer dans le tuto.
    Cette deuxième opération devrait être une méthode autonome, non ?
    Dans la même classe que le contrat ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Hepil Voir le message
    Cette deuxième opération devrait être une méthode autonome, non ?
    Dans la même classe que le contrat ?
    Les deux opérations citées dans mon précédent message sont indépendantes. Chacune de ces opérations est représentée par une méthode dans ton contrat de service (la classe qui représente ton service WCF). Et bien évidemment tu dois d'abords faire appel à la méthode qui retourne la liste des fichiers et ensuite faire appel à la seconde pour les récupérer ces dits fichiers.

  11. #11
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    ok je m'y attelle ... @ plus tard

    ...Non j'ai un doute

    ayant deux fichiers, iService1 et Service1
    Le MessageContract est dans iService1
    Le ServiceContract aussi

    Les méthodes de "gestion" de mon service WCF vont être dans Service1.cs
    Y compris celle qui fournira la liste des ZIP

    Est-ce juste ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Hepil Voir le message
    Est-ce juste ?
    Oui c'est bien ça. Normalement si tu regardes dans l'un des fichiers tu as des commentaires et des exemples de méthodes fournies par Microsoft qui te montre comment procéder.

  13. #13
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Ok, la méthode qui recense la liste des fichiers disponibles au téléchargement est achevée.

    les lignes principales sont :

    Code non testé !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
            private String[] versionZips;
            /// <summary>
            /// Contains the list of version files
            /// </summary>
            public String[] VersionZips
            {
                get { return versionZips; }
                set { versionZips = value; }
            }
    
            public void VersionList(byte Cat)
            {
                /* The category is the only parameter to obtain the list of existing versions from server
                 * The right file type will be select in relation to the category: it's a filter for ZIP files
                */
    ...
                    switch (Cat)
                    {
    ...
                        case 5:     // AAM
                            /*
                             * This concerns AAM Alarm Messaging Zip files transfert for version data
                             */
                            if (stringPath != null) versionZips = Directory.GetFiles(stringPath, "*.zip");
                            /*
                             * "stringPath" contains the list of versions to send to the client in response to its previous request
                             * the client will choice then the right version to get the expected zip file
                             */
                            break;
              }
    Du coup, pour utiliser le MessageContrat et ServiceContract, je m'interroge :
    à quoi ça sert de passer par Messagecontract et par ServiceContract puisqu'on peut faire plein de choses déjà dans la classe qui l'appellera (ci-dessus) ?

    Est-ce juste le partage des données et des méthodes qui sera optimisé par l'utilisation des contrats ?

    je dois revenir aux sources du WCF ... sérialisation message, cryptage ... tout cela est dans le service en fait

    OK, je continue

  14. #14
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Bonjour

    Dans le code cité en référence ci-dessous, l'auteur fait l'inverse de ce que je veux faire:
    il "upload", et moi je veux "download"

    Je dois ainsi modifier le code ... ça chauffe

    Code trouvé sur un autre site :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    public class Upload : IUpload
     
    {
        #region IUpload Members
        public void UploadFile(MessageFile file)
        {
            Stream sourceStream = file.DataFile;
            FileStream destinationStream = null;
            string uploadFolder =
                String.Format(
                    "{0}{1}\\{2}"
                    , AppDomain.CurrentDomain.BaseDirectory
                    , ConfigurationSettings.AppSettings["UploadDirectory"]
                    , file.FileName
                );
            using (destinationStream =
                new FileStream(uploadFolder
                    , FileMode.Create
                    , FileAccess.Write
                    , FileShare.None))
            {
                const int bufferLen = 8192;
                byte[] buffer = new byte[bufferLen];
                int count = 0;
                while ((count = sourceStream.Read(buffer, 0, bufferLen)) > 0)
                {
                    destinationStream.Write(buffer, 0, count);
                }
                sourceStream.Close();
            }
        }
     
        #endregion
     
    }

  15. #15
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    je cherche aussi la complémentarité entre Stream et FileStream ...

    Pourquoi utiliser Stream pour la source et FileStream pour la destination ?

  16. #16
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Je me suis emmêlés les pinceaux là ...
    Si je me place du côté service, donc serveur, je fais bien du upload !!!

    Le download sera quant à lui du côté client ...

    C'est bien cela qu'il faut comprendre ? svp ...

  17. #17
    Invité
    Invité(e)
    Par défaut
    Si tu écris le fichier côté ça s'appelle upload (téléversement)
    Si tu écris le fichier côté client ça s'appelle download (télécharger)

    Citation Envoyé par Hepil Voir le message
    je cherche aussi la complémentarité entre Stream et FileStream ...

    Pourquoi utiliser Stream pour la source et FileStream pour la destination ?
    La classe FileStream dérive de Stream qui est une classe abstraite donc ne peut être instanciée. Peut-être qu'il utilise la classe FileStream pour avoir accès à des méthodes propres à cette classe donc pas dispo dans la classe de base Stream (tu peux vérifier).
    Dernière modification par Invité ; 18/06/2013 à 13h51.

  18. #18
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    la suite ici

  19. #19
    Invité
    Invité(e)
    Par défaut
    Peux-tu STP mettre le sujet présent à résolu si c'est le cas en cliquant le bouton prévu à cet effet en bas de cette discussion ? Merci d'avance.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/10/2006, 09h56
  2. fonction pour récupérer des données xml
    Par jeff29 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2006, 15h46
  3. Pb pour récupérer des mots de passe
    Par m@thieu84 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 26/05/2006, 18h07
  4. [Javascript] PB pour récupérer des valeurs !
    Par chaser_T dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/04/2006, 10h26
  5. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44

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