Verwendung der PJSIP-Bibliothek in Server- und Client-Anwendungen

Einleitung

Im Rahmen des Untersuchungsprozesses entschied sich unser Team dafür, .NET C# als Hauptentwicklungsplattform zu wählen. Der nächste Schritt bestand darin, den Weg zur Implementierung des SIP-Protokolls zu wählen. Natürlich gab es dabei verschiedene Varianten (mit unterschiedlichem finanziellen und zeitlichen Aufwand). Unter ihnen konnten wir drei Hauptkategorien unterscheiden:

  1. Vollständige benutzerdefinierte Implementierung von SIP
  2. Kommerzielle SIP-Bibliothek
  3. GNU Open Source

Jeder dieser Wege hat positive und negative Seiten. Lassen Sie uns diese im Detail besprechen.

1. Eine benutzerdefinierte Implementierung ermöglicht es uns, Lizenzprobleme zu vermeiden und Shareware-Produkte ohne Code-Sharing zu verkaufen. Gleichzeitig kann dies jedoch den Entwicklungsprozess erschweren, die Kosten erhöhen und letztendlich zu weniger stabilen und funktionalen Ergebnissen führen, wenn sie mit anderen Varianten verglichen werden.

2. Eine kommerzielle Bibliothek erfordert direkte Zahlungen für die funktionierende SIP-Kommunikationslösung, Support und die Verwendung von Beispielen vom Bibliotheksanbieter. Diese Option ist schnell, stabil und ermöglicht es uns auch, Probleme bei der kommerziellen Nutzung zu vermeiden. Das einzige Problem könnte der Preis einer solchen Lösung sein. Die Preise können von $200 (für eine Entwicklerlizenz für Independentsoft SIP.Net) bis zu $349.000 (für eine Ultimate Ozeki SDK-Lizenz) variieren. Daher ist es wichtig zu berechnen, ob der Preis der Bibliothek geringer ist als die Kosten für die Entwicklung von Grund auf neu.

3. Eine Open-Source-Bibliothek bietet viele Vorteile wie Community-Support, gute Dokumentation und Verfügbarkeit des Quellcodes. All diese Funktionen erfordern kein Geld, falls Ihr Projekt ebenfalls Open Source ist. Andernfalls sollten Sie die Bibliothekslizenz aufmerksam lesen. Normalerweise werden Open-Source (GNU)-Projekte unter der GPL-Lizenz verteilt. Es gibt mehrere GPL-Revisionen, die sich in den Anforderungen zur Veröffentlichung des Quellcodes und zur Verlinkung von Projekten unterscheiden. Die meisten von ihnen erfordern jedoch, dass auch Ihr Projekt GNU ist. In einigen Fällen gibt es jedoch Erweiterungen, und Sie können sogar eine kommerzielle Lizenz für die Open-Source-Bibliothek erwerben.

