WEB开发网
开发学院数据库MSSQL Server StreamInsight 浅入浅出(三)—— 适配器 阅读

StreamInsight 浅入浅出(三)—— 适配器

 2010-09-27 00:00:00 来源:WEB开发网   
核心提示: 查看原图(大图)基类的命名规范遵循模式[类型化][点 | 间隔 | 边缘][输入 | 输出],非类型化适配器不具有类型化的前缀,StreamInsight 浅入浅出(三)—— 适配器(2),那么如果想生成某一类的适配器,则只要继承相对应的基类即可,影响所有事件流,适配器工厂同样可以按照输入、输出

  查看原图(大图)

基类的命名规范遵循模式[类型化][点 | 间隔 | 边缘][输入 | 输出],非类型化适配器不具有类型化的前缀。那么如果想生成某一类的适配器,则只要继承相对应的基类即可。这里面有一点问题的是,由于一个系统可能往往同时需要间隔、点和边缘三种事件模型的适配器,那么在创建相应适配器的时候,由于只能各自继承各自相应的基类,大量相同的代码只能重复的写在不同的适配器里,管理和维护起来比较麻烦。

适配器工厂

适配器工厂作为适配器到服务器运行时之间的网关,提供了资源共享、适配器生成、提供配置信息和 CTI 事件生成等一系列工程。可以认为它是枢纽,配置各个适配器,并指挥各个事件通过相应的适配器,同时还利用对 CTI 事件的控制,影响所有事件流。

适配器工厂同样可以按照输入、输出或者类型化、非类型化分类,相应的,有四个接口:

  查看原图(大图)

一个典型的适配器工厂的实现代码是:

public sealed class TextFileReaderFactory : IInputAdapterFactory<TextFileReaderConfig>,IDeclareAdvanceTimeProperties<TextFileReaderConfig> 
{ 
  public InputAdapterBase Create(TextFileReaderConfig configInfo, EventShape eventShape, CepEventType cepEventType) 
  { 
    InputAdapterBase adapter = default(InputAdapterBase); 
 
    if (eventShape == EventShape.Point) 
    { 
      adapter = new TextFilePointInput(configInfo, cepEventType); 
    } 
    else if (eventShape == EventShape.Interval) 
    { 
      adapter = new TextFileIntervalInput(configInfo, cepEventType); 
    } 
    else if (eventShape == EventShape.Edge) 
    { 
      adapter = new TextFileEdgeInput(configInfo, cepEventType); 
    } 
    else 
    { 
      throw new ArgumentException( 
        string.Format( 
          CultureInfo.InvariantCulture, 
          "TextFileReaderFactory cannot instantiate adapter with event shape {0}", 
          eventShape.ToString())); 
    } 
 
    return adapter; 
  } 
 
  public void Dispose() 
  { 
  } 
 
 
  public AdapterAdvanceTimeSettings DeclareAdvanceTimeProperties(TextFileReaderConfig configInfo, EventShape eventShape, CepEventType cepEventType) 
  { 
 
    var atgs = new AdvanceTimeGenerationSettings(configInfo.CtiFrequency, TimeSpan.FromTicks(-1), true); 
    return new AdapterAdvanceTimeSettings(atgs, AdvanceTimePolicy.Adjust); 
  } 
}

Tags:StreamInsight 适配器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接