SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Web 2.0 mit ASP.NET 2.0
Daniel Fisher(lennybacon)
newtelligence AG
Michael Willers
newtelligence AG
Was ist Web 2.0
„Web 2.0 is a marketing slogan“
Russell Shaw (ZDNet)
2
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
2.0 ohne Web?
4
Was ist Web 2.0?
5
Technologiespektrum
6
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
Architecture of Participation
• Die aktive Teilnahme von „Usern“ am
Geschehen...
• Wikis
• Flickr
• Blogs, Kommentare & Abonnements
• Foren
• Chats
8
Architecture of Participation
• „User“ als Co-Developer sehen
• Feedback
• Contributions
9
Information as core capability
• Nie vergessen: Wir arbeiten vielleicht
nicht direkt mit Menschen. Aber
Menschen arbeiten direkt mit unser
Arbeit.
10
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
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
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
Rich User Expirience
multiple devices
• Computer
• Mobile
• PDA
• Phone
• Home Electronics
• Media Center
• TV
• ...
14
Rich User Expirience
User Interfaces
• XHTML, CSS & Javascript
• Flash
• Windows Presentation Foundation (WPF)
15
Rich User Expirience
User Interfaces
• Animation
• Drag‘n‘Drop
• ...
• Gefühlte Geschwindigkeit
• „...und Bunt muss es sein ...“
16
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
Fundamentally Federated Software Systems
Kommunikation
• Kommunikationsmuster
• Mensch zu Mensch
• Mensch zu Computer
• Computer zu Mensch
• Computer zu Computer
18
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
Fundamentally Federated Software Systems
Backend: Datenhaltung
• Kontrollierte offerierung von Daten ohne
kontrolle über deren Nutzung
• Syndication
• Wiederverwendbarkeit
20
Klassische Topologie
21
Mashup Topologie
22
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
SOA und Web 2.0?
• Unterschied: Sozialer und collaborativer
Anspruch
• Aber sozialen und collaborative Ansprüche
darf eine SO-Anwendung auch haben!
24
Kommunikation ist der Schlüssel
• Aber wie gestaltet man Kommunikation
interoperabel und genügt den
Geschwindigkeitsansprüchen der „User“?
25
Problemanalyse
• Wie funktioniert Kommunikation?
• Und in der realen Welt?
• Priorisiert geordnet und Asynchron
• „Anti-Request-Reply“
• Mit HTTP?
26
Asynchron – Wo?
27
Asynchrone Kommunikation
• Präsentationsschicht
• Programmschicht
• Infrastrukturschicht
28
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.
30
ASP.NET ClientSideCallbacks
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>
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;
}
}
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...
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;
}
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?
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
37
ASP.NET Atlas
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";
}
}
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
40
Async Pages & Tasks mit ASP.NET
Asynchrone System-Architekturen
• Synchron
• Asynchron
Entkoppelung durch MessageQueing
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);
}
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
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>
45
MSMQ

Weitere ähnliche Inhalte

Andere mochten auch

2010 - Basta!: REST mit ASP.NET MVC
2010 - Basta!: REST mit ASP.NET MVC2010 - Basta!: REST mit ASP.NET MVC
2010 - Basta!: REST mit ASP.NET MVCDaniel Fisher
 
2011 - DNC: REST Wars
2011 - DNC: REST Wars2011 - DNC: REST Wars
2011 - DNC: REST WarsDaniel Fisher
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt socDaniel Fisher
 
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...Daniel Fisher
 
2006 - Basta!: Advanced server controls
2006 - Basta!: Advanced server controls2006 - Basta!: Advanced server controls
2006 - Basta!: Advanced server controlsDaniel Fisher
 
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrowDaniel Fisher
 
2015 JavaScript introduction
2015 JavaScript introduction2015 JavaScript introduction
2015 JavaScript introductionDaniel Fisher
 
