Vertriebssysteme / CRM
Johannes HoppeDipl. Inf. (FH) Johannes Hoppe
SRH Hochschule Heidelberg
Fachbereich Informatik
Dipl. Inf. (FH) Johannes Hoppe
MSP – WCF Vorlesung
25.03.2009
90 Minuten, 8 Teilnehmer
3
Vorlesungsinhalt
Ziel des praktischen Teils:
Erwerbung von Grundkenntnissen in der
Anwendungsentwicklung mit der Windows Communication
Foundation
Vorraussetzungen
• C# 3.0 / .NET 3.0 Grundkenntisse
• Microsoft Visual Studio 2005 / 2008
Vertriebssysteme / CRM
4
Einführung
Windows Communication Foundation (WCF):
- Laufzeitumgebung
- erlaubt es .NET CLR Typen für eine verteilte Kommunikation zu
veröffentlichen (d.h. als Service zu agieren)
- andere Services wie Applikations-eigene .NET CLR Typen zu
konsumieren
 SOAP
Vertriebssysteme / CRM
5
Einführung
Windows Communication Foundation (WCF):
- Vorgänger:
- Enterprise Services“ (Namespace: System.EnterpriseServices),
- „.NET Remoting“ (Namespace: SystemRuntime.Remoting)
- ASP.NET Web Services (Namespace: System.Web.Services)
- MSMQ (Microsoft Message Queuing – Namespace:
System.Messaging)
- unterstützt eine Vielzahl von Protokollen und bleibt so zu älteren
Systemen abwärtskompatibel!
Vertriebssysteme / CRM
6
Einführung
Vertriebssysteme / CRM
7
Endpunkte
- das Prinzip des Endpunkts
- Endpunkt: „Anfang oder das Ende eines Nachrichtenaustauschs
zwischen zwei verteilten Anwendungen“
Vertriebssysteme / CRM
8
Endpunkte
- Endpunkt beschreibt drei grundlegende Aspekte
1. den Ort
2. die Art und
3. den inhaltlichen Rahmen der Kommunikation
Vertriebssysteme / CRM
A – Address (Adresse)
B – Binding (Anbindung)
C – Contract (Vertrag)
9
Kommunikationsmuster
- Auch Message Exchange Patterns, „MEP“s
1. Request-Reply
2. Einweg
3. Duplex
Request-Reply
Vertriebssysteme / CRM
10
Kommunikationsmuster
Einweg
Duplex
Vertriebssysteme / CRM
11
Hosting und Instanzen
Hosting:
- innerhalb einer eigenen Anwendung (Self-Hosting)
- Webserver „IIS“ / Service Host in einer ASP.NET Anwendung
- IIS-Dienst „Windows Activation Service“ (WAS)
Vertriebssysteme / CRM
12
Instanzen
Per-Session Service:
• Standardeinstellungen von WCF
• Client und Server treten in eine Session (Sitzung)
• Jede Sitzung verbleibt bis zum zu ihrem Ende im Arbeitsspeicher
• Pro Sitzung gibt es eine spezielle Service-Instanz die sich in
einem eigenen Context (Gültigkeitsbereich) befindet.
[ServiceBehavior(InstanceContextMode =
InstanceContextMode.PerSession)]
Vertriebssysteme / CRM
13
Instanzen
Per-Session Service:
Vertriebssysteme / CRM
Hostender Prozess
App Domain (~ Pseudo-Prozess)
Service Host Theoretisch
möglicher 2.
Service Host
Context
Service-Instanz
Context
Service-Instanz
Context
Service-Instanz
Endpunkte
[ … ]
14
Instanzen
Per-Call Service:
• auf Sitzungen verzichten.
• Statt der Beibehaltung der Daten im Arbeitsspeicher wird für
jeden Methodenaufruf eine Service-Instanz erzeugt
• Der Arbeitsspeicher wird aufgeräumt, alle normalen Member-
Variablen gehen wieder verloren
• Consumer merkt nichts von der verworfenen Instanz: Service
Host lässt alle Verbindungen über einen Proxy bestehe
 Peformance-Empfehlung
[ServiceBehavior(InstanceContextMode =
InstanceContextMode.PerCall)]
Vertriebssysteme / CRM
15
Instanzen
Per-Call Service:
• auf Sitzungen verzichten.
• Statt der Beibehaltung der Daten im Arbeitsspeicher wird für
jeden Methodenaufruf eine Service-Instanz erzeugt
• Der Arbeitsspeicher wird aufgeräumt, alle normalen Member-
Variablen gehen wieder verloren
• Consumer merkt nichts von der verworfenen Instanz: Service
Host lässt alle Verbindungen über einen Proxy bestehe
 Peformance-Empfehlung
[ServiceBehavior(InstanceContextMode =
InstanceContextMode.PerSession)]
Vertriebssysteme / CRM
16
Instanzen
Per-Call Service:
- parallel ablaufende Per-Call Services:
[ServiceBehavior(ConcurrencyMode =
ConcurrencyMode.Multiple)]
- Vorsicht: Zugriff auf gemeinsam genutzte Variablen
- Locks notwendig
 Deadlocks können entstehen
Vertriebssysteme / CRM
17
Instanzen
Singleton Service:
• exakt eine Service-Instanz, die für alle Anfragen verwendet wird
• Bleibt bis zur Beendung des Service Host aktiv
• sind prinzipiell nicht skalierbar
• sollten nur in begründeten Fällen eingesetzt werden!
• z.B. Windows Dienst  Tray Applikation (muss nicht skalieren)
[ServiceBehavior(InstanceContextMode =
InstanceContextMode.Single)]
Vertriebssysteme / CRM
18
Los geht’s!
Vertriebssysteme / CRM
Wir bauen uns einen
Webservice mit Consumer!
Dipl. Inf. (FH) Johannes Hoppe
Vielen Dank für eure Aufmerksamkeit!
ENDE