Wir haben eine gründliche und detaillierte Untersuchung durchgeführt, verschiedene Möglichkeiten verglichen (es gibt einen separaten Blogartikel mit einer ausführlichen Beschreibung des Vergleichs) und uns entschieden, die Open-Source-PJSIP-Bibliothek (www.PJSIP.org) für ein Pilotprojekt zu verwenden und im Falle von Shareware eine kommerzielle Lizenz zu erwerben. (Eine vollständige kommerzielle und lizenzgebührenfreie Lizenz für PJSIP ist von der Firma Teluu (https://www.teluu.com) für 7500 GBP/Jahr erhältlich.

Die PJSIP-Bibliothek bietet viele Vorteile:

  • Portabilität. Geschrieben in nativem C++ bietet es eine gute Portabilität für verschiedene mobile und Desktop-Plattformen und Betriebssysteme. Zum Beispiel gibt es Wrapper für Windows/*nix (Java, .NET, Python), Android, iOS, WM7, etc. Gute
  • Dokumentation. Es gibt vollständig beschriebene API-Referenzen, Artikel, die alle bewährten Verfahren und plattformübergreifende Beispiele beschreiben.
  • Breites Wissensspektrum. Aufgrund des breiten Einsatzes in verschiedenen Projekten gibt es viele Diskussionen in verschiedenen professionellen Wissensaustausch-Ressourcen.
  • Leistungsstarke Funktionalität. PJSIP enthält eine vollständige Implementierung von SIP gemäß der RFC-Spezifikation sowie zusätzliche Funktionen. Es unterstützt Audio- und Videokommunikation, Nachrichten-Chats, Konferenzanrufe sowie verschiedene Audio- und Videocodecs.
  • Reife. Die erste Version von PJSIP wurde im Februar 2005 kompiliert, und die Entwicklung wird weiterhin von einer großen Gemeinschaft von Fachleuten aus der Branche fortgesetzt.

PJSIP Architektur

Ein PJSIP-Projekt besteht aus mehreren separaten Bibliotheken, die für verschiedene Funktionen zuständig sind. Die grundlegende PJSIP-Architektur für die Client-Anwendung ist in der nachstehenden Abbildung zu sehen.

PJSIP Architektur

PJSIP-Architekturkomponenten:

  1. pjsualib: Dies ist eine hochstufige Bibliothek, die SIP und Medien integriert. Sie bietet eine vereinfachte Schnittstelle für die Entwicklung von SIP-basierten Anwendungen und die Verarbeitung von Medienströmen.
  2. pjsip-ua: Diese Komponente beinhaltet die Benutzerschnittstelle (User Agent) von PJSIP und umfasst Funktionen wie Einladungssitzungen, Registrierung, Anrufweiterleitung usw.
  3. pjsip-simple: Diese Bibliothek ermöglicht die Implementierung von erweiterten SIP-Funktionen wie Ereignisabonnements, Präsenzinformationen, Instant Messaging usw.
  4. pjsip: Das Kernstück von PJSIP ist die pjsip-Bibliothek, die die Implementierung des SIP-Protokolls gemäß den RFC-Spezifikationen übernimmt. Sie umfasst die Transportebene, das Parsen von Nachrichten, die Transaktions- und Dialogebene sowie die Authentifizierung.

  5. pjmedia-codec: Diese Komponente implementiert verschiedene Audio- und Video-Codecs wie G.711, GSM, Speex, iLBC usw., die für die Kodierung und Dekodierung von Medienströmen verwendet werden.
  6. pjmedia: Die pjmedia-Bibliothek bietet Funktionen für die Medienverarbeitung, einschließlich Audiogeräuschkompensation (Noise Reduction), Echounterdrückung (Echo Cancellation), Audiowiedergabe (Playback), Aufnahme und Konferenzen.
  7. pjnath: Diese Bibliothek implementiert Netzwerkadress-Übersetzungsverfahren wie ICE (Interactive Connectivity Establishment), STUN (Session Traversal Utilities for NAT) und TURN (Traversal Using Relays around NAT) zur Bewältigung von NAT-Traversal-Herausforderungen.
  8. pjlib-util: Die pjlib-util-Bibliothek bietet verschiedene Dienstprogramme und Hilfsfunktionen wie Textscanner, XML-Parser, STUN-Client, DNS-Auflöser usw.
  9. pjlib: Diese Bibliothek stellt eine Betriebssystemabstraktionsschicht bereit, die Funktionen wie Netzwerkverwaltung und Datenstrukturen bereitstellt.

In dem obigen Diagramm:

  • Die Anwendung repräsentiert die Anwendung, die die PJSIP-Bibliothek für die SIP-Kommunikation verwendet.
  • pjsualib, pjsip-ua und pjsip-simple sind höherstufige Bibliotheken, die verschiedene Funktionen für SIP-Kommunikation und erweiterte SIP-Funktionen bereitstellen.
  • pjsip ist der Kern der PJSIP-Bibliothek und umfasst die SIP-Implementierung sowie Authentifizierung und Transaktionsverwaltung.
  • pjmedia-codec und pjmedia bieten Funktionen für die Medienverarbeitung und Audio-/Video-Codec-Implementierungen.
  • pjnath implementiert NAT-Traversal-Techniken.
  • pjlib-util bietet Hilfsfunktionen und Dienstprogramme, während pjlib eine Betriebssystemabstraktionsschicht darstellt.

Fazit

Die PJSIP-Bibliotheken sind eine ideale Lösung für die Entwicklung von SIP-Clientanwendungen und kümmern sich nicht um die SIP-Hintergrundimplementierung. Sie enthalten keine vollständige SIP-Serverrealisierung, aber eine Serveranwendung könnte auch auf der PJSIP-Bibliotheks-API und allen darin referenzierten niedrigeren Ebenen aufgebaut werden. Auf diese Weise wird die Implementierung grundlegender SIP-Funktionen vermieden und es ist nur die Erstellung server­spezifischer Funktionalitäten erforderlich. Das spart viel Zeit und Geld. Als Ergebnis bietet sich die Möglichkeit, eine voll funktionsfähige, stabile und sichere Anwendung zu entwickeln, die die Mehrheit der verwendeten Plattformen mit relativ geringem Aufwand unterstützt.

Wenn Sie eine unsere Beratung brauchen, kontaktieren Sie uns.

Branchen: Telekommunikation

Technologiebereiche: SIP/VOIP telephony, PJSIP, Softwareentwicklung, Windows, Java, .NET, Python, Android, iOS, WM7

Lesen Sie unsere weiteren Artikel:

Kontakt
Kontakt



    Insert math as
    Block
    Inline
    Additional settings
    Formula color
    Text color
    #333333
    Type math using LaTeX
    Preview
    \({}\)
    Nothing to preview
    Insert