2011 - DotNetFranken: ASP.NET MVC Localization
2011 - DotNetFranken: ASP.NET MVC Localization2011 - DotNetFranken: ASP.NET MVC Localization
2011 - DotNetFranken: ASP.NET MVC LocalizationDaniel Fisher
 
Jan Lokpal VS Sarkari Lokpal
Jan Lokpal VS Sarkari LokpalJan Lokpal VS Sarkari Lokpal
Jan Lokpal VS Sarkari LokpalAnoochan Pandey
 
2010 - Basta: ASP.NET Controls für Web Forms und MVC
2010 - Basta: ASP.NET Controls für Web Forms und MVC2010 - Basta: ASP.NET Controls für Web Forms und MVC
2010 - Basta: ASP.NET Controls für Web Forms und MVCDaniel Fisher
 
2006 - NRW Conf: Asynchronous asp.net
2006 - NRW Conf: Asynchronous asp.net2006 - NRW Conf: Asynchronous asp.net
2006 - NRW Conf: Asynchronous asp.netDaniel Fisher
 
2014 - DotNetCologne: Build, Builder, Am Buildesten
2014 - DotNetCologne: Build, Builder, Am Buildesten2014 - DotNetCologne: Build, Builder, Am Buildesten
2014 - DotNetCologne: Build, Builder, Am BuildestenDaniel Fisher
 
2013 - ICE Lingen: AngularJS introduction
2013 - ICE Lingen: AngularJS introduction2013 - ICE Lingen: AngularJS introduction
2013 - ICE Lingen: AngularJS introductionDaniel Fisher
 
2014 - DotNet UG Rhen Ruhr: Komponentenorientierung
2014 - DotNet UG Rhen Ruhr: Komponentenorientierung2014 - DotNet UG Rhen Ruhr: Komponentenorientierung
2014 - DotNet UG Rhen Ruhr: KomponentenorientierungDaniel Fisher
 
2005 - .NET Chaostage: 1st class data driven applications with ASP.NET 2.0
2005 - .NET Chaostage: 1st class data driven applications with ASP.NET 2.02005 - .NET Chaostage: 1st class data driven applications with ASP.NET 2.0
2005 - .NET Chaostage: 1st class data driven applications with ASP.NET 2.0Daniel Fisher
 
2005 - .NET SummerCamp: Web developmentwith IIS & ASP.NET webservices
2005 - .NET SummerCamp: Web developmentwith IIS & ASP.NET webservices2005 - .NET SummerCamp: Web developmentwith IIS & ASP.NET webservices
2005 - .NET SummerCamp: Web developmentwith IIS & ASP.NET webservicesDaniel Fisher
 
2009 - Basta!: Url rewriting mit iis, asp.net und routing engine
2009 - Basta!: Url rewriting mit iis, asp.net und routing engine2009 - Basta!: Url rewriting mit iis, asp.net und routing engine
2009 - Basta!: Url rewriting mit iis, asp.net und routing engineDaniel Fisher
 
2006 - DDD4: Decoupling service oriented backend systems
2006 - DDD4: Decoupling service oriented backend systems2006 - DDD4: Decoupling service oriented backend systems
2006 - DDD4: Decoupling service oriented backend systemsDaniel Fisher
 

Andere mochten auch (19)

2010 - Basta!: REST mit ASP.NET MVC
2010 - Basta!: REST mit ASP.NET MVC2010 - Basta!: REST mit ASP.NET MVC
2010 - Basta!: REST mit ASP.NET MVC
 
2011 - DNC: REST Wars
2011 - DNC: REST Wars2011 - DNC: REST Wars
2011 - DNC: REST Wars
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
 
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...
 
2006 - Basta!: Advanced server controls
2006 - Basta!: Advanced server controls2006 - Basta!: Advanced server controls
2006 - Basta!: Advanced server controls
 
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
 
