Nous sommes actuellement le 12 Juil 2026, 22:27

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 7 message(s) ] 
Auteur Message
MessagePublié: 24 Nov 2004, 23:47 
Hors-ligne
Toujours là!
Toujours là!
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 14:51
Message(s) : 1337
Localisation : Québec
J'ai un service qui collecte des données sur internet. J'ai fait un programme pour avoir l'état du service lorsqu'un usager se log sur le serveur. J'aimerais que mon programme m'indique quand mon service reçois des données.

Alors comment faire pour que mon service appel une fonction de mon programme ? Ou bien une suggestion pour une autre technique ?


Haut
 Profil  
Répondre en citant  
 Sujet du message: Shared memory
MessagePublié: 25 Nov 2004, 12:56 
Hors-ligne
Nouvel adepte
Nouvel adepte
Avatar de l’utilisateur

Inscription : 18 Août 2004, 09:00
Message(s) : 59
Localisation : Montréal
Bin tu as plusieurs possibilités : Tu pourrais faire en sorte que ton programme écoute sur un port X, et que ton service lui expédie un message quelconque par TCPIP quand il recoit des données.

Tu peux aussi créer un bloc de mémoire partagée qui sera utilisé ET par ton service ET par ton programme.

Ton service pourra aller y mettre un flag ou un compteur de données à jour, et ton programme pourra consulter le flag/compteur au besoin.

Win32 a un API assez simple et complet pour tout ce qui touche les relations interprocessus, avec la shared memory et les sémaphores.

Note 1 : Ca fait longtemps que j'ai pas joué avec des services sous Win32. Tu auras peut-être un peu d'expérimentation à faire pour t'assurer que ton bloc de mémoire est accessible par les 2 programmes (coté sécurité NT/XP).

Note 2 : Si tes 2 programmes vont modifier le bloc de mémoire en question n'oublies pas de protéger l'accès à ce bloc de mémoire par une sémaphore afin d'éviter de la corruption!

Note 3 : Je suis un codeur C, pas C# mais je suis pas mal sûr que tout ce dont je parle existe dans C#. Sinon, bin Microsoft ce sont des imbéciles!

En espérant que ca t'aide. :wink:

_________________
IOverFlow - une experience 3D visuelle unique.
MSI K8N Neo2 Platinum/A64 3000+ @2475Mhz/1GBram/AIW9600PRO/WinXP
PIII 1Ghz/384 Ram/Ubuntu Roary


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 25 Nov 2004, 13:33 
Hors-ligne
Toujours là!
Toujours là!
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 14:51
Message(s) : 1337
Localisation : Québec
J'avais posé ma question sur un forum en anglais et on me suggérait la même chose que toi avec TCPIP ou bien, avec "remoting". Je ne connais pas ça, mais à première vu, ça semble bien fonctionner pour ce que je veux faire.

Indigo aurait fait la job plus simplement et facilement, mais ce n'est pas encore prêt.

Microsoft à vraiment fait du très bon travail avec le .NET Framework. J'attends avec impatience VS2005 pour passer notre application principale (C++/MFC) en C#/C++. L'interface en C# et le noyau de calcul en C++, le meilleurs des deux mondes !


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 25 Nov 2004, 13:49 
Hors-ligne
Nouvel adepte
Nouvel adepte
Avatar de l’utilisateur

Inscription : 18 Août 2004, 09:00
Message(s) : 59
Localisation : Montréal
Oui, le .NET "remoting" ferait probablement aussi l'affaire, j'en avais entendu parler dans une présentation de .NET.... par contre c'est propriétaire et non portable (du moins je crois; Y'avait un projet nommé MONO qui voulait porter .NET sur Linux et autres, j'ignore où c'est rendu...)

Personnellement j'essaye de me tenir loin des APIs et fonctions "propriétaires" ou uniques à un système; C'est bien pratique sur le coup mais ca ne permet pas d'apprendre autant que de "faire la job soi-même". Gérer un bloc de mémoire partagée ou un petit système de communication TCP/IP va t'en apprendre beaucoup plus que d'utiliser l'API tout cuit dans l'bec de .NET! Et en boni si jamais tu te retrouves sur une autre plateforme de développement, tes notions de mémoire partagée ou de TCPIP seront encore utilisables, on ne peut pas en dire autant du .NET...

Enfin, ca c'est ma mentalité; Quand le temps me le permet, je préfère ré-inventer la roue et en apprendre plus, et idéalement prendre des approches qui ne me confinent pas à une seule plateforme. Je trouve que ca fait de moi un programmeur plus polyvalent.

