2010-07-05 3 views
1

Je vais concevoir une application (C# ou VB.NET) qui utilise .NET Framework pour fonctionner très longtemps. Il peut être redémarré chaque année ou plus ...Applications de longue durée

Y at-il quoi que ce soit (en utilisant des modèles de conception spéciaux ou donc) que je dois prendre soin au sujet de la conception « Long temps des applications en cours d'exécution dans .NET »?

Est-ce que .NET est une bonne plate-forme pour ce genre d'applications ou dois-je utiliser d'autres plateformes comme J2SE?

(Ce n'est pas une application web.)

+1

Je me concentrerais sur garder le serveur en cours d'exécution :) – Marko

+1

Est-ce une application mobile que vous voyez comme une alternative J2ME. On dirait que vous avez mélangé des choses. Aussi, je suggère de vérifier que vous êtes en mesure de garder le serveur en cours d'exécution pour les années sans redémarrer si c'est Windows. Il peut être nécessaire de redémarrer après l'installation des mises à jour et des correctifs. – Incognito

+0

Merci! Oui, je veux dire J2SE !!! – Jalal

Répondre

6

je fait dire que l'utilisation de .NET est bien adapté aux applications de longue course. Le code géré, en général, a tendance à faire assez bien dans ce type de scénario, car un CPG de compactage aide à prévenir les problèmes qui peuvent survenir en raison de la fragmentation de la mémoire au fil du temps. Cela étant dit, il est difficile de donner beaucoup de conseils, car il y a très peu d'informations dans la question elle-même. Les durées d'exécution «chaque année ou plus» ne sont pas suffisantes pour indiquer qu'un choix de cadre ou de langue particulier en bénéficierait - tout langage peut fonctionner, car les problèmes liés aux applications longues ont tendance à être plus problématiques language/toolet/etc J'ai écrit quelques applications basées sur .NET qui fonctionnent comme des services et qui fonctionnent continuellement pendant de très longues périodes, et qui n'ont jamais eu de problèmes avec l'application (du moins aucune liée à la technologie elle-même).

3

le garbage collector de .NET est très bon, donc tant que vous n'avez pas des fuites de mémoire non évidentes, cela devrait être OK. "Non-évident" inclut ne pas relâcher les gestionnaires d'événements lorsque vous en avez vraiment fini avec eux, en utilisant des expressions lambda pour les gestionnaires d'événements dans d'autres classes, et ce genre de choses.

Assurez-vous d'être en train d'enregistrer et de consigner toutes les exceptions non gérées. Si ça meurt, vous voudrez savoir pourquoi.

Aussi, jetez un oeil à l'appui de redémarrage de l'application dans Windows 7. Cela peut redémarrer votre application dans le cas où il ne manque. Bien qu'il soit écrit pour le code non managé, il est accessible pour .net dans le Windows 7 API code pack.

5

Je crains moins sur bon fonctionnement d'une application et plus sur ce qui se passe quand il arrête inévitablement - et ne font aucune erreur, il arrêtera.

De nombreux facteurs peuvent mal tourner. un accident, une panne du serveur, une panne réseau ou quelqu'un qui arrête simplement l'application. Le vrai travail reprendra les tâches de l'application après son redémarrage.

+1

Bons points. Et si la haute disponibilité est un problème, c'est probablement une bonne idée de dupliquer les ressources critiques (comme cette application/service = - –

Questions connexes