2015 JavaScript introduction
2015 JavaScript introduction2015 JavaScript introduction
2015 JavaScript introduction
 
2011 - DotNetFranken: ASP.NET MVC Localization
2011 - DotNetFranken: ASP.NET MVC Localization2011 - DotNetFranken: ASP.NET MVC Localization
2011 - DotNetFranken: ASP.NET MVC Localization
 
Jan Lokpal VS Sarkari Lokpal
Jan Lokpal VS Sarkari LokpalJan Lokpal VS Sarkari Lokpal
Jan Lokpal VS Sarkari Lokpal
 
Hindi Jan Lokpal
Hindi Jan LokpalHindi Jan Lokpal
Hindi Jan Lokpal
 
2010 - Basta: ASP.NET Controls für Web Forms und MVC
2010 - Basta: ASP.NET Controls für Web Forms und MVC2010 - Basta: ASP.NET Controls für Web Forms und MVC
2010 - Basta: ASP.NET Controls für Web Forms und MVC
 
2006 - NRW Conf: Asynchronous asp.net
2006 - NRW Conf: Asynchronous asp.net2006 - NRW Conf: Asynchronous asp.net
2006 - NRW Conf: Asynchronous asp.net
 
2014 - DotNetCologne: Build, Builder, Am Buildesten
2014 - DotNetCologne: Build, Builder, Am Buildesten2014 - DotNetCologne: Build, Builder, Am Buildesten
2014 - DotNetCologne: Build, Builder, Am Buildesten
 
2013 - ICE Lingen: AngularJS introduction
2013 - ICE Lingen: AngularJS introduction2013 - ICE Lingen: AngularJS introduction
2013 - ICE Lingen: AngularJS introduction
 
2014 - DotNet UG Rhen Ruhr: Komponentenorientierung
2014 - DotNet UG Rhen Ruhr: Komponentenorientierung2014 - DotNet UG Rhen Ruhr: Komponentenorientierung
2014 - DotNet UG Rhen Ruhr: Komponentenorientierung
 
2005 - .NET Chaostage: 1st class data driven applications with ASP.NET 2.0
2005 - .NET Chaostage: 1st class data driven applications with ASP.NET 2.02005 - .NET Chaostage: 1st class data driven applications with ASP.NET 2.0
2005 - .NET Chaostage: 1st class data driven applications with ASP.NET 2.0
 
2005 - .NET SummerCamp: Web developmentwith IIS & ASP.NET webservices
2005 - .NET SummerCamp: Web developmentwith IIS & ASP.NET webservices2005 - .NET SummerCamp: Web developmentwith IIS & ASP.NET webservices
2005 - .NET SummerCamp: Web developmentwith IIS & ASP.NET webservices
 
2009 - Basta!: Url rewriting mit iis, asp.net und routing engine
2009 - Basta!: Url rewriting mit iis, asp.net und routing engine2009 - Basta!: Url rewriting mit iis, asp.net und routing engine
2009 - Basta!: Url rewriting mit iis, asp.net und routing engine
 
2006 - DDD4: Decoupling service oriented backend systems
2006 - DDD4: Decoupling service oriented backend systems2006 - DDD4: Decoupling service oriented backend systems
2006 - DDD4: Decoupling service oriented backend systems
 

Ähnlich wie 2006 - Basta!: Web 2.0 mit asp.net 2.0

Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft AG
 
SharePoint Community Mittelland @ isolutions: SharePoint in der Cloud
SharePoint Community Mittelland @ isolutions: SharePoint in der CloudSharePoint Community Mittelland @ isolutions: SharePoint in der Cloud
SharePoint Community Mittelland @ isolutions: SharePoint in der CloudDavid Schneider
 
Top 10 Internet Trends 2007
Top 10 Internet Trends 2007Top 10 Internet Trends 2007
Top 10 Internet Trends 2007Jürg Stuker
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
 
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien DNUG e.V.
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and PollingKai Donato
 
