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

Langages de programmation Discussion :

Application Client/Serveur sur Windows CE


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 38
    Par défaut Application Client/Serveur sur Windows CE
    Bonjour à tous,

    Je dois développer une application de gestion de stock dans mon entreprise.
    Cette appli devra être accessible sur des terminaux lecteurs code barre, connectés en Wifi, qui tournent sur Windows CE.
    Je souhaiterai une application Client/Serveur, avec un client léger sur Windows CE, et l'application côté serveur.

    J'étais parti sur une application full Web en .Net, voir en PHP, mais je ne suis pas convaincu que le Web soit le mieux adapté pour Windows CE.
    En fait j'aimerai une solution Client/Serveur, tout en profitant des possibilités de Windows CE (Ergonomie).
    Quelles autres solutions Client/Serveur sur un Windows CE ??

    Merci pour vos réponses,
    Cordialement.

  2. #2
    Membre éprouvé
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Par défaut
    Bonjour,

    Vu que tu as une connexion wifi tu peux utiliser plusieurs facons de faire.

    Tu peux utiliser des webservices depuis ton appli terminale.

    Perso j'ai developpé un service réseau qui me permets d'executer et récupérer directement le resultat de requetes SQL.
    - C'est mon service qui s'occupe de la com avec n'importe quel SGBD.
    Le terminal lui, n'utilise qu'une seule classe d'acces qui retourne
    l'equivalent d'un recordset.
    Un petit protocol perso permet de faire transiter les infos,demandes et retour entre le service et le PDA.
    Bien entendu il est multithreadé pour pouvoir répondre a plusieur client simultanément.

    Les temps de réponses sont plutot bon avec une utilisation d'une dizaine de terminaux.


    Il y a une autre possibilité pour ne pas avoir de soft embarqué.
    L'emulation terminal :

    Je m'explique,

    Tu developpes tout sur ton serveur, pour que l'application fonctionne en mode console.

    Et le terminal se connect en telnet ou ssh a celui ci :
    Les gros avantages sont :
    - le soft tourne sur le serveur.
    - La conso reseau est ultra light.
    - Temps de réponse excelent.

    Par contre il va te falloir développer tout un tas de fonctions te permettant d'ecrir autrement qu'avec des printf dans la console.
    - Il faut utiliser la mise en forme via les caracteres de control des consoles.
    cela te permet d'afficher des couleurs a des coordonnée voulues.
    - Il faut aussi que tu ecrives des fonctions pour aller lire directement dans les buffer claviers, par ce que toutes les fonctionne de lecture sont bloquantes.
    Et forcement si tu veux avoir des composants sympa comme des textbox, des listes déroulante, ou des menus, c'est impossible si l'attente d'un appuis de touche est bloquant.

    C'est assez facil a faire en C en tout cas.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 38
    Par défaut
    Bonjour,

    Merci beaucoup pour ta réponse détaillée, désolé pour la lenteur de la réponse, j'étais toujours en mode <<réflexion>>

    Faute de connaissances suffisantes, et faute de temps, j'ai choisi la facilité...
    Donc application Web en PHP sur un serveur Apache.

    Ca fonctionne, mais il y a un temps de réponse incompressible au chargement de la page HTML, interprétation du HTML par le navigateur, vu que la page est rechargée à chaque saisie (j'imagine même pas faire de l'AJAX sur ce type de matériel...)
    Et il faut écrire non seulement le code "fonctionnel", puis le code HTML pour la mise en forme (là c'est pas mon fort).
    Pour une malheureuse page avec 2 champs de saisie, on arrive vite à plus de 200 lignes de code PHP...

    Tout ça pour dire que je reste convaincu que cette solution n'est pas le mieux.
    Je vais devoir développer une nouvelle application sur ce même matériel, mais bien plus conséquente.
    Donc j'aimerai bien faire du TELNET (mode console), mais je ne sais pas du tout par où commencer... si je fais du C, quel IDE choisir ? Puis-je faire une application TELNET en .Net (C#) avec Visual Studio ?
    Est-ce qu'il existe des bibliothèques Telnet pour .Net ?
    Où trouver des exemple ?

    [EDIT]
    Pour information, voilà la matériel dont nous disposons :
    DATALOGIC Kyman
    http://www.mobile.datalogic.com/product.aspx?idprod=129



    @ bientôt,
    Hubert

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 565
    Par défaut
    Bonjour.

    Le plus simple, à mon avis, est d'utiliser la plateforme CF .Net en utilisant Visual Studio. Ensuite choisi ton langage C#, C++ ou VB.Net. Les données sont stockées dans une base de données locale sur le PDA (SQL Server CE) puis synchroniser avec une base de données distante par exemple.

    J'ai déja fait ce genre d'appli pour une tonnelerie pour faciliter l'inventaire et la gestion des palettes de bois et croit moi c'était instantanné.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 38
    Par défaut
    Citation Envoyé par Lharuun Voir le message
    Tu peux utiliser des webservices depuis ton appli terminale.

    Perso j'ai developpé un service réseau qui me permets d'executer et récupérer directement le resultat de requetes SQL.
    - C'est mon service qui s'occupe de la com avec n'importe quel SGBD.
    Le terminal lui, n'utilise qu'une seule classe d'acces qui retourne
    l'equivalent d'un recordset.
    Un petit protocol perso permet de faire transiter les infos,demandes et retour entre le service et le PDA.
    Bien entendu il est multithreadé pour pouvoir répondre a plusieur client simultanément.

    Les temps de réponses sont plutot bon avec une utilisation d'une dizaine de terminaux.
    Bonjour,

    @Lharuun, tu peux m'en dire plus sur cette solution ?
    En quel langage as-tu développé le Webservice ?
    Comment est géré le multithread ? (A quoi ça consiste en gros)
    L'application Windows CE est développée en .Net ?

    @ddaime, la base de données doit être une base Oracle, c'est en gros la seule chose qui est imposée. Pour l'idée de synchronisation je doute que ce soit possible avec du Oracle.
    D'ailleurs je n'ai pas trouvé sur Internet de client Oracle pour Windows CE .Net

    Merci de prendre le temps de me répondre.
    Cordialement.

  6. #6
    Membre éprouvé
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Par défaut
    Bonjour,

    Dsl ca fait un moment que je n'ai pas consulté developpez.net.

    Effectivement, il vaut mieux partir sur une solution connecté.
    Il est toujours possible d'embarquer une base locale sur le terminal, après tu te compliques la vie pour le devidages, surtout si tu as plusieurs clients a gérer. Il risque d'y avoir des conflit a gérer.
    Et de toute facon il faut quand même communiquer avec le sgbd à un moment. Cette solution batch est à utiliser si tu n'as pas une couverture réseau de tous les instants (mission dans la pampa sans couverture wifi ni gprs)....


    En ce qui concerne les details pour la partie que tu demandes,
    tout est codé en C# .Net terminal et pc
    La solution que j'ai utilisé ne repose pas sur les webservices, c'est une autre solutions envisageable.


    Pour ce que j'ai fais, le principe est simple
    Il y a deux composant principaux :

    1 : Un service qui est installé sur une machine du parc.
    C'est un service réseau qui ouvre une socket TCP sur un port donné.
    Il attend simplement que des connections client soient effectuées.
    Dés qu'une connection est ouverte. Le service passe la main a un thread qui va traiter toutes les demandes du client.
    La communication suit un protocol bien précis(perso).
    En gros, les actions possibles sont:
    - execution de requetes de lecture SELECT
    - de requetes de modification, UPDATE INSERT DELETE
    - envoie ou reception de fichiers.

    Le service s'ocuppe pour la partie SGBD d'executer la requete sur le serveur.
    Et retourne les info au terminal via la socket.
    Pour ma part mon service peut se connecter de maniere parametré soit a
    - Natif Mysql
    - Natif Oracle
    - Natif SQLlite
    - Natif Access
    - ODBC

    Le choix du sgbd utilisé se fait par un fichier de configuration.
    Tous les mécanisme d'instanciations de connection sont automatisés.
    Gros avantage tu codes une fois et plus jamais tu ne retouche au code meme si tu dois changer de sgbd.

    Pour info, le service windows n'est qu'une implementation parmis d'autre.
    La communication entre le terminal et le service se faisant par socket.
    Tu peux tres bien faire le dev sous n'importe quel os qui prend en charge tcp/ip
    J'ai développé mon "composant" des différentes manières :
    - Service Windows avec log dans les journaux system

    - Une classe qui lance toute la mécanique appelable dans un winform
    ServiceReseau ser = new ServiceReseau(); // Tout est fait automatiquement derriere.
    J'en ai profité pour ajouter une tripoté d'evenements sur les nouvelles connections et sur les differentes actions demandées par un client.
    Ca permet de voir en live l'activité des clients dans une interface winform.

    - Recement, j'ai eu une demande pour laquel j'ai du developper un Demon Linux en C pour me connecter Oracle et MySql depuis les terminaux.
    J'ai juste eu a developper les connection aux SGBD en C (d'ailleurs j'aime pas trop oracle), les couches Thread et réseau m'ont été fournit automatiquement par inetd.
    Je n'ai meme pas eu une seule socket a ouvrir, ni meme un thread à lancer.
    En gros, je récupére un descripteur de fichier, transmis par inetd au lancement de mon prog et je lis et ecrit dedans comme dans un simple fichier.

    2 : Une classe d'acces aux données
    Il s'agit d'une classe de connection au service que tu doit développer qui utilise une socket et qui implemente le protocol que tu vas mettre en place.
    Cette classe pourra etre utilisée depuis un terminal, depuis un pc ou tout autre periph faisant tourner ton language.
    Cette classe se fout completement du SGBD utilisé, elle envoie des requetes au service et reçoie des données dans un format bien précis.


    En gros pour avoir quelques chose de fonctionnel, il faut compter deux grosse journée de dev en connaissant bien la programmation reseau et multi-thread meme si avec .net, c'est vraiment devenu tres simple utiliser.

    En espérant avoir répondu à tes questions

    Cordialement

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 38
    Par défaut
    Bonjour,

    Citation Envoyé par Lharuun Voir le message
    Effectivement, il vaut mieux partir sur une solution connecté.
    Il est toujours possible d'embarquer une base locale sur le terminal, après tu te compliques la vie pour le devidages, surtout si tu as plusieurs clients a gérer. Il risque d'y avoir des conflit a gérer.
    Et de toute facon il faut quand même communiquer avec le sgbd à un moment. Cette solution batch est à utiliser si tu n'as pas une couverture réseau de tous les instants (mission dans la pampa sans couverture wifi ni gprs)....
    Oui toute la zone est couverte en Wifi, nous partons donc sur une solution connecté.

    Merci beaucoup pour ces précisions qui m'aident à y voir plus clair.

    Mes connaissances sont limitées (pour ne pas dire nulles) en programmation réseau.
    Nous avons donc décidé de nous orienter vers la solution d'un Webservice.

    L'avantage de cette solution, je pense, c'est que les Webservices sont standardisés et beaucoup utilisés.
    Je vais donc programmer en C# avec Visual Studio 2008, serveur et client.
    La couche d'accès aux WebServices étant fournie par .Net, ça devrait être relativement simple.
    Autre avantage, on pourra réutiliser les WebServices pour d'autres usages, notamment l'application qui devra être accessible sur PC, qu'elle soit Web ou Windows.

    Nous avons décidé d'implémenter une couche fonctionnelle sous forme de procédures stockées PL/SQL sur la base Oracle. Le WebService se chargera de faire l'interface entre le client et les appels de procédure PL/SQL.

    C'est donc différent de ton service réseau, dans le sens où le WebService ne se contente pas d’exécuter de "simples" ordres SQL.

    Reste plus qu'à m'y mettre, il faut que j'approfondisse le MultiThreading (je découvre...), car le WebService devra pouvoir gérer plusieurs clients simultanément.
    Je ne vois pas trop comment sera gérée la connexion à la base Oracle, le mieux je pense est qu'une connexion soit ouverte par client, mais comment ces connexions seront fermées... (?)

    Cordialement.

Discussions similaires

  1. Problème de connexion application clients/serveur sur le net
    Par zpico dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 15/04/2012, 15h30
  2. Réponses: 2
    Dernier message: 27/08/2009, 14h47
  3. Application client/serveur et windows serveur 2003
    Par aldama dans le forum HyperFileSQL
    Réponses: 4
    Dernier message: 25/08/2009, 18h47
  4. Application client/serveur sur un seul poste
    Par Just-Soft dans le forum Bases de données
    Réponses: 6
    Dernier message: 12/09/2008, 09h45
  5. Réponses: 1
    Dernier message: 30/05/2005, 17h02

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