{"id":613,"date":"2010-01-19T11:28:00","date_gmt":"2010-01-19T11:28:00","guid":{"rendered":"\/blogs\/bobb\/post\/The-StreamInsight-Object-Model-and-Observables.aspx"},"modified":"2010-01-19T11:28:00","modified_gmt":"2010-01-19T11:28:00","slug":"the-streaminsight-object-model-and-observables","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/","title":{"rendered":"The StreamInsight Object Model and Observables"},"content":{"rendered":"<p>\nIn the last installment about the object model, let&#39;s the at the third development style, using .NET&#39;s IObservable\/IObserver. IObservable\/IObserver is a new interface in .NET 4.0, the &quot;mirror image&quot; (to use a less controversial term) of IEnumerable\/IEnumerator. A really simplistic way of thinking about it is the Enumerable\/Enumarator is allowing you to pull, IObservable\/IObserver is watching someone push. So supporting IObservable\/IObserver makes it possible to use StreamInsight with .NET classes.\n<\/p>\n<p>\nWhat they&#39;ve done in this case is write a generic StreamInsight adapter set over the interfaces. It&#39;s called ObservableXXXInputAdapter and ObservableXXXOutputAdapter, where XXX stands for the three StreamInsight event shapes (Point, Edge, and Interval). So there&#39;s six classes plus a Factories and Config class for each adapter. Similar in concept to some of the generic text providers they use in the samples, but shipped in a supported library.\n<\/p>\n<p>\nTo encapsulate the rest of the model there are some ExtensionMethods for the .NET classes that implement IObservables (and&nbsp;a hook for IEnumerables). The main ones are ToObservable and ToCepStream.&nbsp; They work with other extension methods and helper classes to provide for a generic transformation of .NET classes that implement the right interfaces to StreamInsight objects from the familiar Object Model. These extension methods create the (same) StreamInsight object model along the way. Although there is one method currently that may allow you to inject\/use your own Server instance, therefore, being able to navigate the whole Object Model.\n<\/p>\n<p>\nSo at the end of the day, you work with IObservables\/IObservers (and maybe&nbsp;IEnumerables\/IEnumerators). And the same object model. For a code-assisted review of the main components of the object model, you&nbsp;may now return the the Explicit Server sample. Or for a data-assisted review, a CE database that&#39;s been &quot;used&quot; to register CEP objects. \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last installment about the object model, let&#39;s the at the third development style, using .NET&#39;s IObservable\/IObserver. IObservable\/IObserver is a new interface in .NET 4.0, the &quot;mirror image&quot; (to use a less controversial term) of IEnumerable\/IEnumerator. A really simplistic way of thinking about it is the Enumerable\/Enumarator is allowing you to pull, IObservable\/IObserver is [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30,39],"tags":[],"class_list":["post-613","post","type-post","status-publish","format-standard","hentry","category-sql-server-2008-r2","category-streaminsight"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>The StreamInsight Object Model and Observables - Bob Beauchemin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The StreamInsight Object Model and Observables - Bob Beauchemin\" \/>\n<meta property=\"og:description\" content=\"In the last installment about the object model, let&#039;s the at the third development style, using .NET&#039;s IObservable\/IObserver. IObservable\/IObserver is a new interface in .NET 4.0, the &quot;mirror image&quot; (to use a less controversial term) of IEnumerable\/IEnumerator. A really simplistic way of thinking about it is the Enumerable\/Enumarator is allowing you to pull, IObservable\/IObserver is [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/\" \/>\n<meta property=\"og:site_name\" content=\"Bob Beauchemin\" \/>\n<meta property=\"article:published_time\" content=\"2010-01-19T11:28:00+00:00\" \/>\n<meta name=\"author\" content=\"Bob Beauchemin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bob Beauchemin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/\",\"name\":\"The StreamInsight Object Model and Observables - Bob Beauchemin\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\"},\"datePublished\":\"2010-01-19T11:28:00+00:00\",\"dateModified\":\"2010-01-19T11:28:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server 2008 R2\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/sql-server-2008-r2\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"The StreamInsight Object Model and Observables\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\",\"name\":\"Bob Beauchemin\",\"description\":\"SQL Server Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\",\"name\":\"Bob Beauchemin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"caption\":\"Bob Beauchemin\"},\"sameAs\":[\"http:\/www.sqlskills.com\/blogs\/bobb\/\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The StreamInsight Object Model and Observables - Bob Beauchemin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/","og_locale":"en_US","og_type":"article","og_title":"The StreamInsight Object Model and Observables - Bob Beauchemin","og_description":"In the last installment about the object model, let&#39;s the at the third development style, using .NET&#39;s IObservable\/IObserver. IObservable\/IObserver is a new interface in .NET 4.0, the &quot;mirror image&quot; (to use a less controversial term) of IEnumerable\/IEnumerator. A really simplistic way of thinking about it is the Enumerable\/Enumarator is allowing you to pull, IObservable\/IObserver is [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/","og_site_name":"Bob Beauchemin","article_published_time":"2010-01-19T11:28:00+00:00","author":"Bob Beauchemin","twitter_misc":{"Written by":"Bob Beauchemin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/","name":"The StreamInsight Object Model and Observables - Bob Beauchemin","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website"},"datePublished":"2010-01-19T11:28:00+00:00","dateModified":"2010-01-19T11:28:00+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/the-streaminsight-object-model-and-observables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/"},{"@type":"ListItem","position":2,"name":"SQL Server 2008 R2","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/sql-server-2008-r2\/"},{"@type":"ListItem","position":3,"name":"The StreamInsight Object Model and Observables"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/","name":"Bob Beauchemin","description":"SQL Server Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e","name":"Bob Beauchemin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","caption":"Bob Beauchemin"},"sameAs":["http:\/www.sqlskills.com\/blogs\/bobb\/"],"url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/comments?post=613"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/613\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/media?parent=613"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/categories?post=613"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/tags?post=613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}