Innovations- und Informationskultur mit Web 2.0 (2010)
Innovations- und Informationskultur mit Web 2.0 (2010)Innovations- und Informationskultur mit Web 2.0 (2010)
Innovations- und Informationskultur mit Web 2.0 (2010)Intelliact AG
 
Mobile Development mit ASP.NET MVC 4
Mobile Development mit ASP.NET MVC 4Mobile Development mit ASP.NET MVC 4
Mobile Development mit ASP.NET MVC 4Digicomp Academy AG
 
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...LeanIX GmbH
 
WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsDirk Steinkopf
 
DOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubDOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubLoopback.ORG
 
Wieviel Client braucht das Web?
Wieviel Client braucht das Web?Wieviel Client braucht das Web?
Wieviel Client braucht das Web?gedoplan
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der CloudTorsten Fink
 

Ähnlich wie 2006 - Basta!: Web 2.0 mit asp.net 2.0 (20)

Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
 
SharePoint Community Mittelland @ isolutions: SharePoint in der Cloud
SharePoint Community Mittelland @ isolutions: SharePoint in der CloudSharePoint Community Mittelland @ isolutions: SharePoint in der Cloud
SharePoint Community Mittelland @ isolutions: SharePoint in der Cloud
 
Top 10 Internet Trends 2007
Top 10 Internet Trends 2007Top 10 Internet Trends 2007
Top 10 Internet Trends 2007
 
SharePoint 2013: Die Neuerungen im Überblick
SharePoint 2013: Die Neuerungen im ÜberblickSharePoint 2013: Die Neuerungen im Überblick
SharePoint 2013: Die Neuerungen im Überblick
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and Polling
 
SETapp Präsentation
SETapp PräsentationSETapp Präsentation
SETapp Präsentation
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 
Innovations- und Informationskultur mit Web 2.0 (2010)
Innovations- und Informationskultur mit Web 2.0 (2010)Innovations- und Informationskultur mit Web 2.0 (2010)
Innovations- und Informationskultur mit Web 2.0 (2010)
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Mobile Development mit ASP.NET MVC 4
Mobile Development mit ASP.NET MVC 4Mobile Development mit ASP.NET MVC 4
Mobile Development mit ASP.NET MVC 4
 
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
 
Whitecoast lcty12 x_pages
Whitecoast lcty12 x_pagesWhitecoast lcty12 x_pages
Whitecoast lcty12 x_pages
 
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
 
WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-Tools
 
Web 2.0 und skype
Web 2.0 und skypeWeb 2.0 und skype
Web 2.0 und skype
 
DOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubDOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pub
 
Wieviel Client braucht das Web?
Wieviel Client braucht das Web?Wieviel Client braucht das Web?
Wieviel Client braucht das Web?
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 

Mehr von Daniel Fisher

MD DevdDays 2016: Defensive programming, resilience patterns & antifragility
MD DevdDays 2016: Defensive programming, resilience patterns & antifragilityMD DevdDays 2016: Defensive programming, resilience patterns & antifragility
MD DevdDays 2016: Defensive programming, resilience patterns & antifragilityDaniel Fisher
 
NRWConf, DE: Defensive programming, resilience patterns & antifragility
NRWConf, DE: Defensive programming, resilience patterns & antifragilityNRWConf, DE: Defensive programming, resilience patterns & antifragility
NRWConf, DE: Defensive programming, resilience patterns & antifragilityDaniel Fisher
 
.NET Developer Days 2015, PL: Defensive programming, resilience patterns & an...
.NET Developer Days 2015, PL: Defensive programming, resilience patterns & an....NET Developer Days 2015, PL: Defensive programming, resilience patterns & an...
.NET Developer Days 2015, PL: Defensive programming, resilience patterns & an...Daniel Fisher
 