WCF Einführung

  • 1.
    Vertriebssysteme / CRM JohannesHoppeDipl. Inf. (FH) Johannes Hoppe SRH Hochschule Heidelberg Fachbereich Informatik
  • 2.
    Dipl. Inf. (FH)Johannes Hoppe MSP – WCF Vorlesung 25.03.2009 90 Minuten, 8 Teilnehmer
  • 3.
    3 Vorlesungsinhalt Ziel des praktischenTeils: Erwerbung von Grundkenntnissen in der Anwendungsentwicklung mit der Windows Communication Foundation Vorraussetzungen • C# 3.0 / .NET 3.0 Grundkenntisse • Microsoft Visual Studio 2005 / 2008 Vertriebssysteme / CRM
  • 4.
    4 Einführung Windows Communication Foundation(WCF): - Laufzeitumgebung - erlaubt es .NET CLR Typen für eine verteilte Kommunikation zu veröffentlichen (d.h. als Service zu agieren) - andere Services wie Applikations-eigene .NET CLR Typen zu konsumieren  SOAP Vertriebssysteme / CRM
  • 5.
    5 Einführung Windows Communication Foundation(WCF): - Vorgänger: - Enterprise Services“ (Namespace: System.EnterpriseServices), - „.NET Remoting“ (Namespace: SystemRuntime.Remoting) - ASP.NET Web Services (Namespace: System.Web.Services) - MSMQ (Microsoft Message Queuing – Namespace: System.Messaging) - unterstützt eine Vielzahl von Protokollen und bleibt so zu älteren Systemen abwärtskompatibel! Vertriebssysteme / CRM
  • 6.
  • 7.
    7 Endpunkte - das Prinzipdes Endpunkts - Endpunkt: „Anfang oder das Ende eines Nachrichtenaustauschs zwischen zwei verteilten Anwendungen“ Vertriebssysteme / CRM
  • 8.
    8 Endpunkte - Endpunkt beschreibtdrei grundlegende Aspekte 1. den Ort 2. die Art und 3. den inhaltlichen Rahmen der Kommunikation Vertriebssysteme / CRM A – Address (Adresse) B – Binding (Anbindung) C – Contract (Vertrag)
  • 9.
    9 Kommunikationsmuster - Auch MessageExchange Patterns, „MEP“s 1. Request-Reply 2. Einweg 3. Duplex Request-Reply Vertriebssysteme / CRM
  • 10.
  • 11.
    11 Hosting und Instanzen Hosting: -innerhalb einer eigenen Anwendung (Self-Hosting) - Webserver „IIS“ / Service Host in einer ASP.NET Anwendung - IIS-Dienst „Windows Activation Service“ (WAS) Vertriebssysteme / CRM
  • 12.
    12 Instanzen Per-Session Service: • Standardeinstellungenvon WCF • Client und Server treten in eine Session (Sitzung) • Jede Sitzung verbleibt bis zum zu ihrem Ende im Arbeitsspeicher • Pro Sitzung gibt es eine spezielle Service-Instanz die sich in einem eigenen Context (Gültigkeitsbereich) befindet. [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] Vertriebssysteme / CRM
  • 13.
    13 Instanzen Per-Session Service: Vertriebssysteme /CRM Hostender Prozess App Domain (~ Pseudo-Prozess) Service Host Theoretisch möglicher 2. Service Host Context Service-Instanz Context Service-Instanz Context Service-Instanz Endpunkte [ … ]
  • 14.
    14 Instanzen Per-Call Service: • aufSitzungen verzichten. • Statt der Beibehaltung der Daten im Arbeitsspeicher wird für jeden Methodenaufruf eine Service-Instanz erzeugt • Der Arbeitsspeicher wird aufgeräumt, alle normalen Member- Variablen gehen wieder verloren • Consumer merkt nichts von der verworfenen Instanz: Service Host lässt alle Verbindungen über einen Proxy bestehe  Peformance-Empfehlung [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] Vertriebssysteme / CRM
  • 15.
    15 Instanzen Per-Call Service: • aufSitzungen verzichten. • Statt der Beibehaltung der Daten im Arbeitsspeicher wird für jeden Methodenaufruf eine Service-Instanz erzeugt • Der Arbeitsspeicher wird aufgeräumt, alle normalen Member- Variablen gehen wieder verloren • Consumer merkt nichts von der verworfenen Instanz: Service Host lässt alle Verbindungen über einen Proxy bestehe  Peformance-Empfehlung [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] Vertriebssysteme / CRM
  • 16.
    16 Instanzen Per-Call Service: - parallelablaufende Per-Call Services: [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)] - Vorsicht: Zugriff auf gemeinsam genutzte Variablen - Locks notwendig  Deadlocks können entstehen Vertriebssysteme / CRM
  • 17.
    17 Instanzen Singleton Service: • exakteine Service-Instanz, die für alle Anfragen verwendet wird • Bleibt bis zur Beendung des Service Host aktiv • sind prinzipiell nicht skalierbar • sollten nur in begründeten Fällen eingesetzt werden! • z.B. Windows Dienst  Tray Applikation (muss nicht skalieren) [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] Vertriebssysteme / CRM
  • 18.
    18 Los geht’s! Vertriebssysteme /CRM Wir bauen uns einen Webservice mit Consumer!
  • 19.
    Dipl. Inf. (FH)Johannes Hoppe Vielen Dank für eure Aufmerksamkeit! ENDE