27 votes

Existe-t-il quelque chose comme JRebel pour .NET ?

JRebel est un outil pour Java qui permet de transférer automatiquement de nouvelles versions de classes dans une JVM en cours d'exécution. Non seulement les implémentations des méthodes peuvent être modifiées, mais il est également possible de changer leurs signatures, d'ajouter de nouvelles méthodes ou de supprimer des méthodes existantes, ainsi que d'ajouter/supprimer des champs. La seule chose que l'on ne peut pas faire est de permettre la modification de la hiérarchie des classes à la volée. C'est une véritable aubaine pour le développement d'applications Web en particulier.

Ma question est la suivante : existe-t-il quelque chose de similaire pour .NET ?

1voto

Adrian Padilla Points 46

Cette fonction n'existe pas encore pour .Net. En attendant, vous pouvez essayer NCrunch ( http://www.ncrunch.net/ ), qui exécute vos tests en arrière-plan et au moment où vous cassez ou faites passer un test, cela est signalé dans les résultats du test, de sorte que vous n'avez pas besoin d'attendre la reconstruction et l'exécution du test car cela se passe en temps réel.

0voto

Yves M. Points 3198

Il existe une fonction intégrée depuis VS 2005, appelée "Edit and Continue". Vous pouvez y jeter un coup d'oeil... http://msdn.microsoft.com/en-us/library/ms379578(VS.80).aspx .

Je pense qu'il n'est pas aussi sophistiqué que JRebel.

0voto

StingyJack Points 10956

Reflection est intégré à .NET et devrait être capable de faire la plupart de ces choses (écrire/modifier des choses au moment de l'exécution).

Il ne sera pas aussi abouti et prêt à l'emploi que JRebel, mais là encore, les deux frameworks ont des structures différentes pour commencer. Il n'est peut-être pas réaliste de les considérer comme des équivalents.

IMHO, la substitution du runtime comme pratique standard me semble être un bon moyen de corrompre le runtime. Si vous avez besoin de cette fonctionnalité de substitution à chaud, il est peut-être préférable de choisir un langage interprété plutôt qu'un langage compilé.

De plus, la session est généralement à éviter. Si vous devez l'utiliser pour ASP.NET, vous pouvez utiliser plusieurs fournisseurs prêts à l'emploi au lieu de celui qui est en cours de traitement, ou même utiliser des profils à la place. Page MSDN pour la gestion des états

0voto

JOKe Points 459

Il n'y a pas de telle chose dans le monde .net pas si puissant il y a quelques choses comme Editer et Continuer mais c'est comme "Hot replace" en Java et rien de plus. Le problème est qu'en .net, vous avez tout le modèle de .dll(s) avec leurs versions et les dépendances entre les dlls qui pointent vers une version spécifique, il n'est donc pas possible de remplacer une dll sans tout remplacer.

Une solution de contournement consisterait à compiler les classes, à ajouter des tonnes de redirections d'assemblage, à décharger et à charger l'ancienne dll, mais c'est très difficile.

Gardez à l'esprit qu'après l'implémentation de la JSR "module" en Java, il se peut que nous n'ayons plus de JRebel en Java 9.

-1voto

Christian Points 1200

Il y a Rebel.NET qui est similaire mais il faut reconstruire les binaires et ne peut pas modifier le code pendant l'exécution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X