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

Dotnet Discussion :

Créer une application accessible par plusieurs clients


Sujet :

Dotnet

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 66
    Points : 34
    Points
    34
    Par défaut Créer une application accessible par plusieurs clients
    Bonjour,

    J'aimerai que mes utilisateurs puissent se connecter sur un meme serveur et modifier certaines données en commun sur mon logiciel (qui est principalement un logiciel de saisie).

    J'ai déjà fait quelques projets en local sous java il y a 2-3 ans et j'utilisais des webservices qui était assez pratique.

    - Comment me conseillez-vous de faire dans ce cas là ? L'idée est donc que la base de données ne sera plus installée sur chaque pc mais sur le serveur et le serveur enverra les infos aux clients et inversement.

    - J'ai une deuxième question, au delà de l'aspect gestion de la BDD, comment se passe le portage du serveur (application) sur un serveur (matériel) ? J'ai toujours effectué des tests en local où le serveur avait l'ip de ma machine mais là j'aimerais qu'il puisse etre sur mon serveur internet (hebergement dédié) et tourne en permanence en attente de nouveaux clients. Comment cela se passe-t-il ? Je suppose qu'il ne suffit pas de mettre l'exe (WF ou WPF) via filezilla et le lancer, cela doit etre plus compliqué ? Je possède un hébergement chez ikoula sur windows.

    D'ailleurs peut etre qu'il faut oublier l'idée d'un serveur WF/WPF ?

    J'espère avoir été assez clair dans mes questions, le problème c'est que c'est un peu flou de mon coté

    Merci pour vos réponses.

    Cordialement,

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    Je n'arrive pas réellement a comprendre ta problématique, je vais donc t'aiguiller sur ce que je crois comprendre et on triera ensuite:

    Dans un premier temps il te faut coder un serveur (logiciel) au format windows forms ou console peut importe, en gros tu instancie un nouvel objet socket et tu le met dans un état d'écoute. donc sur le principe c'est un peu ce que tu disai dans la fin de ton message, tu upload ton executable que tu as développé, tu le lance (tu lance un terminal serveur pour avoir une vue graphique de ton serveur et tu lance l'executable)

    Dans un second temps tu peut aussi mettre cet executable que tu as codé au démarrage de ton serveur windows, pour qu'il se remette en ecoute directement au démarrage du systême

    Exemple de cours sur les sockets (regarde notamment la partie serveur) http://stephaneey.developpez.com/tut.../sockets/#L1.2

    Après pour la partie que je ne comprend pas de ton topic, quel type de données tu veux faire modifier? est ce que c'est un ensemble de données massives genre beaucoup de fichiers (doc/xls/ppt/films/musics...) ou juste un fichier de configuration a retoucher?

    Dans tous les cas le principe est de faire un client windows Forms par exemple où tu met un bouton pour mettre a jour le ou les fichiers sur ton serveur. Là sur le principe le client se connecte au serveur (s'authentifie avec des credentials login/pass ou sans rien au choix) et ensuite tu transfert ton fichier au serveur qui enregistre le contenu au bon endroit
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    Euh on est en .Net ici, Microsoft a quand même inventer la couche WCF, un peu plus pratique que le tcp/ip.

    Sinon tu dois cree un Wcf Service qui sera deployer chez un hebergeur via ISS
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    oui un web service WCF facilite beaucoup la tâche mais bon après le gros inconvénient est d'avoir un serveur Windows / IIS et tout le bazarre qui alourdi le systême alors qu'en TCP/IP ca reste relativement "light" et tu peux le personnaliser. Mais c'est vrai que j'aurrai pu aussi te suggérer cette alternative
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  5. #5
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par Shadow69 Voir le message
    oui un web service WCF facilite beaucoup la tâche mais bon après le gros inconvénient est d'avoir un serveur Windows / IIS et tout le bazarre qui alourdi le systême alors qu'en TCP/IP ca reste relativement "light" et tu peux le personnaliser. Mais c'est vrai que j'aurai pu aussi te suggérer cette alternative
    WCF n'a pas besoin d'IIS. Il est possible d'héberger un service WCF dans une application console ou encore dans un service. Mais l'héberger dans IIS reste très pratique.

    Pour utiliser les sockets directement il faut de vraies raisons (autre que sa pseudo légèreté) car en terme de temps de dev, de risques d'erreurs et de facilités d'évolutions on est loin de WCF.


    J'aimerai que mes utilisateurs puissent se connecter sur un meme serveur et modifier certaines données en commun sur mon logiciel (qui est principalement un logiciel de saisie).
    Tu peux faire ton application en 2 parties : le serveur sur lequel se trouvera ta base de données et les services WCF hébergé dans IIS par exemple, et le client qui pourra utiliser une application WinForm ou WPF qui se connectera aux services.

    Une autre solution est de faire un site internet si cela correspond aux besoins.

    D'ailleurs peut etre qu'il faut oublier l'idée d'un serveur WF/WPF ?
    Je ne vois pas pourquoi tu veux faire du WinForms ou du WPF pour le serveur qui n'a théoriquement pas besoin d'interface graphique.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Merci pour vos réponses mon gros problème c'était de savoir comment déployer mon serveur une fois créé.

    Je sais utiliser les sockets ou gérer les clients.

    Donc il suffit que je dépose le .exe et le lancer. Mais alors comment savoir si il est down ? Avec des logs ?

    Après je suppose au'il faut proposer le fichier .exe et ne pas seulement le déposer.

    Combien de clients un serveur (ca depend du serveur mais bon) peut gérer ?
    Il ne s'agit pas de transferts de fichiers mais plutôt de données modifiables par plusieurs clients.

    WCF est l'équivalent du web service de java ? Idem je ne connais Pas du tout IIS. En cherchant des tutos je tombe beaucoup sur ASP.net, mais au final je peux m'en passer donc.
    Je vais me renseigner dessus ce soir.

    Merci,

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    Citation Envoyé par PigKey6 Voir le message
    Je sais utiliser les sockets ou gérer les clients.
    Les sockets c'est "mal", tu vas devoir t'amuser à identifier le type de message à convertir le flux binaire en object .Net
    Pour te facilité la tache WCF est la.

    Citation Envoyé par PigKey6 Voir le message
    Donc il suffit que je dépose le .exe et le lancer. Mais alors comment savoir si il est down ? Avec des logs ?
    C'est pour ca qu'on utilise IIS ou Apache qui permet de monitorer tes service web

    Citation Envoyé par PigKey6 Voir le message
    Combien de clients un serveur (ca depend du serveur mais bon) peut gérer ?
    Il ne s'agit pas de transferts de fichiers mais plutôt de données modifiables par plusieurs clients.
    Ca dépend de ce que dois faire ton serveur.
    Si c'est simplement des CRUD (create, select, update, delete). Où si il doit faire des calcul pour aller sur la lune.
    De plus avoir plusieurs client ne veut pas dire grand chose.
    Cas 1: 5 clients sur le serveur. Chacun fait une demande toutes les 10 minutes. Resultat mon serveur traite en moyenne 3 requetes par heure
    Cas 2: 1 seul client sur le serveur mais il fait des requetes toutes les minutes.
    Résultat le serveur doit traité en moyenne 60 requêtes par heure

    WCF est l'équivalent du web service de java ? Idem je ne connais Pas du tout IIS.
    Euh +-.
    WCF est une couche qui permet la communication entre logiciel.
    Il peut utiliser des Service Web, des socket, du Xml,...

    En cherchant des tutos je tombe beaucoup sur ASP.net
    ASP.Net peut etre une solution, celui-ci génere les pages Web
    mais le WebService et ASP.Net sont indépendants
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  8. #8
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Merci pour vos réponses mon gros problème c'était de savoir comment déployer mon serveur une fois créé.
    Ca dépend de ce que tu veux. Tu peux très bien faire un service windows. Dans ce cas il faut installer le service. Tu peux faire une application web. Dans ce cas il faut la publier dans IIS.
    Si tu nous dis pas ce que tu fais on ne peux pas te dire comment tu vas le déployer.

    Mais alors comment savoir si il est down ? Avec des logs ?
    IIS permet de logger beaucoup de chose. Pour savoir si un service est down tu peux utiliser des outils comme Nagios.

    Combien de clients un serveur (ca depend du serveur mais bon) peut gérer ?
    Ca dépend du serveur et de l'application. Le plus simple est de faire des tests de charge sur ton serveur.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    Merci

    Cependant il faut obligatoirement un serveur dédié ?

    Je possède un mutualisé sur windows pour gérer les maj de mon appli.

    Ca dépend de ce que tu veux. Tu peux très bien faire un service windows. Dans ce cas il faut installer le service. Tu peux faire une application web. Dans ce cas il faut la publier dans IIS.
    Si tu nous dis pas ce que tu fais on ne peux pas te dire comment tu vas le déployer.
    J'aimerai faire un peu une sorte d'ERP où plusieurs personnes peuvent renseigner quelques tableaux rien de bien compliqué Mais je souhaite utiliser un client en WPF (pour utiliser ce qui est déjà fait). Pour le moment chaque client avait sa BDD, l'objectif est donc de centraliser la BDD sur un serveur et ainsi que tout le monde partage les données.

  10. #10
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    En gros tu as déjà une application finie en WPF. Celle-ci accède à une base de données qui pour le moment est locale. Tu souhaiterais mettre cette base sur un serveur distant accessible à partir d'internet.

    Pour info les hébergements mutualisés autorisent rarement les connexions à la base de données depuis l'extérieur pour des raisons de sécurité.
    Il faut donc passer par des webservices (WCF) pour exposer les données de la base de données sur internet. Il faudra donc ensuite modifier le code de ton appli cliente pour accéder aux webservices.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    Mais du coup les WCF c'est uniquement entre terminaux sous Windows?

    J'aimerais quand meme que le client puisse se connecter au serveur via login et mdp, le serveur vérifiera ensuite dans la BDD qu'il peut se connecter, ça gène pas en WCF ?
    Je suppose que non il faut juste que je vois ça différemment du couple TCP/IP auquel je suis plus habitué.

    Si je souhaite que mon application soit évolutive et que le serveur puisse ensuite communiquer avec des terminaux portables (sous android par exemple) je suppose que partir dés maintenant sur WCF n'est pas la meilleure solution..


    Mais sur un mutualisé comment lancer le serveur (le fichier .exe) ? Je ne peux pas me connecter sur le terminal du serveur mutualisé afin de le lancer. Je peux mettre mon .exe via filezilla mais ensuite je ne vois vraiment pas comment le lancer c'est ce point qui est le plus flou

  12. #12
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par PigKey6 Voir le message
    Mais du coup les WCF c'est uniquement entre terminaux sous Windows?
    Seul le serveur doit être sous Windows. Les clients peuvent être sous n'importe quel OS.

    Citation Envoyé par PigKey6 Voir le message
    J'aimerais quand meme que le client puisse se connecter au serveur via login et mdp, le serveur vérifiera ensuite dans la BDD qu'il peut se connecter, ça gène pas en WCF ?
    C'est gérer sans problème par WCF si tu utilises un MembershipProvider (Ce qui est conseillé pour l'authentification).

    Citation Envoyé par PigKey6 Voir le message
    Je suppose que non il faut juste que je vois ça différemment du couple TCP/IP auquel je suis plus habitué.
    WCF est juste une façon de créer des applications pour le réseau sans avoir à se soucier au niveau du code de la couche transport. La couche transport se définit avec un fichier de configuration (xml). Tu peux donc utiliser la couche TCP/IP ou un name pipe en changeant juste la config.

    Citation Envoyé par PigKey6 Voir le message
    Si je souhaite que mon application soit évolutive et que le serveur puisse ensuite communiquer avec des terminaux portables (sous android par exemple) je suppose que partir dés maintenant sur WCF n'est pas la meilleure solution..
    Il n'y a aucun problème avec cela. WCF permet d'exposer des données au format JSON qui est souvent utiliser par les appli mobiles.

    Citation Envoyé par PigKey6 Voir le message
    Mais sur un mutualisé comment lancer le serveur (le fichier .exe) ? Je ne peux pas me connecter sur le terminal du serveur mutualisé afin de le lancer. Je peux mettre mon .exe via filezilla mais ensuite je ne vois vraiment pas comment le lancer c'est ce point qui est le plus flou
    En effet tu ne peux pas lancer d'exécutable. Cependant les hébergements mutualisés propose une base de données et un serveur web (SQL Server / IIS). D'où l'intérêt de WCF qui peut être utiliser dans IIS. Tu n'as donc plus d'exécutable mais seulement des fichiers à copier.
    http://msdn.microsoft.com/fr-fr/library/ms733766.aspx
    Autrement tu changes d'hébergement.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    Merci, il a l'air vraiment puissant ce WCF.

    Donc si je comprends bien au final je vais pouvoir faire ce que je veux devoir créer de serveur ? d'applications serveurs. ça fait un peu bizarre sur le principe mais je vais lire quelques tutos ce soir afin de mieux comprendre.

    Merci beaucoup,

  14. #14
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    j'essaie petit à petit de découvrir WCF et d'essayer sur des exemples de bases fournis dans les tutos mais j'ai beaucoup de mal à configurer mon serveur.

    EDIT: j'ai recommencé de zéro et ça semble mieux, meme si j'ai un peu de mal avec le déploiement sur mon serveur pour le moment.

    J'ai réussi à publier mon server de cette manière :
    Publier, via ftp à l'adresse:
    ftp://mon-site.com/Server
    J'ai rentré les identifiants et il me met que la publication a réussi.

    Je souhaite maintenant déployer une base de données sur mon serveur et j'ai une question :
    Je possède un site internet où mes clients peuvent s'inscrire et communiquer sur le forum, j'aimerai qu'à la validation de leur compte mon site internet appelle une page qui s'occupe d'ajouter les informations à la BDD de mon serveur.

    J'aimerai que les deux BDD restent séparées.

    Est-ce possible ? Il faudrait en fait créer un client Web que je mettrais sur mon site internet et qui récupérerait les infos par un GET ? Quel type de client web dois-je créer ? Sachant que mon site internet est hebergé sur le mutualisé de base chez OVH donc pas sous windows...

    Merci encore

  15. #15
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    J'arrive à communiquer entre mon client et mon serveur mais impossible d'accéder à la base de données du serveur !

    Sur celui-ci il n'est pas possible de se connecter.

    - J'ai créé une BDD Sqlserver (VS l'a mise automatiquement dans App_data et ne m'a pas demandé de mot de passe ou quoi).
    - Si je clique dans les propriétés il me met la connectionstring suivante :
    Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\Server\App_Data\BDD.mdf;Integrated Security=True

    J'ai essayé de mettre comme connectionstring quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string connexionString = Data Source=(LocalDB)\v11.0;AttachDbFilename="+Path.GetFullPath("\App_Data\")+"BDD.mdf;Integrated Security=True";
    J'ai essayé d'autres chaines sans succès j'ai toujours l'erreur :
    "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)"
    Le code qui plante est celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    using (SqlConnection SqlConn = new SqlConnection(strConnexion))
                    {
                        SqlConn.Open();
     
                        SqlConn.Close();
                    }
    Donc rien de très complexe.

    J'ai essayé avec la connectionstring suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     string strConnexion = "Data Source=(local);Initial Catalog=BDD.mdf;Integrated Security=True";
    et j'obtiens l'erreur (quasiment instatanément) suivante :
    "Login failed for user 'VMHEB49016\\IWPD_35(zstu887)'."
    Du coup je bloque totalement, peut etre que ma base n'a pas été créée correctement ? J'avoue trouver ça bizarre l'impossibilité de mettre un identifiant/mdp, il utilise l'authentification windows par défaut.

    NOTE: Je voulais créer un compte de connexion sql server en faisant clic droit puis modifier la connexion mais impossible, je choisis un nom d'user et un mdp et il me dit "Login failed for user ZZZ"

    EDIT : J'essaye d'ajouter un nouvel user via l'explorateur d'objet mais impossible il me met l'erreur suivante :
    Ligne*1 You can only create a user with a password in a contained database.
    (58,0): SQL72045: Erreur d'exécution de script. Script exécuté :
    CREATE USER [User1]
    WITH PASSWORD = N'z1234567bnvc';
    Merci d'avance pour vos réponses

Discussions similaires

  1. Application accessible par plusieurs utilisateurs en même temps..
    Par flamby6969 dans le forum Modélisation
    Réponses: 3
    Dernier message: 30/03/2009, 00h42
  2. Créer une table accessible par tous
    Par Wilgard dans le forum Administration
    Réponses: 2
    Dernier message: 19/06/2007, 10h45
  3. Variable accessible par plusieurs clients
    Par mezoo dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/10/2006, 10h08
  4. Réponses: 2
    Dernier message: 08/06/2006, 14h38
  5. Réponses: 1
    Dernier message: 02/01/2006, 19h05

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