2015 - Basta! 2015, DE: JavaScript und build
2015 - Basta! 2015, DE: JavaScript und build2015 - Basta! 2015, DE: JavaScript und build
2015 - Basta! 2015, DE: JavaScript und buildDaniel Fisher
 
2015 - Basta! 2015, DE: Defensive programming, resilience patterns & antifrag...
2015 - Basta! 2015, DE: Defensive programming, resilience patterns & antifrag...2015 - Basta! 2015, DE: Defensive programming, resilience patterns & antifrag...
2015 - Basta! 2015, DE: Defensive programming, resilience patterns & antifrag...Daniel Fisher
 
2015 - Network 2015, UA: Defensive programming, resilience patterns & antifra...
2015 - Network 2015, UA: Defensive programming, resilience patterns & antifra...2015 - Network 2015, UA: Defensive programming, resilience patterns & antifra...
2015 - Network 2015, UA: Defensive programming, resilience patterns & antifra...Daniel Fisher
 
2011 NetUG HH: ASP.NET MVC & HTML 5
2011 NetUG HH: ASP.NET MVC & HTML 52011 NetUG HH: ASP.NET MVC & HTML 5
2011 NetUG HH: ASP.NET MVC & HTML 5Daniel Fisher
 
2010 - Basta!: IPhone Apps mit C#
2010 - Basta!: IPhone Apps mit C#2010 - Basta!: IPhone Apps mit C#
2010 - Basta!: IPhone Apps mit C#Daniel Fisher
 
2010 Basta!: Massendaten mit ADO.NET
2010 Basta!: Massendaten mit ADO.NET2010 Basta!: Massendaten mit ADO.NET
2010 Basta!: Massendaten mit ADO.NETDaniel Fisher
 
2009 - Microsoft Springbreak: IIS, PHP & WCF
2009 - Microsoft Springbreak: IIS, PHP & WCF2009 - Microsoft Springbreak: IIS, PHP & WCF
2009 - Microsoft Springbreak: IIS, PHP & WCFDaniel Fisher
 
2009 - NRW Conf: (ASP).NET Membership
2009 - NRW Conf: (ASP).NET Membership2009 - NRW Conf: (ASP).NET Membership
2009 - NRW Conf: (ASP).NET MembershipDaniel Fisher
 
2009 Dotnet Information Day: More effective c#
2009 Dotnet Information Day: More effective c#2009 Dotnet Information Day: More effective c#
2009 Dotnet Information Day: More effective c#Daniel Fisher
 
2009 - Basta!: Agiles requirements engineering
2009 - Basta!: Agiles requirements engineering2009 - Basta!: Agiles requirements engineering
2009 - Basta!: Agiles requirements engineeringDaniel Fisher
 
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageabilityDaniel Fisher
 
2008 - Basta!: Massendaten auf dem Client
2008 - Basta!: Massendaten auf dem Client2008 - Basta!: Massendaten auf dem Client
2008 - Basta!: Massendaten auf dem ClientDaniel Fisher
 
2006 DDD4: Data access layers - Convenience vs. Control and Performance?
2006 DDD4: Data access layers - Convenience vs. Control and Performance?2006 DDD4: Data access layers - Convenience vs. Control and Performance?
2006 DDD4: Data access layers - Convenience vs. Control and Performance?Daniel Fisher
 

Mehr von Daniel Fisher (16)

MD DevdDays 2016: Defensive programming, resilience patterns & antifragility
MD DevdDays 2016: Defensive programming, resilience patterns & antifragilityMD DevdDays 2016: Defensive programming, resilience patterns & antifragility
MD DevdDays 2016: Defensive programming, resilience patterns & antifragility
 
NRWConf, DE: Defensive programming, resilience patterns & antifragility
NRWConf, DE: Defensive programming, resilience patterns & antifragilityNRWConf, DE: Defensive programming, resilience patterns & antifragility
NRWConf, DE: Defensive programming, resilience patterns & antifragility
 
