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

Services Windows Discussion :

WCF en tant qu'application sur un workstation [Débutant]


Sujet :

Services Windows

  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 WCF en tant qu'application sur un workstation
    Bonjour


    Je réalise un petit service WCF, mais avec les contraintes suivantes :

    1 - Le"serveur" sera un desktop worstation sous W7 pro, donc pas de serveur
    2 - même pas de domaine ... un WorkGroup !
    3 - pas un service windows mais une application lancée au logging


    eurhh

    Du coup ce que je vois dans les tutoriaux de WCF est un peu différent et j'ai les premières interrogations suivantes :

    1 -Comment déploie-je mon "service" WCF sur le PC d'accueil ?
    Car ce n'est pas une service dans ce cas là, mais une simple application non ?

    2 - Ensuite, l'application cliente va consommer le "service" comment ?

    PS :
    1 - Je suis en train de construire mon code client pour qu'il utilise le "service".
    2 - Dans le service, je créée aussi une "application" qui instancie le "service" WCF... enfin je pense que ça peut tourner ainsi ...

    Quelqu'un pourrait m'aiguiller un peu ?

  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 : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Tu peux héberger un service WCF au sein d'un Service Windows (qui tournera donc en tâche de fond sur Windows...). Tu trouveras un exemple ici : How to: Host a WCF Service in a Managed Windows Service.

    L'application cliente va ensuite le consommer de manière quasiment classique (sous entendu comme si c'était sous IIS).

    Je n'ai jamais eu à mettre en place ce genre de chose, donc fais des tests avant de te lancer, car il y a peut-être des limitations.
    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 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 de ta réponse détailée

    Citation Envoyé par DotNetMatt Voir le message
    Tu peux héberger un service WCF au sein d'un Service Windows (qui tournera donc en tâche de fond sur Windows...).
    OK, ce sont tous les deux des services en fait.

    Du coup, pourquoi je ne conserverais pas dans ce cas le service WCF plutôt que de prendre un service windows si je dois obligatoirement prendre un service ? Il y a une restriction que je n'ai pas saisie ?


    Citation Envoyé par DotNetMatt Voir le message
    oui je vais aller lire cela, merci

    Questions :

    Sachant que je dois faire une APPLICATION qui se lance automatiquement dans le "démarrage" de la session du windows seven pro, ce n'est pas un service à mon sens et sauf erreur.
    Or d'après tes infos ci-dessus, je n'ai le choix qu'entre le service WCF et le service windows (qui encapsulerait le service WCF).
    Du coup je ne comprends plus trop

    1 - Choix d'un service obligatoire?
    2 - Pourquoi alors passer par un service Windows ?

    Je suis perdu pour continuer mon dév là

    Du coup

  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 : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Hepil Voir le message
    Je suis perdu pour continuer mon dév là
    Oui apparemment tu mélanges tout.

    Ce qu'on appelle un Service WCF (WCF Service en Anglais) est un web service. Nativement, on héberge les web services avec un serveur web (IIS par exemple).

    Un Service Windows est une sorte d'application sans interface qui va tourner en tâche de fond sur ta session Windows. Ca n'a donc rien à voir avec le service WCF.

    Par extension, Microsoft offre la possibilité d'héberger un Service WCF dans un Service Windows. On peut considérer que le Service Windows remplit dans ce cas le rôle d'un serveur Web (ce n'est pas vrai, mais c'est pour te donner une image).

    Donc voilà soit tu héberges ton Web Service WCF dans un IIS, soit tu le fais dans un Service Windows, sachant que c'est le Service Windows qui répond aux critères que tu as exprimé.

    Sur le lien que je t'ai donné tu as un exemple codé en entier, donc il te suffit de le reprendre et de l'adapter.
    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 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
    là j'ai tout compris ...
    Du coup je dois passer par un service windows qui "encapsulera" bien mon service web WCF.

    merci

    PS : je continue et le reviens ici plus tard pour clore éventuellement ...

  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 : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Hepil Voir le message
    Du coup je dois passer par un service windows qui "encapsulera" bien mon service web WCF.
    Voilà c'est ça.

    Bon courage
    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.

  7. #7
    Invité
    Invité(e)
    Par défaut
    D'accords avec la plupart de ce que tu dis sauf la phrase suivante :
    Citation Envoyé par DotNetMatt Voir le message
    Ce qu'on appelle un Service WCF (WCF Service en Anglais) est un web service.
    WCF est un framework (ensemble de bibliothèques) intégré à .Net permettant de faire du SOA (Service Oriented Application ou en français Application Orientée Service).

    WCF permet en effet de créer un services Web (remarque je n'ai pas dit la même chose que toi ) mais permet de faire beaucoup plus. Dans le monde WCF on parle de service Web uniquement si l'échange se fait via des protocoles web (http ou https) mais dans le cas où il s'agit de TCP ou autres protocoles alors là le service n'est pas un service Web mais il faut tout simplement dire Service WCF.

  8. #8
    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 : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Effectivement h2s84, je n'ai pas voulu trop rentrer dans les détails pour ne pas perdre notre ami Hepil dans trop d'information Mais tu as raison de préciser ce point !
    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.

  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
    re ...

    merci pour ce prélude fort sympathique ... à mon souci présent

    On me dit que je ne dois pas utiliser IIS sur le "serveur"
    Faire du très simple, juste une application cliente qui va utiliser le "service" WCF

    donc :
    - je ne fais pas de service (ni web ni windows)
    - je dois faire une application qui offre les méthodes de mon "Service" WCF
    - cette application sera lancée manuellement ou via le Démarrage de windows

    du coup je ne ais pas non plus comment je vais faire pour la déployer sur mon pseudo-serveur ...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Hepil Voir le message
    du coup je ne ais pas non plus comment je vais faire pour la déployer sur mon pseudo-serveur ...
    Une recherche sur le net te montrera comment facilement héberger ton service WCF dans une application client lourd (console, WinfForm ou WPF). C'est très simple. Pour le lancement automatique, il suffit d'ajouter le raccourci de l'application dans le dossier de démarrage de Windows et c'est bon.

  11. #11
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 064
    Points : 4 229
    Points
    4 229
    Par défaut
    Sur ce tuto il héberge son service WCF dans une application windowsForm:
    http://webman.developpez.com/articles/dotnet/wcf/intro/

  12. #12
    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
    oui pour tout !

    bonjour et merci de vos réponses

    j'ai de la lecture ... je vous tiens au courant rapidement
    plus belle la vie ...

  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
    Citation Envoyé par h2s84 Voir le message
    Une recherche sur le net te montrera comment facilement héberger ton service WCF dans une application client lourd (console, WinfForm ou WPF). C'est très simple.
    Je vais utiliser effectivement cela, pour une WinForm

    Je veux que mon host soit une WinForm simple, qui héberge donc mon WCF
    Est-ce possible de tout mettre dans la même solution (le WCF et le WinForm host) ?

    càd un deuxième projet dans la même solution ?

    Je me lance dans cette voie en attente de vos conseils ...
    je suis pressé ...


    Citation Envoyé par h2s84 Voir le message
    Pour le lancement automatique, il suffit d'ajouter le raccourci de l'application dans le dossier de démarrage de Windows et c'est bon.

    pas de souci pour cela, merci

  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
    Citation Envoyé par youtpout978 Voir le message
    Sur ce tuto il héberge son service WCF dans une application windowsForm:
    http://webman.developpez.com/articles/dotnet/wcf/intro/
    je suis ce tuto pour mon host ... merci

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Hepil Voir le message
    Je veux que mon host soit une WinForm simple, qui héberge donc mon WCF
    Bien sûr. C'est possible même si je ne vois pas trop l'intérêt. Je ne dis pas qu'il y en a pas sinon le binding netNamedPipedBinding n'aurait pas existé. . Si WCF le propose c'est qu'il y a une raison :-)
    Bref je te recommande le binding netNamedPipedBinding qui est performant dans le cas où le service WCF et le client s'exécutent sur la même machine.

    Citation Envoyé par Hepil Voir le message
    Est-ce possible de tout mettre dans la même solution (le WCF et le WinForm host) ?
    un deuxième projet dans la même solution ?
    Je ne vois de problèmes à ce point. C'est possible.

  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
    Citation Envoyé par h2s84 Voir le message
    ... je te recommande le binding netNamedPipedBinding qui est performant dans le cas où le service WCF et le client s'exécutent sur la même machine.

    ...
    merci


    Dans mon cas, je fais un Host pour héberger le WCF
    ces deux dans une même solution

    Le client est sur une autre machine ...



    Pour info :
    Le contrat est du type message (contract, header ...)
    il s'agit de transfert d'1 fichier zip après sa sélection dans une liste, liste fournie aussi par le WCF ...

    mon binding utliise : basicHttpBinding, que j'espère approprié ...

  17. #17
    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 youtpout978 Voir le message
    Sur ce tuto il héberge son service WCF dans une application windowsForm:
    http://webman.developpez.com/articles/dotnet/wcf/intro/
    je galère pour trouver d'où provient : DevService.CurrencyService
    Quelle référence ? Dans le code source du tuto, càd ci-dessous :


    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
    using System.ServiceModel;
    public class Form1
    {
    	private ServiceHost host;
    	private void btServiceStart_Click(object sender, System.EventArgs e)
    	{
    		host = new ServiceHost(typeof(DevService.CurrencyService));
    		try {
    			host.Open();
    			this.btServiceStart.Enabled = false;
    			this.lblServiceState.Text = "Service is started";
    		}
    		catch (Exception ex) {
    			this.btServiceStart.Enabled = true;
    			this.lblServiceState.Text = "Service can't be started";
    		}
    	}
    	private void btServiceStop_Click(object sender, System.EventArgs e)
    	{
    		if (host.State == CommunicationState.Opened | host.State == CommunicationState.Faulted | host.State == CommunicationState.Opening)
    		{
    			host.Close();
    			this.btServiceStart.Enabled = true;
    			this.lblServiceState.Text = "Service is stopped";
    		}
    	}
    }

  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
    j'ai trouvé :

    c'est le namespace.nomduservice

    et il faut ajouter le service en référence dans le projet host
    Donc un lien entre les deux projets (service et host) dans la mêm solution


    Dans mon cas : host add référence ... MonService

    je deviens bon ...

  19. #19
    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
    Dans le code d'exemple fourni, il manque sans doute une Form avec deux boutons et un objet Label
    car il ya les références de ces objets

    J'ai un doute dans la deuxième partie du code, pour laa méthode btServiceStop_click(...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            private void btServiceStop_Click(object sender, System.EventArgs e)
            {
                if (host.State == CommunicationState.Opened | host.State == CommunicationState.Faulted | host.State == CommunicationState.Opening)
                {
                    host.Close();
                    this.btServiceStart.Enabled = true;
                    this.lblServiceState.Text = "Service is stopped";
                }
            }
    On parle toujours du btnServiceStart ? je cherche ... est-ce une erreur ?


    Dans le doute, j'ai créé un Form, avec 2 btn et un Lbl, 1 btn close et zouuuuu
    En reprennant les noms des objets présents dans le code ...

  20. #20
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 064
    Points : 4 229
    Points
    4 229
    Par défaut
    En faite il faut que t'ajoute 2 boutons à ta form un btServiceStart et un btServiceStop qui te permettent d'activer et d'arrêter le service mais t'es pas obligé de le faire c'est comme tu le souhaites.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. lancer une application sur un autre pc local
    Par amireve dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 08/09/2005, 22h00
  2. Réponses: 2
    Dernier message: 20/06/2005, 12h46
  3. application sur le bureau
    Par SQUAL dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 14/06/2004, 18h18
  4. base de donnees sur serveur application sur client
    Par rabi dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/05/2004, 22h04
  5. quel langage pour créer des "applications" sur 1 s
    Par jaribu dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 30/07/2003, 15h06

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