Rechnerkommunikation und Vernetzung Teil 6 – Anwendungen auf mobilen Geräten Stephan Rupp Nachrichtentechnik www.dhbw-stuttgart.de
Inhalt Anwendungen auf mobilen Geräten Intra-Prozess Kommunikation Organisation von Angebot und Nachfrage Bluetooth Anwendungsentwicklung
Austausch von Nachrichten Kommunikation Austausch von Nachrichten Anfrage Sender Empfänger System B System A Antwort Kommunikation durch Austausch von Nachrichten Zur Interpretation der Nachrichten: Kontext?
Kommunikation im System … Client-Thread Server-Thread Inter-Thread read/write Was ist der Kontext der Kommunikation? Anfrage Antwort Server Client Interface Benutzer Privilegien Nachricht Kernel Privilegien Kernel Executive Routine Kernel Beispiel: Symbian Service Framework
Beispiel: Aufruf von Server-Funktionen Client Server x = f1(a,b,c) f1 a b c Anfrage Service (Message) Message.Complete (x) x Antwort Kontext: Nachrichtentyp für Funktionsaufrufe mit Datentypen der Übergabevariablen und des Rückgabewertes
Client und Server Klassen Message Function() Complete() Read() Write() Server SessionBase CreateSession() SendReceive() Session Service() 1..n Kontext: Ist durch die Programmierumgebung festgelegt (Framework API) Legende: Kernel „hat“
Kommunikation zwischen Systemen Client, User Agent Server, User Agent Systeme enthalten Software für verteilte Anwendungen wie z.B. Clients, Server bzw. User Agents. System A System B
Kommunikation und Kontext Kommunikation innerhalb des Systems: Der Kontext ist festgelegt durch die Programmierumgebung. Kontext: Nachrichten mit Datentypen für die Übergabevariablen und Rückgabewerte, sowie weitere Abstraktionen (Klassen) für die Kommunikation mit Server-Bibliotheken. Kommunikation über Systemgrenzen hinaus: Eine Festlegung des Kontextes ist erforderlich, damit die Systeme sich verstehen, und kann z.B. durch eine Protokollspezifikation erfolgen. Außerdem ist die Lokalisierung der Serverschnittstelle über das Netz erforderlich, genauer eine Referenz auf das Server-Objekt. Beispiele: URL, IP-Socket (IP Adresse plus Port Nummer), Verbindung aus J2ME.
Abstraktion einer Verbindung Beispiel: Java Generic Connection Framework (J2ME CLCD) Connection StreamConnectionNotifier InputConnection StreamConnection OutputConnection ContentConnection DatagramConnection 6. Semester, Nachrichtentechnik, 2012
Inhalt Anwendungen auf mobilen Geräten Intra-Prozess-Kommunikation Organisation von Angebot und Nachfrage Bluetooth Anwendungsentwicklung
Anatomie eines Benutzer-Agenten Angebot Angebot: • User Agent (UA) • UA Gruppe • Module • Inhalte • Endpunkte Inhalte Module: • Dienste • Anwendungen UA_ID Endpunkte der Kommunikation User Agent lokale Information über andere User Agents Für Vermittler: lokale Information über die Angebote anderer User Agents
Interaktionen und Beziehungen Angebot beim Vermittlungsagenten publizieren (erlischt mit der Zeit, wenn nicht erneuert) Ang. Neues Angebot lokal ankündigen Local User Agent Beziehungen (Kenntnis der anderen, erlischt mit der Zeit, wenn nicht erneuert) Ang. lokales Angebot löschen
Kontakt aufnehmen Ang. 1. Angebot über Kommunikations- schnittstelle publizieren 2. Schnittstelle finden und Endpunkt anbinden out lokaler User Agent in entfernter User Agent 3. Nachrichten über die Verbindung austauschen
Angebot und Nachfrage im Netz Organisation durch Verzeichnisdienste Werkzeuge und Methoden User Agent Web-Service Semantik-Verarbeitung Semantische Modelle (Was?) Meta- Information (Wo?) Betriebsmittel (CPU, Speicher)
Inhalt Anwendungen auf mobilen Geräten Intra-Prozess-Kommunikation Organisation von Angebot und Nachfrage Bluetooth Anwendungsentwicklung
Bluetooth Service Discovery Service Discovery Protokoll (SDP) Ang. UUID UUID UUID UUID Service Discovery Anwendung Client Anwendung Server Anwendung Service Record SDP Anfrage SDP: Service Discovery Protocol UUID: Universally Uniform Identifier (als Dienstattribut genutzt) SDP Client SDP Server SDP Antwort
Bluetooth Dienstverzeichniss Service Record (Liste der Dienstattribute) ServiceRecordHandle ServiceClassIDList ServiceRecordState ServiceID ProtocolDescriptionList BrowseGroupList LanguageBasedAttributeIDList ServiceInfoTimeToLive ServiceAvailability BluetoothProfileDescriptorList DocumentationURL ClientExecutionURL IconURL ServiceName ServiceDescription ProviderName ID Value ... ... ... z.B. Wert = oder Wert = Liste von UUIDs UUID Dienstattribute sind als Wertepaare (ID, Wert) durch UUIDs (Wert) gekennzeichnet
Bluetooth Geräteprofile Standardisierung der Dienste
Kanalsprungverfahren (Frequency Hopping) Bluetooth Frequenzen Kanalsprungverfahren (Frequency Hopping) Quelle: Harald Orlamünder
Netzkonfigurationen Master organisiert die Sequenz der Kanäle (Hopping-Sequence)
Zeitliche Nutzung der Kanäle Im Detail unterschiedliche Paketlängen Quelle: Harald Orlamünder
Bluetooth IP Stack Quelle: Harald Orlamünder
Bluetooth Paketformate Quelle: Harald Orlamünder
Systemzustände Quelle: Harald Orlamünder
Internet Zugang per Bluetooth Network Access Point Internet Zugang per Bluetooth Quelle: Harald Orlamünder
Inhalt Anwendungen auf mobilen Geräten Intra-Prozess-Kommunikation Organisation von Angebot und Nachfrage Bluetooth Anwendungsentwicklung Abstraktionen für Verbindungen Daten relational und objektorientiert Vorgehensweise mit UML
Beispiel: Socket Server API RSocketServ <<active>> CSocketEngine RHostResolver RSocket CSocketWriter CSocketReader CSocketsAppView MTimeoutNotifier MEngineNotifier MUINotifier Beispiel: Symbian Service Framework
Socket Verbindung aufbauen :CSocketEngine :CTimeOutTimer :CSocketReader :RSocket ENotConnected :Framework 1. ConnectL(TUint32 aAddr) 2. Open() 3. Connect() 4. ChangeStatus() EConnecting 5. After() 6. SetActive() 7. RunL() 8. Cancel() 9. ChangeStatus() EConnected 10. Read() 11. Start()
Beispiel: Bluetooth Message Server Realisierung über Sockets RSocketServ RSocket CMessageServerAdvertiser RBTMan CBTPointToPointAppUI RBTSecuritySettings TBTServiceSecurity RSdp RSdpDatabase CMessageServer
Bluetooth Verbindung aufsetzen :CBTPointToPointAppUI :CMessageServiceAdvertiser :CListeningSocket :Framework EWaitingForConnect 1. HandleCommandL() :CMessageServer :CAcceptedSocket 2. StartL() 3. StartAdvertising() 4. Open() 5. RunL() EWaitingForMessage 6. RequestData() 7. RecvOneOrMore() 8. RunL() 9. RequestData() 10. RecvOneOrMore() User starts Receiver Sender requests a connection Receiver is receiving a message Configure settings for entries in the service data records
Dienstverzeichnis (Service Record) Zur Verbindung Service Record (Bluetooth Punkt-zu-Punkt Verbindung) ServiceClassIDList ProtocolDescriptionList ServiceName ServiceDescription Service Availability Serial Port Services Class UUID L2CAP UUID RFCOMM UUID Channel Number “Serial Port” “Simple P-T-P Data Tranfer” True
Nachrichten Server Messaging Framework Data Format of Messages UI Data MTM Application UI User Interface MTM Client Side MTM Message Server Server Side MTM Transport of Messages Session
Speichern von Nachrichten Index Liste Index Body Anlagen Nachricht Attachment Flag Complete Flag Connected Flag Deleted Flag Description Details: sender/receiver name of attachment name of folder name of service Identifier within Index MTM associated New Flag (new Msg.) Owner Flag (is parent) Parent ID of index entry Priority Read Flag (Msg. read) Related folder Sending State Service (Transport Service) Size Standard Folder Flag Time Type ID Visibility Flag
Datenhaltung Relationale oder objektorientierte Darstellung sind transformierbar Anwendung DBMS RDBMS ODBMS Objekte persistente Relationen Object Transfer Transformation DBMS: Datenbank Management System RDBMS: Relationales DBMS ODBMS: Objekzorientiertes DBMS .
Mobiltelefon als Fernbedienung Beispielanwendung Mobiltelefon als Fernbedienung IP-Netz PPV System Select movie Mobiltelefon Pay movie Broadcast Netz Play movie TV & Set-Top-Box PPV: Pay per View
Anwendungsfälle und Komponenten PPV-Control Media Control Centre Select movie <<include>> Authenticate user Pay movie User <<include>> Update user account Play movie <<actor>> Media-Gateway <<actor>> AAA-Server
Aktivitäten User Media Control Centre Log in check user identity User object: identity and privileges Log in check user identity [user log in not successful] Movie object in selected state [user log in successful] Generate selection of movies Selection Select movie Pay movie Prepare for play out User object: entry in user account Start Media- Controller User object: media channel Select media format Start media player
Benutzerschnittstelle <<control>> C_Channel <<boundary>> B_Channel title 1 B_Text C_Channel(c:Channel) C_Channel() start() close() B_Channel(c:Channel) check() start() play 1 B_Radio_Button stop B_Radio_Button mute B_Radio_Button ... <<instantiate>> <<instantiate>> process administers 1 <<control>> MediaControlCenter <<entity>> Channel 1 Status Channel() store() delete() ...
Rechnerkommunikation und Vernetzung ENDE Teil 6 – Anwendungen auf mobilen Geräten