.NET Developer Days 2015, PL: Defensive programming, resilience patterns & an...
.NET Developer Days 2015, PL: Defensive programming, resilience patterns & an....NET Developer Days 2015, PL: Defensive programming, resilience patterns & an...
.NET Developer Days 2015, PL: Defensive programming, resilience patterns & an...
 
2015 - Basta! 2015, DE: JavaScript und build
2015 - Basta! 2015, DE: JavaScript und build2015 - Basta! 2015, DE: JavaScript und build
2015 - Basta! 2015, DE: JavaScript und build
 
2015 - Basta! 2015, DE: Defensive programming, resilience patterns & antifrag...
2015 - Basta! 2015, DE: Defensive programming, resilience patterns & antifrag...2015 - Basta! 2015, DE: Defensive programming, resilience patterns & antifrag...
2015 - Basta! 2015, DE: Defensive programming, resilience patterns & antifrag...
 
2015 - Network 2015, UA: Defensive programming, resilience patterns & antifra...
2015 - Network 2015, UA: Defensive programming, resilience patterns & antifra...2015 - Network 2015, UA: Defensive programming, resilience patterns & antifra...
2015 - Network 2015, UA: Defensive programming, resilience patterns & antifra...
 
2011 NetUG HH: ASP.NET MVC & HTML 5
2011 NetUG HH: ASP.NET MVC & HTML 52011 NetUG HH: ASP.NET MVC & HTML 5
2011 NetUG HH: ASP.NET MVC & HTML 5
 
2010 - Basta!: IPhone Apps mit C#
2010 - Basta!: IPhone Apps mit C#2010 - Basta!: IPhone Apps mit C#
2010 - Basta!: IPhone Apps mit C#
 
2010 Basta!: Massendaten mit ADO.NET
2010 Basta!: Massendaten mit ADO.NET2010 Basta!: Massendaten mit ADO.NET
2010 Basta!: Massendaten mit ADO.NET
 
2009 - Microsoft Springbreak: IIS, PHP & WCF
2009 - Microsoft Springbreak: IIS, PHP & WCF2009 - Microsoft Springbreak: IIS, PHP & WCF
2009 - Microsoft Springbreak: IIS, PHP & WCF
 
2009 - NRW Conf: (ASP).NET Membership
2009 - NRW Conf: (ASP).NET Membership2009 - NRW Conf: (ASP).NET Membership
2009 - NRW Conf: (ASP).NET Membership
 
2009 Dotnet Information Day: More effective c#
2009 Dotnet Information Day: More effective c#2009 Dotnet Information Day: More effective c#
2009 Dotnet Information Day: More effective c#
 
2009 - Basta!: Agiles requirements engineering
2009 - Basta!: Agiles requirements engineering2009 - Basta!: Agiles requirements engineering
2009 - Basta!: Agiles requirements engineering
 
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
 
2008 - Basta!: Massendaten auf dem Client
2008 - Basta!: Massendaten auf dem Client2008 - Basta!: Massendaten auf dem Client
2008 - Basta!: Massendaten auf dem Client
 
2006 DDD4: Data access layers - Convenience vs. Control and Performance?
2006 DDD4: Data access layers - Convenience vs. Control and Performance?2006 DDD4: Data access layers - Convenience vs. Control and Performance?
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
  • 5. Was ist Web 2.0? 5
  • 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
  • 9. Architecture of Participation • „User“ als Co-Developer sehen • Feedback • Contributions 9
  • 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
  • 28. Asynchrone Kommunikation • Präsentationsschicht • Programmschicht • Infrastrukturschicht 28
  • 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.
  • 31. 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>
  • 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
  • 38. 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"; } }
  • 39. 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
  • 40. 40 Async Pages & Tasks mit ASP.NET
  • 41. Asynchrone System-Architekturen • Synchron • Asynchron Entkoppelung durch MessageQueing
  • 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
  • 44. 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>