2006 - Basta!: Web 2.0 mit asp.net 2.0

45
Web 2.0 mit ASP.NET 2.0 Daniel Fisher(lennybacon) newtelligence AG Michael Willers newtelligence AG

Transcript of 2006 - Basta!: Web 2.0 mit asp.net 2.0

Page 1: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Web 2.0 mit ASP.NET 2.0

Daniel Fisher(lennybacon)

newtelligence AG

Michael Willers

newtelligence AG

Page 2: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Was ist Web 2.0

„Web 2.0 is a marketing slogan“Russell Shaw (ZDNet)

2

Page 3: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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

Page 4: 2006 - Basta!: Web 2.0 mit asp.net 2.0

2.0 ohne Web?

4

Page 5: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Was ist Web 2.0?

5

Page 6: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Technologiespektrum

6

Page 7: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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

Page 8: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Architecture of Participation• Die aktive Teilnahme von „Usern“ am

Geschehen...• Wikis• Flickr• Blogs, Kommentare & Abonnements• Foren• Chats

8

Page 9: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Architecture of Participation

• „User“ als Co-Developer sehen• Feedback• Contributions

9

Page 10: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Information as core capability

• Nie vergessen: Wir arbeiten vielleicht nicht direkt mit Menschen. Aber Menschen arbeiten direkt mit unser Arbeit.

10

Page 11: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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

Page 12: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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

Page 13: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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

Page 14: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Rich User Expiriencemultiple devices

• Computer• Mobile

• PDA• Phone

• Home Electronics• Media Center• TV• ...

14

Page 15: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Rich User Expirience User Interfaces

• XHTML, CSS & Javascript• Flash• Windows Presentation Foundation

(WPF)

15

Page 16: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Rich User Expirience User Interfaces

• Animation• Drag‘n‘Drop• ...

• Gefühlte Geschwindigkeit

• „...und Bunt muss es sein ...“

16

Page 17: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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

Page 18: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Fundamentally Federated Software Systems

Kommunikation• Kommunikationsmuster

• Mensch zu Mensch• Mensch zu Computer• Computer zu Mensch• Computer zu Computer

18

Page 19: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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

Page 20: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Fundamentally Federated Software Systems

Backend: Datenhaltung• Kontrollierte offerierung von Daten

ohne kontrolle über deren Nutzung• Syndication• Wiederverwendbarkeit

20

Page 21: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Klassische Topologie

21

Page 22: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Mashup Topologie

22

Page 23: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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

Page 24: 2006 - Basta!: Web 2.0 mit asp.net 2.0

SOA und Web 2.0?

• Unterschied: Sozialer und collaborativer Anspruch• Aber sozialen und collaborative

Ansprüche darf eine SO-Anwendung auch haben!

24

Page 25: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Kommunikation ist der Schlüssel

• Aber wie gestaltet man Kommunikation interoperabel und genügt den Geschwindigkeitsansprüchen der „User“?

25

Page 26: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Problemanalyse

• Wie funktioniert Kommunikation?• Und in der realen Welt?

• Priorisiert geordnet und Asynchron• „Anti-Request-Reply“

• Mit HTTP?

26

Page 27: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Asynchron – Wo?

27

Page 28: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Asynchrone Kommunikation

• Präsentationsschicht• Programmschicht• Infrastrukturschicht

28

Page 29: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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.

Page 30: 2006 - Basta!: Web 2.0 mit asp.net 2.0

30

ASP.NET ClientSideCallbacks

Page 31: 2006 - Basta!: Web 2.0 mit asp.net 2.0

ASP.NET ClientSideCallbacks<html xmlns="http://www.w3.org/1999/xhtml"><head id="Head" runat="server“><script type="text/ecmascript">function ReceiveServerData(rValue){ document.getElementById('Results').innerHTML = rValue; }</script></head><body> <form id="form1" runat="server“> <asp:ListBox ID="ListBox1" Runat="server“> <asp:ListItem Text="Cheese" Value="Cheese" /> </asp:ListBox><br />

Items in stock: <div id="Results" runat="server“ />

</form></body>

Page 32: 2006 - Basta!: Web 2.0 mit asp.net 2.0

ASP.NET ClientSideCallbackspublic 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; }

}

Page 33: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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...

Page 34: 2006 - Basta!: Web 2.0 mit asp.net 2.0

AJAXvar 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;}

Page 35: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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?

Page 36: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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

Page 37: 2006 - Basta!: Web 2.0 mit asp.net 2.0

37

ASP.NET Atlas

Page 38: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Lightweight Programming Models Atlas Code

<atlas:ScriptManager ID="sm1" runat="server" EnablePartialRendering="true" /><atlas:UpdatePanel ID="up1" runat="server"> <ContentTemplate> <asp:Button ID=“B" Text="GetData" runat="server" OnClick=“B_Click" /> <br /> <asp:Label ID="Message" runat="server" /> </ContentTemplate></atlas:UpdatePanel>public partial class _Default : System.Web.UI.Page { protected void B_Click(object sender, EventArgs e) { Message.Text = "Button1 was clicked"; }}

Page 39: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Asynchrone Programmschicht

• .NET • Threads• Timer• IAsyncResult design pattern & Delegate Invocation• AsyncCallbacks & Event-based Asynchronous

Pattern

• ASP.NET• ASP.NET Async Pages• ASP.NET Async Tasks

39

Page 40: 2006 - Basta!: Web 2.0 mit asp.net 2.0

40

Async Pages & Tasks mit ASP.NET

Page 41: 2006 - Basta!: Web 2.0 mit asp.net 2.0

Asynchrone System-Architekturen

• Synchron

• Asynchron

Entkoppelung durch MessageQueing

Page 42: 2006 - Basta!: Web 2.0 mit asp.net 2.0

ASP.NET und MessageQueing

• Anfrage in RequestQueue schreiben• Warten auf Antwort in

ResponseQueueusing (MessageQueue responseQueue = new MessageQueue(queuePath)){ responseQueue.MessageReadPropertyFilter.CorrelationId = true;  Message objMessage = responseQueue.ReceiveByCorrelationId( correlationId, new TimeSpan(0, 0, 0, timeOut), MessageQueueTransactionType.None);}

Page 43: 2006 - Basta!: Web 2.0 mit asp.net 2.0

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

Page 44: 2006 - Basta!: Web 2.0 mit asp.net 2.0

44

<?xml version="1.0" encoding="utf-8" ?><configuration> <system.serviceModel> <services> <service name="FullfilmentServiceAgent"> <endpoint address="net.msmq://localhost/private/Fullfilment" binding="netMsmqBinding" contract="IFullfilmentService" /> </service> </services> </system.serviceModel></configuration>

Page 45: 2006 - Basta!: Web 2.0 mit asp.net 2.0

45

MSMQ