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

C# Discussion :

Dialogue entre un webservice et une application tierce sous Visual Studio


Sujet :

C#

  1. #1
    Membre habitué

    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Février 2013
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 148
    Points : 199
    Points
    199
    Par défaut Dialogue entre un webservice et une application tierce sous Visual Studio
    Bonjour à tous,

    N'étant pas un grand habitué des architectures sous Visual Studio, j'ai une question, ou plutôt une demande de conseil :

    J'ai un webservice (WCF) qui reçois et envoi des données.
    Sur la même machine, une application tierce en C#.
    J'ai besoin que cette application envoie et reçoive des données à partir du webservice.
    Pour "lier" les deux parties quoi doivent communiquer entre elle, je pense que la meilleure solution est une "Class library" sous forme de DLL.
    Qu'en pensez-vous ?

    Merci
      0  0

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    ta demande n'étant pas claire, ce que j'en comprends:

    Ajouter une référence à ton Web service dans ton application C# et appeler les méthodes de ton web service directement depuis ton appli C#.

    Je ne vois pas l'intérêt de mettre une librairie supplémentaire...
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)
      1  0

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Je ne vois pas non plus l'intérêt de passer par un WebService si l'application consommatrice est en local...
    Autant inclure le code du WebService dans l'application consommatrice, et utiliser des objets locaux...

    C'est d'ailleurs comme ça que j'avais compris la question

    Un projet DLL "core", qui va contenir toute la logique métier, indépendement du support (WinForm, WCF, etc.)
    Un projet WCF qui ne fait que wrapper la DLL "core".
    Un projet WinForms ou autre, qui référence la DLL "core" lui aussi.

    Comme ça, une seule DLL pour les deux applications (WCF et WinForms) mais pas d'utilisation inutile du WebService en local.
    On ne jouit bien que de ce qu’on partage.
      0  0

  4. #4
    Membre habitué

    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Février 2013
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 148
    Points : 199
    Points
    199
    Par défaut
    Salut messieurs

    Je comprends vos incomprehension.

    En fait, l'application qui doit piloter le webservice est développé sous Unity3D.
    Donc je ne peux pas utiliser le même workflow que sous Visual Studio.
    Mon seul choix et d'utiliser une DLL ou alors un protocole de communication entre Unity et le webService

    En fait ma question est simple :

    Est-ce que l'on peux partager une instance entre deux applications (donc deux processus différents) avec une dll ?
      0  0

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    Je pense qu'il serait temps de décrire pleinement ton contexte, ton besoin...

    Tu dis que tu as une application écrite en Unity 3D qui appelle un Web Service.

    Que veux-tu faire de plus ? parce que là, c'est juste incompréhensible ce que tu veux faire...

    Poses ton besoin... on verra ensuite ce qu'il parait raisonnable de faire pour le résoudre... mais par pitié, ne fait pas d'hypothèse sur la technique à utiliser
    pour résoudre un problème avant de l'avoir explicité.
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)
      0  0

  6. #6
    Membre habitué

    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Février 2013
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 148
    Points : 199
    Points
    199
    Par défaut
    Ok TheMonz, désolé

    J'ai un simple webService ASP :
    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
     
    namespace TestService
    {
     
        /// <summary>
        /// Description résumée de WebService1
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // Pour autoriser l'appel de ce service Web depuis un script à l'aide d'ASP.NET AJAX, supprimez les marques de commentaire de la ligne suivante. 
        // [System.Web.Script.Services.ScriptService]
        public class WebService1 : System.Web.Services.WebService
        {
     
     
            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";
            }
     
            [WebMethod]
            public string SendMessageToUnity(string msg)
            {
                if (Bridge.SendMessageToUnity != null)Bridge.SendMessageToUnity(msg);
     
                return "Message " + msg + " sent to Unity";
            }
        }
    }

    La ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (Bridge.SendMessageToUnity != null)Bridge.SendMessageToUnity(msg);
    Fait référence à une classe incluse dans une librairie (UnityBridge.dll)
    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace UnityBridge
    {
        // Cette classe statique est utilisée pour lier le module Unity au webService
        public class Bridge
        {
            public delegate void SendMessage(string msg);// Le delegate doit avoir la même signature que la méthode utilisée dans le service
            public static SendMessage SendMessageToUnity;
        }
    }
    Et dans unity, j'ai un simple code dont le but est d'afficher le paramètre envoyé avec la méthode SendMessageToUnity (paramètre)

    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
     
    using UnityEngine;
    using UnityEngine.UI;
    using System.Collections;
    using UnityBridge;
     
    public class DiotaRAModule : MonoBehaviour {
     
    	public Text screenText;
     
    	void Awake(){
    		Bridge.SendMessageToUnity = showMessage;
    	}
     
    	public void showMessage(string msg){
    		screenText.text = msg;
    	}
     
    	void Start () {
    		showMessage ("En attente d'un appel du webService ASP...");
    	}
    }
    Pour simplifier donc :

    WebService ASP -> UnityBridge.dll -> Unity3D

    J'ai tout qui ce compile sans erreur, mais comme unity et le webService ne partagent pas le même processus, la dll ne peux pas partager d'instance.
    Comment faire que l'instance (enfin dans ce cas le delegate) soit partagé entre le webservice et unity ?
      0  0

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Ok, c'est beaucoup plus clair...

    Donc, tu as, sur ton PC :
    - Un WebService qui reçoit des messages
    - Une application qui tourne

    Et tu veux que le WebService envoie les messages reçus à l'application.

    Donc ce que tu veux faire, c'est faire dialoguer deux processus.

    Il y a des tas de méthodes pour le faire.

    Je viens d'en trouver deux :

    1/ Inclure le WebService dans l'application (de ce que j'en ai compris) :
    http://tech.pro/tutorial/855/wcf-tut...-communication

    2/ Utiliser des pipes anonymes (ce qui me semble plus conventionnel) :
    https://msdn.microsoft.com/en-us/library/bb546102.aspx
    On ne jouit bien que de ce qu’on partage.
      0  0

  8. #8
    Membre habitué

    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Février 2013
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 148
    Points : 199
    Points
    199
    Par défaut
    C'est exactement ça
    Ok je vais étudier ces deux méthodes, merci
    ´
    [EDIT1]
    Je galère un peu, les pipes c'est quand même assez complexe, et si j'ai bien compris limité car un processus prends la main sur l'autre, ce n'est pas bidirectionnel (mon module sous unity va envoyer et recevoir des données du serveur .NET)

    [EDIT2]
    Toujours en galère.
    Il serais possible si je comprends bien la doc officielle de partager une instance entre deux applis (processus) avec les domaines.
    Quelqu'un connais ?

    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

    Je lorgne vers l'utilisation des mutex, mais idem, manque d’expérience en .NET pour pouvoir les utiliser

    [EDIT3]
    Un exemple de singleton cross domain : http://www.ingebrigtsen.info/2007/05...ain-singleton/

    [EDIT4]
    Pour clarifier mon problème, j'ai crée un autre POST.
      0  0

Discussion fermée
Cette discussion est résolue.

Discussions similaires

  1. Créer une application 64bits avec Visual Studio
    Par Invité dans le forum Visual Studio
    Réponses: 3
    Dernier message: 17/05/2013, 19h02
  2. Réponses: 2
    Dernier message: 04/10/2010, 10h03
  3. Réponses: 2
    Dernier message: 21/05/2008, 11h55
  4. Réponses: 6
    Dernier message: 26/09/2007, 07h55
  5. Réponses: 5
    Dernier message: 31/08/2006, 10h06

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