Създаване на типове събития, Microsoft Docs

Този раздел предоставя насоки за създаване на типове събития. Типът събитие определя събитията, които се публикуват от източника на събитието или се обработват от приемника на събитието. По време на разработката те се определят като индивидуални примитивни типове, класове или структури на .NET Framework и дефинират данните (полезния товар), които са свързани с всяко събитие в потока от събития. Типовете събития се използват в следващите етапи на разработка.

Писане на въведен адаптер. Типизираният генеричен параметър на адаптера използва типа на събитието, за да инициализира желаната структура, когато създава нови обекти на събитие за поставяне в опашка.

Писане на шаблон за заявка. Шаблонът на заявката е посочен в LINQ въз основа на обект CepStream, чиято дефиниция се основава на типа събитие.

За повече информация относно събития и потоци от събития вижте Концепции на сървъра на StreamInsight Services.

Дефиниране на структура на събитие

Ако полезният товар на събитието (броят на полетата в полезния товар и техните типове) е фиксиран и известен предварително, можете да създадете въведен адаптер. Всички екземпляри на въведен адаптер произвеждат полезни товари в един и същ фиксиран формат. Това обикновено е случаят с източници на събития с фиксирана структура на данните.

Друг пример показва как да използвате тип вложено събитие:

Нетипизираният адаптер е полезен, когато искате да можете да конфигурирате единичен адаптер за даден източник или приемник, за да обработва множество типове събития. Форматът на полезния товар на събитието за тези типове събития се предава като част от конфигурационната спецификация на адаптера, когато адаптерът е обвързан със заявка. Пример за такъв сценарий е CSV файл, съдържащпроменлив брой полета. Действителният набор от полета, които съставят полезния товар, може да бъде определен само от дизайнера на заявката (а не от разработчика на адаптера) по време на обвързване и инстанциране на заявката. Друг пример е адаптерът за SQL таблици, където типът на генерираните събития зависи от схемата на таблицата или от заявката, генерирана спрямо таблицата. За повече информация вижте Създаване на входни и изходни адаптери.

Спецификацията на шаблона на заявката се основава на обект CepStream със специфичен тип събитие, което трябва да бъде известно по време на проектиране. Междинните CepStream обекти в спецификация на шаблон на заявка могат да съдържат нови типове, които са имплицитно дефинирани в клаузи за проектиране (изберете в LINQ), използвайки init изрази на елементи.

Изисквания за полето за полезен товар

Когато създавате типове събития, вземете предвид следните изисквания и функционалност на полетата за полезен товар.

Структурата на събитието не може да съдържа празна структура на полезен товар. Поне едно поле е задължително.

Полетата за полезен товар могат да използват както скаларни, така и примитивни типове на .NET Framework, както и вложени типове. Вижте следващия раздел „Поддържани типове данни“.

Полетата не могат да се променят с помощта на персонализирани атрибути.

Типовете събития в сървъра StreamInsight представляват подреден списък от полета, а не .NET структури, които не указват реда на полетата. Редът на полетата за събития е важен за нетипизирани адаптери. Тези адаптери имат достъп до полета по порядков номер, тъй като имената на полетата не са известни по време на проектиране на адаптера. По подразбиране полетата в структурата .NET, служещи като тип събитие, се считат за подредени според реда на лексикографските имена.

Валидни стойностиNULL за поле се определя автоматично. Например стойностите NULL са разрешени за типа int?, но не се поддържат за типа int. Типовете String и byte винаги позволяват NULL стойности.

Размерът по подразбиране на byte[] е 512.

Максималната дължина на низовите полета е ограничена само от размера на страницата за цялото събитие, който е 16 килобайта.

Размер на събитието

Няма изрично ограничение за броя на полетата, които могат да бъдат дефинирани в тип събитие. Броят на полетата зависи от вида на отделните полета, техния размер и възможност за нулиране.

Размерът на страницата на събитието на сървъра StreamInsight е 16 KB. Тъй като едно събитие не може да обхване няколко страници, действителният максимален размер на събитието (включително полета за полезен товар и времеви клеймото) е 16 KB, минус някои допълнителни разходи. В допълнение към фиксираното количество режийни разходи, заемани от заглавието на страницата, заглавието на събитието и системните полета като клеймо за време, възможността за нула добавя променлива сума от порядъка на N/8 (закръглена нагоре) към сумата на режийните разходи.

За да подобрите ефективността на използването на страницата на събитието, ви препоръчваме да следвате правилата по-долу.

Не използвайте nullable полета.

Намалете използването на полета за низ и байт[].

Съхранявайте събития само толкова дълго, колкото изисква семантиката на съответния скрипт, така че да можете по-ефективно да освободите подсистемната памет, необходима за състоянието на събитието.

Възможност за откриване на типове събития

След като създадете тип събитие, следващата стъпка е да го направите откриваем от зависими проекти. Обърнете внимание, че .NET framework дава възможност на разработчиците да изграждатслабо свързани модули с висока степен на разпространение и да ги пакетират в сборки. След това тези модули могат да бъдат комбинирани, за да се изгради интегрирано приложение, да се валидира и да се внедри в производство.

Имайте предвид, че изпълнима заявка на StreamInsight е резултат от успешно обвързване на шаблона на заявка към екземплярите на входния и изходния адаптер въз основа на съвпадение на типовете входно и изходно събитие на заявката. В зависимост от вашата среда за разработка може да се наложи да споделите типа събитие с други потребители. Например, разработчик на адаптери и разработчик на заявки могат да работят независимо върху своите модули. Обмислете следните сценарии, за да можете да откриете типа събитие.

Ако разработчикът на адаптера е издател на тип събитие, той може да напише адаптера с помощта на API за управляван код на StreamInsight и да изпрати .NET асемблирането. Други разработчици могат да осъществят достъп до .NET асемблирането, като използват ildasm.exe или като препратят към библиотека от проект на Visual Studio, за да определят типа на събитието. В този случай достъпът до типа събитие не изисква достъп до сървъра StreamInsight.

Ако разработчикът на адаптера и разработчикът на заявка работят изолирано (всеки използва свое собствено представяне на общ тип събитие), тогава съответстващите типове събития ще бъдат проверени по време на фазата на обвързване на заявката. Ако се намери съвпадение, обвързването е успешно.

Ако дизайнерът на заявката няма достъп до модула на адаптера или сървъра StreamInsight, на който е регистриран адаптерът, той може да определи типа на събитията в продуктовата документация на адаптера или в протоколите за пренос на данни, свързани с тази област (например протокол за обмен на финансова информация (FIX) или системата за пазарни данни на Reuters (RMDS) в обменоперации).

Поддържани типове данни

В StreamInsight всяко поле за събитие и всеки израз има специфичен тип данни. StreamInsight поддържа следните типове данни. Полезният товар на събитие може също да съдържа вложени типове, които се състоят от тези типове данни.