2009-06-23 10 views
3

Je suis intéressé à obtenir des informations complètes sur soft (dur aussi) en temps réel dans l'application. WinForms 3.5/4 principalement (WPF peut-être). Les résultats de Google pour la chose sont assez pauvres - certains se limite au parallélisme seulement ... la question est de savoir comment pourrais-je par exemple écrire un client de surveillance de la santé du patient en temps réel pour un appareil médical? ou une application de courtier avec des données boursières en temps réel? ou système de navigation pour un train? ou un logiciel d'automatisation de la maison qui est responsable de l'ouverture/fermeture des portes? etc ... donc ce genre d'application en temps réel est la cible.Recommandé .Net soft temps-réel

Jusqu'à présent, je n'ai pas trouvé des livres sur la programmation concurrente, sauf sous Windows - qui est basiquement pas à ce sujet, plutôt la manipulation du parallélisme ...

Merci à l'avance

Répondre

5

Mon sentiment personnel est que Si vos besoins sont pour un logiciel en temps réel, vous ne devriez pas utiliser .net

.net utilise une machine virtuelle qui n'est pas orientée vers les applications en temps réel. Par exemple, vous ne pouvez pas prédire quand le garbage collector va s'exécuter, ni combien de temps cela va prendre. Si cela se produisait à un moment critique, votre logiciel en temps réel ne serait plus en temps réel. [Edit: Désolé, je sais que cela ne répond pas vraiment à votre question, mais je pense que c'est probablement la raison pour laquelle vous avez du mal à trouver des informations là-dessus - parce que personne ne le fait. Si vous écrivez un logiciel en temps réel, vous devriez probablement regarder C ou C++ à la place. Et en fonction de son importance, un système d'exploitation déterministe en temps réel dédié. Ou même des langages spécifiques conçus en temps réel à l'esprit]

+0

Vous ne pouvez pas prédire quand le garbage collector fonctionnera, mais vous pouvez l'empêcher de s'exécuter dans des zones critiques. – Mark

+0

@Mark: Cool. Je ne le savais pas. Avez-vous un exemple? –

1

Je ne suis pas d'accord avec @Simon, vous pouvez créer des systèmes en temps réel avec Windows et .NET. Vous ne serez peut-être pas en mesure de construire des systèmes très précis, mais avec une conception et des tests appropriés, vous pouvez et j'ai.

Il existe de nombreuses techniques pour pousser les exigences de temps difficiles sur software solutions ou sur du matériel tel que motion/IO controllers. Windows/.NET rend la plupart du système plus facile à développer que le développement RTOS et les quelques éléments critiques peuvent être résolus. Mon approche consiste à aborder d'abord ces problèmes critiques et à les tester.

+0

Peut-être avec des solutions matérielles ou logicielles spéciales qui appellent en dehors du framework .net. Mais je ne vois pas comment vous pouvez faire des applications en temps réel entièrement à partir de .net. Le CLR n'est tout simplement pas assez déterministe. Comment obtiendriez-vous des temps de chargement CLR garantis, une résolution d'assemblage, une compilation JIT? Sans oublier que le CLR optimise différemment dans différentes situations. Je suis sûr qu'il est possible avec des appels externes de faire les choses critiques, mais de 100%. Net? [Je ne parle pas d'applications simples de "vue en direct", je parle de "temps réel" où il y a une contrainte de temps spécifique sur les exigences] –

+0

Ce n'est pas un domaine d'expertise particulier du mien, donc Si vous ont fait 100% .net applications en temps réel, je vais vous croire sur parole. Ce serait bon à savoir. –

+0

Simon, c'est une question de design. Lorsque vous développez des systèmes en temps réel, vous essayez d'éviter tout ce qui est dynamique comme le chargement d'assemblages, l'allocation de mémoire, etc ... Au moins, évitez-le en temps critique. – kenny

2

Dans ma société, nous avons développé un serveur IVR telphony en C# et C++/CLI. Il traite des millions d'appels par an, fonctionne 24 heures sur 24, 7 jours sur 7, ne se plante jamais et est généralement aussi robuste que nous le souhaiterions. Il n'y a rien d'extravagant, c'est juste du service Windows régulier et bien que la vitesse, l'efficacité et le temps de réponse aient été quelque chose que nous voulions, il ne fait rien d'ésotérique comme essayer de contrôler le GB

est cependant un gros mais. Les pilotes pour le matériel contrôlé par notre application n'est évidemment pas .Net. Donc, au niveau le plus bas, nous ne sommes pas concernés par GBC indésirable et ainsi de suite, tous les trucs dépendants de la milliseconde comme le transfert de paquets de téléphonie IP ou de streaming voix sont gérés par le firmware sur nos cartes téléphoniques. Donc, pour résumer ce qui précède: Je ne considérerais même jamais écrire des pilotes ou un code de très faible latence dans .Net, mais j'écrirais certainement le code de contrôle/logique dans .Net. Malheureusement je ne peux pas vous indiquer de ressources utiles, puisque je n'en ai jamais rencontré non plus, mais j'espère que ce cas d'utilisation vous aidera à décider en connaissance de cause si vous devriez considérer .Net pour vos projets en temps réel.

1

Le parallélisme et le thread sont quelques-uns des outils que .NET fournit pour vous aider à écrire des applications en temps réel, mais l'architecture des systèmes en temps réel est indépendante de la langue.

This L'article MSDN contient de bons liens pour le calcul parallèle.

Peut-être que le Smart Client Software Factory pourrait être une bonne implémentation de référence pour que vous commenciez à investiguer.

Questions connexes