11
votes

Les extensions réactives peuvent-elles être utilisées à travers le processus ou les limites de la machine?

N'oubliez pas de voir quelques discussions sur ce temps de retour, mais n'a rien entendu depuis. Donc, fondamentalement, êtes-vous capable de vous abonner à un iobservable sur une machine distante?


0 commentaires

7 Réponses :


0
votes

Il n'y a aucune raison pour qu'un cadre ne puisse être conçu pour le faire. Le cadre devrait fournir un moyen d'adresser des objets distants, générer des mandataires pour eux, puis fermez l'activité de l'objet distant dans les limites de l'application (c'est-à-dire via la communication de la prise). .NET Remoting peut être une option appropriée pour la mise en œuvre. WCF serait encore meilleur.


1 commentaires

Ainsi, lorsque le frameworc est en ce moment, vous ne pouvez pas simplement appeler un serveur distant et obtenir un iobservable et vous abonner à celui-ci? Ce qui a du sens, car Rx aurait besoin de savoir où et comment faire ces rappels et ne peut sûrement pas comprendre par magie ceux-ci par lui-même! MDR



8
votes

Vous pouvez utiliser iobservable.Remotable pour utiliser des observables directement à partir d'autres machines via .NET Remoting.


3 commentaires

Salut Paul, avez-vous un lien vers un article de quelque sorte qui explique ce que c'est et comment cela fonctionne?


msdn.microsoft.com/en-us/library/kwdt6w2k (Vs.71) .aspx décrit le rachat - Sachez cependant que la télécommande a des mises en garde assez importantes en matière de version vitale (c.-à-d. L'ordinateur A a la construction 1004 et l'ordinateur B a 1007 => App est cassé)


merci, j'espérais en fait des exemples de iobservable.Remotable, car je ne l'ai pas rencontré avec la version précédente de Rx :-p le trouva de toute façon, sur la vidéo Channel9, j'ai posté ci-dessous



0
votes

Êtes-vous spécifiquement tenu d'utiliser RX comme solution à votre problème? WCF fournit des services en duplex, qui ont la capacité des clients d'enregistrer des points de terminaison de rappel à un service. Le service peut alors initier des appels à ses clients si nécessaire. C'est effectivement un motif observateur reculé. Si RX est un must, alors il devrait être assez étroitement détroit d'envelopper les services duplex WCF avec un cadre de support RX, permettant à vos clients de «transparence» d'observer le comportement de service avec Iobservable.


1 commentaires

Nous ne sommes pas tenus d'utiliser RX comme solution, explorez simplement différentes possibilités. Un service de WCF en duplex s'est également apparu mais serait agréable de pouvoir utiliser RX pour gérer des événements composites plus complexes.



4
votes

a trouvé cette vidéo cool sur le canal 9 qui un exemple d'utilisation iobservable.remotable comme Paul a souligné:

http://channel9.msdn.com/posts/j.van.gogh/whats-Différent-about-the-3-versions-of-rx-par-3-net- 35-SP1 /

Stuff très intéressant, va passer un peu de temps à jouer avec ça maintenant! :-D


0 commentaires

3
votes

Oui.

RX a un support intégré pour l'utilisation à .NET Remoting limites de processus transversaux.

Si vous installez le package NuGet rx-remoting , il installera l'ensemble System.Reactive.Runtime.Remoting.dll qui prend en charge les messages RX inter-processus .

Pour démonstration du code de Microsoft, voir RX l'ensemble des processus. Je viens de tester le code sur cette page, et il fonctionne bien. Pour le compiler, vous devrez ajouter les références suivantes:

  • NuGet : Reactive Extensions - Bibliothèque principale (recherche réactive extensions principal )
  • NuGet : Reactive Extensions - .NET Remoting support (recherche de code < > extensions réactif accès distant )
  • System.Runtime.Remoting (ajouter comme référence normale, livré avec assemblage .NET)

    Le canal 9 vidéo mentionné par @theburningmonk est également intéressant de regarder.

    Mise à jour

    Unfortuantely, cette solution a une grande limitation: vous ne pouvez avoir qu'un seul processus client écoute (tous les clients suivants peuvent pas se connecter). Pushqa résout ce problème (voir mon autre réponse). Pour l'essentiel, toute bibliothèque qui met en œuvre RX sur un bus de signalisation pub / sous devrait faire l'affaire.


0 commentaires

3
votes

oui.

Vérifiez Pushqa .

  • c'est facile à utiliser. J'étais debout dans environ 5 minutes.
  • Il fonctionne avec C # .NET, WPF, ASP.NET ou JavaScript. SignalR est intégré à ASP.NET, mais cela fonctionne pour tout projet C # .NET si vous ajoutez le package Nuge Droite.
  • Il est supérieur à RX Over .NET Remoting (voir mon autre réponse), car nous pouvons avoir un serveur et de nombreux abonnés (c'est un véritable pub / sous-modèle, comme RX).
  • Les requêtes sont compilées dans des arbres d'expression et exécutées sur le serveur (minimisant le trafic réseau, car seuls les résultats pertinents sont renvoyés du serveur).
    • Si nous voulons que les requêtes soient filtrées du côté du client, il est facile - il suffit de faire un filtre côté client sur les résultats renvoyés de Pushqa.
    • C'est littéralement 1% de la douleur, 1% du code de la chaudras et 10x la convivialité de Tibco . J'ai écrit des wrappers Rx pour Tibco et caugez le cauchemar de l'obtenir correct (Tibco a plus > qu'une cuve de Dodecahédrons ). Sauf si vous devez vous connecter à des clients du Mainframe Legacy, ou souhaitez-vous dépasser des centaines de clients sur UDP, ou souhaitez perdre des rois au hasard dans les frais de licence, cette solution est bien supérieure à TIBCO.
    • c'est gratuit.
    • sa source ouverte.

      Entrez la description de l'image ici


0 commentaires

5
votes

Une autre solution possible pourrait consister à utiliser des canaux nommés.

Il y a un excellent package NuGet NamedPipeWrapper , voir le source sur GitHub. Il serait facile d'écrire un wrapper mince RX sur ce, à savoir vous abonner au flux RX et pousser les messages à d'autres processus d'écoute .NET à l'aide de cette bibliothèque.

Comme celui-ci utilise la solution pipes nommés, ce serait une véritable solution pub / sous qui soutiendrait les abonnés multiples dans différents processus.

Mise à jour

Il est en effet très facile d'écrire du code simple pont RX sur la bibliothèque de canaux nommés. Utilisez un RX Objet et insérer le code de pont RX dans les gestionnaires d'événements. Ses pas plus de 4 lignes de code supplémentaires aux deux extrémités. Je peux afficher le code si quelqu'un est intéressé.

Mise à jour

Pour plus d'informations sur les canaux nommés, consultez .NET 3.5 Adds Les canaux nommés et assistance Interprocess Communication En utilisant .NET 3.5 canaux nommés IO . Le paquet précité NuGet NamedPipeWrapper est une version beaucoup plus agréable de la prise en charge intégrée pour des canaux nommés que Framework 3.5 introduit.


0 commentaires