8
votes

Y aura-t-il des ajouts iquérissables à Iobservable? (.NET RX)

Les nouveaux frameworks iobservable / iobserver dans la bibliothèque System.Reactive arrivant à .NET 4.0 sont très excitants (voir Ceci et Ce lien ).

Il peut être trop tôt pour spéculer, mais il y aura également un (faute d'un meilleur terme) de manière iquéreuse de type iquéry conçu pour ces nouvelles interfaces aussi bien?

Un cas d'utilisation en particulier serait d'aider dans les événements de prétraitement à la source, plutôt que dans la chaîne des appels de réception. Par exemple, si vous avez une interface d'événement très «chatty», en utilisant le S'abonner (). Où (...) recevra tous les événements via le pipeline et le client effectue le filtrage.

Qu'est-ce que je me demande, c'est s'il ya quelque chose d'apprécier à IqueryAlyBserver, où ces méthodes Linq seront "compilées" dans certains "intelligents" S'abonner implémentation dans une source. Je peux imaginer certaines architectures de serveur de réseau pouvant utiliser un tel cadre. Ou comment diriez-vous d'un complément à SQL Server (ou de tout RDBMS pour cette matière) qui permettrait à .NET Code de recevoir de nouvelles notifications de données (déclencheurs en code) et aurait besoin de ces notifications filtrées Server-côté.


0 commentaires

5 Réponses :


3
votes

Bien que cela ressemble à une possibilité intéressante, j'aurais plusieurs réserves sur la mise en œuvre de cela.

1) Tout comme vous ne pouvez pas sérialiser les expressions de Lambda non triviales utilisées par IQuerisable, sérialisez-celles-ci pour RX seraient similaires difficiles. Vous voudrez probablement pouvoir sérialiser la multi-lignes et la déclaration Lambdas dans le cadre de ce cadre. Pour ce faire, vous auriez probablement besoin de mettre en œuvre quelque chose comme les autres projets d'animaux de l'Erik Meijer - Dryad et Volta.

2) Même si vous pouviez sérialiser ces expressions Lambda, je serais préoccupé par la possibilité de courir du code arbitraire sur le serveur envoyé du client. Cela pourrait facilement poser une préoccupation de sécurité bien supérieure à celle des scripts croisés. Je doute que le bénéfice potentiel de permettre au client d'envoyer des expressions au serveur d'exécuter l'empreinte des implications de la vulnérabilité de sécurité.


2 commentaires

Salut Jim, les gars RXX ont mis un fournisseur IQBERVABLABLE TCP, qui a ces problèmes de sécurité ... mais ils sont capables de priorialiser tout sauf expressions dynamiques et déboguées ... bonnes choses, sauf la partie de sécurité ... :) , c'est une ALHHPA. :)


Ce ne serait pas un problème si vous utilisez une appdomaine restreinte sur le serveur pour accueillir les observables



0
votes

Un problème J'aimerais bien voir résolu avec le cadre réactif, s'il est possible, permet une modification des émissions et de la souscription de modifier les notifications pour les données en cache des services Web et d'autres services tirant uniquement.


0 commentaires

0
votes

Il apparaît, sur la base d'une nouvelle chaîne9 Interview , qu'il y aura une prise en charge LINQ pour iobserver / iobservable dans le BCL de .NET 4.

Cependant, ce sera essentiellement des requêtes de style Linq-to-objets, donc à ce stade, cela ne ressemble pas à un «Smart Subscribe» au fur et à mesure que vous le mettez. C'est aussi loin que les implémentations de base vont à .NET 4. (de ma compréhension de l'entretien ci-dessus)

ayant dit que , le cadre réactif (RX) peut avoir des implémentations plus détaillées de iobserver / iobservable ou pour que vous puissiez être capable de Ecrivez votre propre passage en transmission expression pour le S'abonner Parmi les paramaters, puis à l'aide de l'arborescence d'expression du FUNC pour vous abonner à un manière plus intelligente qui convient au canal d'événement que vous vous abonnez.


0 commentaires

9
votes

Eh bien, vous l'avez eu dans la dernière version de RX, sous la forme d'une interface appelée IQBerServable (prononcée comme iqueryAprevable). Restez à l'écoute pour une vidéo de canal 9 sur le sujet, à venir au début de la semaine prochaine.

Pour situer un peu de cette fonctionnalité, il faut se rendre compte qu'il y a des axes orthogonaux conceptuellement au puzzle RX / IX:

  • ce que le modèle de données est votre ciblage. Ici, nous trouvons des modèles basés sur des pulls et basés sur les push. Leur relation est basée sur la dualité . Les transformations existent entre ces mondes (par exemple TOENMABLE).
  • vous exécutez des opérations qui conduisent vos requêtes (Sensu Lato). Certains opérateurs ont besoin de concurrence. C'est là que planifie et l'interface ISCHEDuler entrent. Les opérateurs existent entre les domaines de la concurrence (par exemple, l'observation).
  • comment une expression de requête doit être exécuté. Soit Verbatim (IL) ou traduisible (arbres d'expression). Leur relation est basée sur homoiiconicité . Les conversions existent entre les deux représentations (par exemple asquisisable).

    Toutes l'interface IQBerServable (qui est la double à iquérissable et la représentation de l'arborescence d'expression d'une requête iobervable) active est le dernier point. Parfois, les gens confondent l'acte de la traduction de la requête (le «comment» à courir) avec des aspects à remotage (le «où» à courir). Tandis que vous faites généralement traduire les requêtes dans une langue cible (telle que WQL, PowerShell, DSQLS pour les services de notification de cloud, etc.) et la télécommande dans un système cible, les deux préoccupations peut être découplé. Par exemple, vous pouvez utiliser la représentation de l'arborescence d'expression pour faire l'optimisation de la requête locale .

    En ce qui concerne les problèmes de sécurité possibles, ce n'est pas différent des capacités iquérissables. En règle générale, on ne fera que remonter le langage d'expression et non aucun opérateur «vraiment effectif sur latéralement» (tout ce qui signifie que les langues autres que fondamentalistes fonctionnelles). En particulier, les opérations de souscription et d'exécution restent locales et vous emmènent hors de la monade requérable (donc déclenchant la traduction, tout comme Getenumerator dans le monde de Iquerisable). Comment vous êtes éloigné de l'acte de souscrire est quelque chose que je vais laisser à l'imagination du lecteur.

    Commencez à jouer avec le Dernières bits Aujourd'hui et laissez-nous savoir ce que vous pensez. Restez également à l'écoute pour la prochaine vidéo de la chaîne 9 sur cette nouvelle fonctionnalité, y compris une discussion sur une partie de sa philosophie de conception.


1 commentaires

Découvrez la vidéo de Bart sur Channel 9 Discuter de IQOBServable: canal9.msdn.com/shows/ing/ingfeep/...



2
votes

8 (maintenant 10) ans dans le futur: J'ai trébubli sur qactive (ancien RXX), un RX.net Fournisseur de serveur TCP requis C'est la réponse à la "question en question"

serveur xxx

client < PRE> XXX

Quel esprit soufflant à ce sujet est que les clients peuvent dire quoi et à quelle fréquence ils veulent que les données qu'ils reçoivent et que le serveur puisse toujours limiter et contrôler quand, quelle fréquence et quelle quantité de données qu'elle renvoie .

Pour plus d'informations sur ce https://github.com/rxdave/qactive

Un autre blog.Sample

https://sachabarbs.wordpress.com/2016/12/23/rx-over-the-wire/


0 commentaires