2006 DDD4: Data access layers - Convenience vs. Control and Performance?
2006 - Basta!: Web 2.0 mit asp.net 2.0
1. Web 2.0 mit ASP.NET 2.0
Daniel Fisher(lennybacon)
newtelligence AG
Michael Willers
newtelligence AG
2. Was ist Web 2.0
„Web 2.0 is a marketing slogan“
Russell Shaw (ZDNet)
2
3. Was ist Web 2.0
„Web 2.0, a phrase coined by O'Reilly
Media in 2004, refers to a supposed
second-generation of Internet-based
services — such as social networking
sites, wikis, communication tools, and
folksonomies — that let people
collaborate and share information online
in previously unavailable ways.“
Wikipedia
3
7. 7 Tennets of Web 2.0
• The Web As Platform
• Architecture of participation
• Information as the Core Capability, Not Software
• End of Discrete Software Releases
• Rich User Experiences
• Fundamentally Federated Software Systems
• Lightweight Programming Models
7
8. Architecture of Participation
• Die aktive Teilnahme von „Usern“ am
Geschehen...
• Wikis
• Flickr
• Blogs, Kommentare & Abonnements
• Foren
• Chats
8
10. Information as core capability
• Nie vergessen: Wir arbeiten vielleicht
nicht direkt mit Menschen. Aber
Menschen arbeiten direkt mit unser
Arbeit.
10
11. Information as core capability
• Daten und Funktionalität anbieten – nicht
eine einschränkende Softwarelösung
• Vielleicht will jemand unsere Daten mit
anderen Daten verknüpfen und eine neue
Anwendung entsteht
11
12. End of Discrete Software Releases
• Geschäftsprozesse sind sich in einer
Umgebung entwickelnde, wachsende und
veränderbare Abläufe
• Software sollte ebenbürtig lebendig sein
• Software als Dienstleistung, nicht als
Produkt
• Kostengünstige skalierbarkeit
12
13. End of Discrete Software Releases
• Formaler Prozess:
• Unit Tests
• Integration Tests
• ...
• „Beta“ als Teil des Development lifecycle
• User partizipieren als Tester
• User haben „Einfluss“
13
14. Rich User Expirience
multiple devices
• Computer
• Mobile
• PDA
• Phone
• Home Electronics
• Media Center
• TV
• ...
14
15. Rich User Expirience
User Interfaces
• XHTML, CSS & Javascript
• Flash
• Windows Presentation Foundation (WPF)
15
16. Rich User Expirience
User Interfaces
• Animation
• Drag‘n‘Drop
• ...
• Gefühlte Geschwindigkeit
• „...und Bunt muss es sein ...“
16
17. Fundamentally Federated Software Systems
Clients: Mashups
• Fasst Informationen zusammen und
kombiniert sie – wie ein Portal
• Modularität und Wiederverwendung von
backend Funtionalität und Daten
• Das LEGO-Prinzip
17
18. Fundamentally Federated Software Systems
Kommunikation
• Kommunikationsmuster
• Mensch zu Mensch
• Mensch zu Computer
• Computer zu Mensch
• Computer zu Computer
18
19. Fundamentally Federated Software Systems
Kommunikation
• Cross-Browser-Kompatibilität
• Ist ein Client eines Web Services nicht
auch ein device?
• Und wenn ein anderer Client auf einer
anderen plattform implementiert wird?
• Interoperabilität
19
20. Fundamentally Federated Software Systems
Backend: Datenhaltung
• Kontrollierte offerierung von Daten ohne
kontrolle über deren Nutzung
• Syndication
• Wiederverwendbarkeit
20
23. Anforderungen and Backend
• Policy-negotiated behavior
• Backend definiert Kommunikation
• Explicitnes of boundaries
• Anfrage liefert kopie einer Datenmenge!
• Autonomy
• Kapselung von Datenzugriffs- und Geschäfts-Logik
• Contract/Schema Exchange
• Backend definiert Funktionalität
23
24. SOA und Web 2.0?
• Unterschied: Sozialer und collaborativer
Anspruch
• Aber sozialen und collaborative Ansprüche
darf eine SO-Anwendung auch haben!
24
25. Kommunikation ist der Schlüssel
• Aber wie gestaltet man Kommunikation
interoperabel und genügt den
Geschwindigkeitsansprüchen der „User“?
25
26. Problemanalyse
• Wie funktioniert Kommunikation?
• Und in der realen Welt?
• Priorisiert geordnet und Asynchron
• „Anti-Request-Reply“
• Mit HTTP?
26
29. Asynchrone Präsentationsschicht
• Nach dem initialen Request/Response und
dem anzeigen der Seite wird bei jedem
„Klick“ ein Request/Response ausgeführt.
• Im „Hintergrund“Daten übertragen.
• Nur Daten übertragen die benötigt werden.
• Keine Navigation, Grafiken oder Markup – Daten.
32. ASP.NET ClientSideCallbacks
public partial class _Default : Page, ICallbackEventHandler
{
protected string returnValue;
protected void Page_Load(object sender, EventArgs e)
{
string cb = Page.ClientScript.GetCallbackEventReference(
this, "arg", “ReceiveServerData", "");
ListBox1.Attributes["onchange"] =
cb.Replace(
"arg", "this.options[this.selectedIndex].text");
}
public void RaiseCallbackEvent(string eventArgument){
returnValue = "10";
}
public string GetCallbackResult(){
return returnValue;
}
}
33. RemoteScripting vs. AJAX
• RemoteScripting
• Ein Java Applet/ActiveX Control leitet clientseitige Anfragen
an den Server
• Nachteil: Java/ActiveX benötigt
• Vorteil: Broadcast möglich
• AJAX
• Javascript: Events und XmlHttpRequests
• Vorteil: NUR Scriptingfähigkeit des Browsers
• Nachteil:
• Keine „Events“ vom Server
• Ugly Code...
34. AJAX
var request = new Request();
function _getXmlHttp()
{
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
var progids=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]
or (i in progids) {
try { return new ActiveXObject(progids[i]) }
catch (e) {}
}
@end @*/
try { return new XMLHttpRequest();}
catch (e2) {return null; }
}
function Request() {
this.Get = Request_get;
this._get = _getXmlHttp();
if (this._get == null) return;
}
35. AJAX
• Funktioniert nur mit „Ugly Hacks“
• Oder nur mit einem Browser-Typ
• Javascript ist nicht typisiert
• ...
• Codieren wie Ende der 90er?
Welcome to WEB 0.5?
36. Lightweight Programming Models
Atlas
• Eine Serverseitiges Framework für AJAX
• Plattform und Browser-Kompatibel
• Objektorientierte Serverseitige API
• Declaratives model
• Steuerelemente
• Toolunterstützung für Designer und
Entwickler
• Kostenlos, Supported, Einfach zu benutzen
42. ASP.NET und MessageQueing
• Anfrage in RequestQueue schreiben
• Warten auf Antwort in ResponseQueue
using (MessageQueue responseQueue = new MessageQueue(queuePath))
{
responseQueue.MessageReadPropertyFilter.CorrelationId = true;
Message objMessage =
responseQueue.ReceiveByCorrelationId(
correlationId,
new TimeSpan(0, 0, 0, timeOut),
MessageQueueTransactionType.None);
}
43. WCF und MSMQ
• Windows Communication Foundation (WCF) sieht MSMQ
einfach als Transport-Kannal wie TCP oder HTTP.
• WCF ermöglicht es erst zum Deployment konfigurativ den
Transport zu wählen.
43