(Et bon, je dois avouer que j'adore pas Microsoft donc ca explique un peu ma position!)

Allez, A+

_________________
IOverFlow - une experience 3D visuelle unique.
MSI K8N Neo2 Platinum/A64 3000+ @2475Mhz/1GBram/AIW9600PRO/WinXP
PIII 1Ghz/384 Ram/Ubuntu Roary


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 25 Nov 2004, 16:01 
Hors-ligne
Toujours là!
Toujours là!
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 14:51
Message(s) : 1337
Localisation : Québec
Je suis d'accord avec vous, mais un point qui est plus important que tout pour mon entreprise, c'est la productivité. Nous travaillons sur Windows, développons sur Windows et nos clients utilisent Windows. Alors j'utilise les outils Windows qui me permettre le plus rapidement possible d'accomplir mon travail.

Une de nos application est sur Linux et Windows. Du code portable ? Oui, mais avec plein de #ifdef LINUX et #ifdef WIN32. Parfois je me demande s'il ne serait pas plus simple d'avoir deux sources différentes tellement le code est laid. Par exemple nous avions des problèmes avec la classe NumericLimit du C++. Une classe standard qui ne donne pas les bons résultats sur Linux ! Alors bienvenue les #ifdef...


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 25 Nov 2004, 16:20 
Hors-ligne
A réponse à tout!
A réponse à tout!
Avatar de l’utilisateur

Inscription : 14 Mars 2002, 22:24
Message(s) : 3308
Localisation : Québec
cro a écrit:
Je suis d'accord avec vous, mais un point qui est plus important que tout pour mon entreprise, c'est la productivité. Nous travaillons sur Windows, développons sur Windows et nos clients utilisent Windows. Alors j'utilise les outils Windows qui me permettre le plus rapidement possible d'accomplir mon travail.

Une de nos application est sur Linux et Windows. Du code portable ? Oui, mais avec plein de #ifdef LINUX et #ifdef WIN32. Parfois je me demande s'il ne serait pas plus simple d'avoir deux sources différentes tellement le code est laid. Par exemple nous avions des problèmes avec la classe NumericLimit du C++. Une classe standard qui ne donne pas les bons résultats sur Linux ! Alors bienvenue les #ifdef...


Ce que plusieurs personnes donnent comme conseil pour du code portable en C++, c'est de mettre les sources propres à chaque platte-forme dans des répertoires différents et d'inclure le bon répertoire lors de la compilation avec -I./linux ou -I./win32, etc. Comme ca, ca permet de ne pas utiliser des milliers de #ifdef.

Pour le C#, les extentions non portables commencent habituellement par Microsoft. Par exemple, pour utiliser la base de registre de windows, il faut inclure Microsoft.Win32.

_________________
Linux 2.6.22 debian gcc 4.2
KDE 3.5.7 / xorg-x11 7.3


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 25 Nov 2004, 16:33 
Hors-ligne
Nouvel adepte
Nouvel adepte
Avatar de l’utilisateur

Inscription : 18 Août 2004, 09:00
Message(s) : 59
Localisation : Montréal
Je suis tout à fait d'accord, du code portable, qui va compiler sur plusieurs plateformes à partir des mêmes fichiers sources, ca peut devenir très laid très rapidement! Nous avions beaucoup de code comme ceci à mon ancien emploi, et c'était pas très joli.

À mon emploi actuel, en Java nous utilisons certaines fonctionnalités propriétaires de l'application WebLogic, (les T3Service pour les curieux). Or, cet API est propriétaire, et nous avons désormais un problème; À partir de la prochaine version, ces fonctions n'existent plus. Nous sommes donc soit pris pour rester à notre version désuète, soit devoir recoder entièrement le morceau qui utilise ces fonctions.

Si nous avions pris une méthode plus standard, en java pur par exemple, nous n'aurions pas eu ce problème. Nous avons sauvé du temps mais nous en payons désormais le prix!

C'est pourquoi, avec mon expérience, je préfère toujours favoriser des approches plus standard (Ex: communication TCP/IP, mémoire partagée, code "portable"), plutôt que de bénéficier des APIs propriétaires (Ex : .NET Remoting :wink:), pour faire la job.

Les deux ont des avantages et des inconvénients, mais quand je suis capable je préfère prendre les solutions qui me donnent le plus de liberté (et qui, habituellement, me permettent d'en apprendre plus).

Mais c'est évidemment un idéal que je ne peux pas toujours appliquer; Le manque faute de temps et les deadlines trop serrés font partie de la vie de tout programmeur!

Question d'opinion! À la vôtre 8)

_________________
IOverFlow - une experience 3D visuelle unique.
MSI K8N Neo2 Platinum/A64 3000+ @2475Mhz/1GBram/AIW9600PRO/WinXP
PIII 1Ghz/384 Ram/Ubuntu Roary


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 7 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site