Концептуальная организация программного обеспечения RTP

Опубликовано в Технологии > Серверные технологии Продолжение

Многие приложения, в которых используется транспортный протокол передачи данных в реальном времени, включают программное обеспечение RTP непосредственно в само приложение; такие приложения характеризуются отсутствием четкого разграничения между средствами обработки RTP и средствами декодирования или воспроизведения. Еще более важно то, что программное обеспечение RTP в каждом приложении, по-видимому, разрабатывается с нуля. Хотя разработка заказного программного обеспечения, непосредственно учитывающего требования к приложению, позволяет обеспечить наиболее эффективную реализацию, в каждом приложении приходится снова и снова реализовывать один и тот же протокол, что приводит к непроизводительным затратам труда разработчика. Почему же программисты по-прежнему реализуют программное обеспечение RTP с нуля, а не разрабатывают библиотеку, которая могла бы использоваться повторно? Если бы была поставлена задача создания библиотеки программного обеспечения для решения задач передачи данных в реальном времени, то какие функциональные средства должна была бы предоставить эта библиотека приложениям? Как должна быть организована эта библиотека? Насколько сложнее было бы создание библиотеки общего назначения по сравнению с реализацией поддержки обмена данными в реальном времени непосредственно в самом приложении? Чтобы ответить на эти вопросы, рассмотрим, какие функциональные средства должны быть предусмотрены в библиотеке, а затем сравним их с функциональными средствами, которые требуются для одного конкретного приложения. В настоящей главе описан общий случай, а в следующей главе представлена реализация конкретного приложения. чат без регистрации

На рис. 28.5 показаны четыре концептуальных уровня, которые должны быть предусмотрены в программном обеспечении для поддержки потоковой передачи данных в реальном времени. На уровне синхронизации не реализуется конкретный протокол.

Концептуальная организация программного обеспечения, применяемого для передачи данных в реальном времени

Как показано на этом рисунке, программное обеспечение передачи данных в реальном времени занимает положение между прикладным уровнем и транспортным протоколом. Программное обеспечение передачи данных в реальном времени подразделяется на два концептуальных компонента: нижний уровень, на котором реализован транспортный протокол передачи данных в реальном времени, и верхний уровень, обеспечивающий синхронизацию. Программное обеспечение нижнего уровня взаимодействует с протоколом UDP (через сокет), принимает все входящие пакеты, относящиеся к данному сеансу, демультиплексирует их на отдельные потоки и собирает информацию, которая требуется программному обеспечению RTCP для передачи отправителю отчетов о каждом потоке. Программное обеспечение верхнего уровня предоставляет интерфейс, предназначенный для использования в приложении. Кроме того, ПО верхнего уровня обеспечивает синхронизацию часов; в нем используется информация из отчетов отправителя для установления соответствия между значениями в полях с отметкой времени потоков, исходящих из одного и того же канонического источника. В результате приложения в процессе приема синхронизированных потоков получают данные, выработанные в одно и то же время. Дополнительные сведения об уровне синхронизации приведены на рис. 28.6. Как показывает этот рисунок, приложение должно иметь средства управления не только передачей данных, но также сеансами и потоками.

Как показано на этом рисунке, на уровне синхронизации предоставляются две концептуальные интерфейсные функции. Во-первых, программное обеспечение этого уровня предоставляет интерфейс управления, позволяющий выполнять в приложении административные задачи (например, получать информацию о потоках в сеансе). Во-вторых, это программное обеспечение предоставляет интерфейс передачи данных, позволяющий принимать их в приложении. Хотя приложение внешне имеет доступ к одному интерфейсу передачи данных, неявным образом (т.е. незаметно для приложения) в этом программном обеспечении для выборки данных используется один из трех механизмов. Если в потоке применяется кодировка кадров, то программное обеспечение извлекает и доставляет кадры. Если же в потоке применяется кодировка выборок, то программное обеспечение извлекает и доставляет байты. И наконец, если в потоке не применяется ни одна из обычных кодировок, то программное обеспечение позволяет обеспечить в приложении доступ непосредственно к пакетам RTP.