【转载】StreamInsight手札系列

StreamInsight手札系列发表于“SQL中国研发中心”博客,共分为5篇:

StreamInsight手札(一)——初识

评论:此篇博文文末的链接非常有用!


StreamInsight手札(二)——构建HelloInsight程序

评论:期待读者动手实践一下文中的样例。这个HelloWorld的样例可以算作“麻雀虽小,但五脏俱全”,当然这其中也有些许瑕疵,例如Main函数中有着一些dead code,Query Bind的部分介绍过少等等。如果读者在.NET Framework 4.0下编写完样例后,运行时出现“XXXConfig无法序列化”的错误,请分别给HelloInputConfig和HelloOutputConfig添加序列化Attribute。


StreamInsight手札(三)——使用IObservable接口创建StreamInsight程序

评论:文中使用了强大的Microsoft Reactive Extension中的IObservable和IObserver接口实现观察者模式用来将StreamInsight查询结果进行推送。(注:IObservable<in T>IObserver<in T>接口已经正式加入到.NET Framework 4.0中)

其实还可以利用Reactive中的API将工作做的更加简单,如:

static void Main(string[] args)
{
    using (Server server = Server.Create("Default"))
    {
        Application app = server.CreateApplication("HelloReactive");
        var obserable = Observable.Interval(TimeSpan.FromSeconds(1)).Select(_ =>
            {
                int randomValue = new Random().Next(100);
                Console.WriteLine("Generate: " + randomValue);
                return randomValue;
            });
        var stream = obserable.ToPointStream<int, HelloPayload>(app,
            e => PointEvent<HelloPayload>.CreateInsert(DateTimeOffset.Now, 
                new HelloPayload() { Value = e }), 
            AdvanceTimeSettings.StrictlyIncreasingStartTime, "Observable stream");
        var query = from e in stream
                    where e.Value > 50
                    select e;
        query.ToObservable<HelloPayload>()
            .Subscribe(e => Console.WriteLine("*Output*: " + e.Value));
        System.Threading.Thread.Sleep(-1);            
    }
}

StreamInsight手札(四)——使用IEnumerable接口创建StreamInsight程序

评论:输入适配器中使用strings进行“缓冲”有点令人费解,好奇如果是海量数据事件流的话该怎么去做?


StreamInsight手札(五)——使用EventFlowDebugger调试事件流

评论:此篇博文介绍的一些关于连接EventFlowDebugger出现错误的解决方案较为实用,需要进一步阅读来学习如何使用EventFlowDebugger来进行调试。


posted @ 2011-07-03 10:39  StreamInsight  阅读(422)  评论(0编辑  收藏  举报