Formatvorlage des Untertitelmasters durch Klicken bearbeitenPlatin-Partner: Gold-Partner: Veranstaltungs-Partner: Medien-P...
Lösungen für die Kommunikation und Zusammenarbeit im UnternehmenWir sind Ihr Partner für Softwarelösungen, mit denen Sie d...
AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• ...
AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• ...
GoalsImprove user experienceReduce server load
Use casesIn general• Adjust prices inreal-time, e.g. forflight tickets• Show newcomments as theycome in• Activity streamsI...
TFS – Team RoomQuelle: http://tfs.visualstudio.com/en-us/news/2013-jun-3
Shopping cartQuelle: http://tech.pro/tutorial/1146/building-a-shopping-cart-with-signalr-aspnet-web-api-and-knockoutjs
Stock TickerQuelle: SignalR
Download counterQuelle: http://melcher.it/2012/05/signalr-and-sharepoint-live-download-tracking/
Upload visualizerQuelle: http://blog-aspc.azurewebsites.net/sharepoint-with-signalr/
Realtime ASP.NET Web API tracing with SignalRVideo:http://www.strathweb.com/2012/11/realtime-asp-net-web-api-tracing-with-...
JabbRCollaborative chat done right• Project:http://about.jabbr.net/• Code:https://github.com/JabbR/JabbR• Live demo:https:...
ShootRMultiplayer space ship gamebuilt on the SignalR framework.• Code:https://github.com/ntaylormullen/shootr• Live demo:...
Tic-Tac-Toe• Code:https://github.com/fekberg/Tic-Tac-Toe• Live demo:http://signalr-tictactoe.azurewebsites.net/
DEMO
http://www.christian-heindel.de/SignalRServer/
AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• ...
Refresh a page after it has loadedHow you could try it…• Client pull– F5, Ctrl+F5, press the“Delete cache”button hard ando...
Comet (a.k.a. Ajax Push, Reverse Ajax, HTTP Streaming, HTTP server push)• No page-by-page request or polling, but a long-h...
WebSockets• Full-duplex communication channel over a single TCP connection• Persistent connection• Cross origin support bu...
caniuse.com
AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• ...
ASP.NET SignalR• SignalR started in July 2011 as a project by– David Fowler (Senior Software Design Engineer, ASP.NET Team...
Introduction to SignalRQuelle: http://www.asp.net/signalr/overview/getting-started/introduction-to-signalr
SignalR: Features• Ready to use libraries for server and clients• Automatic connection management(send to all clients, to ...
SignalR: Transports and fallbacksHTML 5 transportsThese transports depend on support for HTML 5. If the client browser doe...
SignalR: Architecture diagramQuelle: SignalR
SignalR: Connections- Simple endpoint for sending single-recipient, grouped, or broadcastmessages- Connection API (represe...
SignalR: Hubs- high-level pipeline built upon the Connection API- allows client and server to call methods on each other d...
SignalR: Supported platforms (server side)http://blogs.msdn.com/b/timlee/archive/2013/02/27/deploy-the-signalr-getting-sta...
SignalR: Supported platforms (client side)• Browsers (JavaScript)• Windows Desktop(Forms)• Silverlight• Windows Store (.NE...
SignalR: System requirements (Windows)• On Facebook you’d say: “It’s complicated.”• Excerpt from the documentation:• Serve...
SignalR: Performance and scalability (I)• Standard limit in IIS: 5.000 connections per CPU• You can override this limit!• ...
SignalR: Performance and scalability (II)• ScaleOut providers available since SignalR 1.1– Azure Service Bus– SQL Server– ...
SignalR: Performance and scalability (III)• Helpful documentation on MSDN library• How to notify the user about disconnect...
AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• ...
Why MVVM in JavaScript?• Separate design from code• Two-way DataBinding for properties• Command binding• Templates
Which framework to choose?knockout.js(Microsoft)spine.js SproutCore JavascriptMVC ember.jsAngular.js(Google)…
knockout.js• Simplify dynamic JavaScript UIs by applyingthe Model-View-View Model (MVVM) pattern• By Steve Sanderson (Micr...
knockout.jsLoad JavaScript:DataBinding in HTML:Define ViewModel:Start listening:Refresh values:
knockout.jsLoad JavaScript:DataBinding in HTML:Define ViewModel:Start listening:Refresh values:JSON?
JSON – JavaScript Object Notation• Derived from JavaScript• Language independant• Human readable• Specified by Douglas Cro...
oDATA – Open Data Protocol• standardized protocol for creating and consuming data APIs• builds on REST web services• unifo...
oDATA – Open Data Protocol• standardized protocol for creating and consuming data APIs• builds on REST web services• unifo...
AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• ...
Events in SharePointSynchronous orasynchronous(before or after)Local, app orremote (new in SP2013)
Events in SharePoint• Item eventsadding, added,deleting, deleted,updating, updated,fileconverted,filemoving,filemoved,chec...
AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• ...
Integration in SharePoint (on-premises)SharePoint 2010• uses .NET Framework 3.5• SignalR requires .NET Framework 4.0 / 4.5...
Integration in SharePoint (on-premises)So in order to get it working you have to write:• HttpModule• SPWebConfigModificati...
Weak points• CORS (cross site scripting)– Different browsers handle this with differentsuccess… ;-)• Proxying required
Integration in SharePoint Online (I)• Remote Event Receiver - Declaration
Integration in SharePoint Online (II)• Remote Event Receiver - Implementation
Integration in SharePoint Online (III)• SignalRHub in same project asRemoteEventReceiver
DEMO56
AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• ...
Resources• Active community– Forums: http://forums.asp.net/1254.aspx– Github: Weve found 493 repository results• Official ...
Open Source projects using SignalRJabbR• JabbR is an open source, real-time web chat system built using ASP.NET and Signal...
FRAGEN ?
SharePoint Campab 08. Juli in Münchenab 05. August in Berlinab 02. September in Karlsruhein zwei speziellen Versionenwww.S...
Hat Ihnen mein Vortrag gefallen?Ich freue mich auf Ihr Feedback!
VIELEN DANK!Platin-Partner: Gold-Partner: Veranstaltungs-Partner: Medien-Partner:
Communardo Software GmbHKleiststraße 10 a01129 Dresdenhttp://www.communardo.deinfo@communardo.dePhone: +49 (351) 833 820St...
Upcoming SlideShare
Loading in …5
×

Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.js

2,193 views

Published on

As seen at http://www.sharepointkonferenz.at/

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Here is a step-by-step tutorial on how to create a SignalR App for SharePoint 2013 and Office365
    http://spmatt.wordpress.com/2013/08/21/harnessing-signalr-in-sharepoint-2013-office-365/
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total views
2,193
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
15
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.js

  1. 1. Formatvorlage des Untertitelmasters durch Klicken bearbeitenPlatin-Partner: Gold-Partner: Veranstaltungs-Partner: Medien-Partner:Echtzeitanwendungen für SharePointmit SignalR und knockout.jsChristian Heindel, Communardo Software GmbHSignalR @c_heindel
  2. 2. Lösungen für die Kommunikation und Zusammenarbeit im UnternehmenWir sind Ihr Partner für Softwarelösungen, mit denen Sie die Kommunikation undZusammenarbeit in Ihrem Unternehmen, sowie mit Ihren Kunden und Lieferanten nachhaltigstärken. Als Enterprise 2.0 Lösungshaus bieten wir alle Leistungen für die Realisierung underfolgreiche Einführung, mit einem umfassenden Service an Produkten, Beratung,Softwareentwicklung, Training und Application Management.Wir sind zertifizierter Partner von Microsoft, IBM und Atlassian und damit erster Ansprechpartnerfür die Planung und Umsetzung Ihrer Enterprise 2.0Lösung.
  3. 3. AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• Client libraries, supportedplatforms, scalabilityMVVM in JavaScript• knockout.js, jQuery, JSON,oDATAEvents in SharePoint• OverviewBringing it all together• SharePoint 2010• SharePoint 2013• SharePoint Online
  4. 4. AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• Client libraries, supportedplatforms, scalabilityMVVM in JavaScript• knockout.js, jQuery, JSON,oDATAEvents in SharePoint• OverviewBringing it all together• SharePoint 2010• SharePoint 2013• SharePoint Online
  5. 5. GoalsImprove user experienceReduce server load
  6. 6. Use casesIn general• Adjust prices inreal-time, e.g. forflight tickets• Show newcomments as theycome in• Activity streamsIn SharePoint• Show changes to listitems• "Who is online?"• Chat / Shoutbox• Download counter• Task statusdashboard
  7. 7. TFS – Team RoomQuelle: http://tfs.visualstudio.com/en-us/news/2013-jun-3
  8. 8. Shopping cartQuelle: http://tech.pro/tutorial/1146/building-a-shopping-cart-with-signalr-aspnet-web-api-and-knockoutjs
  9. 9. Stock TickerQuelle: SignalR
  10. 10. Download counterQuelle: http://melcher.it/2012/05/signalr-and-sharepoint-live-download-tracking/
  11. 11. Upload visualizerQuelle: http://blog-aspc.azurewebsites.net/sharepoint-with-signalr/
  12. 12. Realtime ASP.NET Web API tracing with SignalRVideo:http://www.strathweb.com/2012/11/realtime-asp-net-web-api-tracing-with-signalr/
  13. 13. JabbRCollaborative chat done right• Project:http://about.jabbr.net/• Code:https://github.com/JabbR/JabbR• Live demo:https://jabbR.net
  14. 14. ShootRMultiplayer space ship gamebuilt on the SignalR framework.• Code:https://github.com/ntaylormullen/shootr• Live demo:http://shootr.signalr.net/
  15. 15. Tic-Tac-Toe• Code:https://github.com/fekberg/Tic-Tac-Toe• Live demo:http://signalr-tictactoe.azurewebsites.net/
  16. 16. DEMO
  17. 17. http://www.christian-heindel.de/SignalRServer/
  18. 18. AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• Client libraries, supportedplatforms, scalabilityMVVM in JavaScript• knockout.js, jQuery, JSON,oDATAEvents in SharePoint• OverviewBringing it all together• SharePoint 2010• SharePoint 2013• SharePoint Online
  19. 19. Refresh a page after it has loadedHow you could try it…• Client pull– F5, Ctrl+F5, press the“Delete cache”button hard andoften, then F5– Polling: AJAX Requestevery 60 seconds?Every 5 seconds?How you should do it…• Server push– WebSocketconnection– Comet techniquesas fallback
  20. 20. Comet (a.k.a. Ajax Push, Reverse Ajax, HTTP Streaming, HTTP server push)• No page-by-page request or polling, but a long-held HTTP request• Biggest problem: HTTP 1.1 (max. 2 simultaneous connections)• Streaming:– Hidden iFrame– XMLHttpRequest– Ajax with long polling– XMLHttpRequest with long polling– Script tag long polling
  21. 21. WebSockets• Full-duplex communication channel over a single TCP connection• Persistent connection• Cross origin support built in (CORS)• IETF RFC 6455• Port 80• WebSockets API (W3C Recommendation)• Web browser + web server need to implement it– IIS 8.0, Apache 2.x, nginx 1.3.13+, lighttpd, node.js, …– Google Chrome 14+, Internet Explorer 10+, Firefox 6+, Safari 6+ andOpera 12.10+
  22. 22. caniuse.com
  23. 23. AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• Client libraries, supportedplatforms, scalabilityMVVM in JavaScript• knockout.js, jQuery, JSON,oDATAEvents in SharePoint• OverviewBringing it all together• SharePoint 2010• SharePoint 2013• SharePoint Online
  24. 24. ASP.NET SignalR• SignalR started in July 2011 as a project by– David Fowler (Senior Software Design Engineer, ASP.NET Team)– Damien Edwards (Senior Program Manager, Microsoft)• Now official part of the ASP.NET Technologies: http://asp.net/signalr• MSDN documentation (since 03/2013):http://msdn.microsoft.com/en-us/library/jj891071(v=vs.111).aspx• Source code on GitHub• Available via NuGet Gallery (22.000+ downloads in last 6 weeks)
  25. 25. Introduction to SignalRQuelle: http://www.asp.net/signalr/overview/getting-started/introduction-to-signalr
  26. 26. SignalR: Features• Ready to use libraries for server and clients• Automatic connection management(send to all clients, to specific clients)• Uses WebSockets when available, fallback otherwise(abstraction layer)• Scale out to thousands of clients
  27. 27. SignalR: Transports and fallbacksHTML 5 transportsThese transports depend on support for HTML 5. If the client browser does not support the HTML 5 standard, older transports willbe used.• WebSocket• Server Sent Events, also known as EventSource (if the browser supports Server Sent Events, which is basically all browsersexcept Internet Explorer.)Comet transportsThe following transports are based on the Comet web application model, in which a browser or other client maintains a long-heldHTTP request, which the server can use to push data to the client without the client specifically requesting it.• Forever Frame– for Internet Explorer only, hidden Iframe, one-way realtime connection from server to client, connection from client to server uses aseparate connection, a new connection is created for each piece of data that needs to be sent• Ajax long polling– no persistent connection, but instead polling the server with a request that stays open until the server responds, at which point theconnection closes, and a new connection is requested immediately, latency while the connection resets
  28. 28. SignalR: Architecture diagramQuelle: SignalR
  29. 29. SignalR: Connections- Simple endpoint for sending single-recipient, grouped, or broadcastmessages- Connection API (represented in .NET code by thePersistentConnection class)- direct access to the low-level communication network that SignalRexposes- familiar to developers who have used connection-based APIs such asWindows Communication Foundation
  30. 30. SignalR: Hubs- high-level pipeline built upon the Connection API- allows client and server to call methods on each other directly- SignalR handles dispatching across machine boundaries as if by magic- For different types of messages, it is recommended that you use the Hub class, so that youwont have to create your own dispatching- using the Hub, you can call methods on the clients, rather than sending an explicit messagethat needs to be received, interpreted, and acted upon- familiar to developers who have used remote invocation APIs such as .NET Remoting
  31. 31. SignalR: Supported platforms (server side)http://blogs.msdn.com/b/timlee/archive/2013/02/27/deploy-the-signalr-getting-started-sample-as-a-windows-azure-web-site.aspx
  32. 32. SignalR: Supported platforms (client side)• Browsers (JavaScript)• Windows Desktop(Forms)• Silverlight• Windows Store (.NET)• Windows Store(JavaScript)• Windows Phone (IE)• Windows Phone (.NET)• Console• Web Services• iOS (Objective-C)• …
  33. 33. SignalR: System requirements (Windows)• On Facebook you’d say: “It’s complicated.”• Excerpt from the documentation:• Server: 2012*, 2008 r2, Azure Website, Windows 8*, Windows 7• .NET Framework: 4.0 / 4.5*• IIS: 7,7.5,8*, 8 Express*• Browser: IE10*• Silverlight: N/A (restr. 5+)• WP8: IE* (restr. WP8 App)• Only * supports WebSockets… 
  34. 34. SignalR: Performance and scalability (I)• Standard limit in IIS: 5.000 connections per CPU• You can override this limit!• For SignalR about 20.000 connections per CPU usuallyalso work, depends on your appliaction…• Special load test tool available:https://github.com/SignalR/SignalR/tree/dev/src/Microsoft.AspNet.SignalR.Crank
  35. 35. SignalR: Performance and scalability (II)• ScaleOut providers available since SignalR 1.1– Azure Service Bus– SQL Server– Redis
  36. 36. SignalR: Performance and scalability (III)• Helpful documentation on MSDN library• How to notify the user about disconnections• How to continuously reconnect$.connection.hub.connectionSlow(function() {notifyUserOfConnectionProblem();// Your function to notify user.});$.connection.hub.disconnected(function() {setTimeout(function() {$.connection.hub.start();}, 5000);// Restart connection after 5 seconds.});
  37. 37. AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• Client libraries, supportedplatforms, scalabilityMVVM in JavaScript• knockout.js, jQuery, JSON,oDATAEvents in SharePoint• OverviewBringing it all together• SharePoint 2010• SharePoint 2013• SharePoint Online
  38. 38. Why MVVM in JavaScript?• Separate design from code• Two-way DataBinding for properties• Command binding• Templates
  39. 39. Which framework to choose?knockout.js(Microsoft)spine.js SproutCore JavascriptMVC ember.jsAngular.js(Google)…
  40. 40. knockout.js• Simplify dynamic JavaScript UIs by applyingthe Model-View-View Model (MVVM) pattern• By Steve Sanderson (Microsoft employee),inspired by XAML, supports legacy browsers…Declarative BindingsEasily associate DOMelements with model datausing a concise,syntaxreadableAutomatic UI RefreshWhen your data modelsstate changes, your UIupdates automaticallyDependency TrackingImplicitly set up chains ofrelationships between modeldata, to transform andcombine itTemplatingQuickly generatesophisticated, nested UIs asa function of your model data
  41. 41. knockout.jsLoad JavaScript:DataBinding in HTML:Define ViewModel:Start listening:Refresh values:
  42. 42. knockout.jsLoad JavaScript:DataBinding in HTML:Define ViewModel:Start listening:Refresh values:JSON?
  43. 43. JSON – JavaScript Object Notation• Derived from JavaScript• Language independant• Human readable• Specified by Douglas Crockfordin RFC 4627• json.org launched in 2002{"id": 1,"name": "Foo","price": 123,"tags": [ "Bar", "Eek" ],"stock": {"warehouse": 300,"retail": 20}}
  44. 44. oDATA – Open Data Protocol• standardized protocol for creating and consuming data APIs• builds on REST web services• uniform way to expose full-featured data APIs• from Microsoft, submitted as OASIS standard• AtomPub protocol asenvelope for JSON• REST methods availableon sources• http://www.odata.org/
  45. 45. oDATA – Open Data Protocol• standardized protocol for creating and consuming data APIs• builds on REST web services• uniform way to expose full-featured data APIs• from Microsoft, submitted as OASIS standard• AtomPub protocol asenvelope for JSON• REST methods availableon sources• http://www.odata.org/
  46. 46. AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• Client libraries, supportedplatforms, scalabilityMVVM in JavaScript• knockout.js, jQuery,oDATA, JSON)Events in SharePoint• OverviewBringing it all together• SharePoint 2010• SharePoint 2013• SharePoint Online
  47. 47. Events in SharePointSynchronous orasynchronous(before or after)Local, app orremote (new in SP2013)
  48. 48. Events in SharePoint• Item eventsadding, added,deleting, deleted,updating, updated,fileconverted,filemoving,filemoved,checkingin,checkedin,checkingout, checkedout,attachmentadding,attachmentadded,attachmentdeleting,attachmentdeleted• List field eventsadding, added,deleting, deleted,updating, updated• List eventsadding, added,deleting, deleted• Web eventsadding, provisioned,deleting, deleted,moving, moved• Site eventsdeleting, deleted• App eventsinstalled, uninstalling,upgraded• And more…EmailReceived,WorkflowCompleted,WorkflowPostponed,WorkflowStarted,WorkflowStarting,FeatureEventReceiver installation,activation,deactivation, andremoval
  49. 49. AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• Client libraries, supportedplatforms, scalabilityMVVM in JavaScript• knockout.js, jQuery, JSON,oDATAEvents in SharePoint• OverviewBringing it all together• SharePoint 2010• SharePoint 2013• SharePoint Online
  50. 50. Integration in SharePoint (on-premises)SharePoint 2010• uses .NET Framework 3.5• SignalR requires .NET Framework 4.0 / 4.5•  Coding of a proxy necessary (WCF, HttpHandler or similar)SharePoint 2013• uses .NET Framework 4.0But:– SignalR attaches itself to the „App_Start“ event and registers a route „~/signalr/hubs“(so that clients always find the hub)– In SharePoint, there is no „App_Start“! ¯_(ツ)_/¯Global.asax cannot be modified in a way that deployablesolution: write a HttpModule
  51. 51. Integration in SharePoint (on-premises)So in order to get it working you have to write:• HttpModule• SPWebConfigModificationHandler• VirtualPathProviderThanks to Max Melcher, you don‘t have to: Go toCodeplexSPSignalR - real-time applications with SharePoint 2013• enables you to host SignalR in a SharePoint WebApplication• web application feature, AppPool recycle, yoursharepoint.com/signalr/hubs
  52. 52. Weak points• CORS (cross site scripting)– Different browsers handle this with differentsuccess… ;-)• Proxying required
  53. 53. Integration in SharePoint Online (I)• Remote Event Receiver - Declaration
  54. 54. Integration in SharePoint Online (II)• Remote Event Receiver - Implementation
  55. 55. Integration in SharePoint Online (III)• SignalRHub in same project asRemoteEventReceiver
  56. 56. DEMO56
  57. 57. AgendaRealtime applications• Goals, use cases, examplesPush technologies• WebSockets, CometSignalR• Connections and hubs• Client libraries, supportedplatforms, scalabilityMVVM in JavaScript• knockout.js, jQuery, JSON,oDATAEvents in SharePoint• OverviewBringing it all together• SharePoint 2010• SharePoint 2013• SharePoint Online
  58. 58. Resources• Active community– Forums: http://forums.asp.net/1254.aspx– Github: Weve found 493 repository results• Official website: http://asp.net/SignalR• Videos: http://channel9.msdn.com/search?term=signalr• Trainings:http://www.pluralsight.com/training/Courses/TableOfContents/signalr-introduction• JavaScript libraries: Angular, http://smoothiecharts.org/• Books: Pushing Data: Integrating with ASP.NET SignalR Hubshttp://henriquat.re/server-integration/signalr/integrateWithSignalRHubs.html• More links: https://delicious.com/c.heindel/signalr
  59. 59. Open Source projects using SignalRJabbR• JabbR is an open source, real-time web chat system built using ASP.NET and SignalR. Sourcecode is at https://github.com/davidfowl/jabbr.ShootR• ShootR is an open source, real-time, multi-player HTML5 space shooter game, using SignalRfor real-time server-client communications. Source code is athttps://github.com/NTaylorMullen/ShootR.ElmahR = ELMAH & SignalR• A real-time monitoring solution for ASP.NET applications built with ELMAH and SignalR.SignalR-ObjC• A community maintained Objective-C client for SignalR, for use with iOS and Mac.
  60. 60. FRAGEN ?
  61. 61. SharePoint Campab 08. Juli in Münchenab 05. August in Berlinab 02. September in Karlsruhein zwei speziellen Versionenwww.SharePointCamp.deTrainings und Events der ppedvMehr als 100 verschiedene Trainings aufMicrosoft-Technologien spezialisiert11 Standorte in AT & D Maßgeschneiderte Trainings direkt bei Ihnen vor Ort!www.ppedv.atWir sehen uns wieder!
  62. 62. Hat Ihnen mein Vortrag gefallen?Ich freue mich auf Ihr Feedback!
  63. 63. VIELEN DANK!Platin-Partner: Gold-Partner: Veranstaltungs-Partner: Medien-Partner:
  64. 64. Communardo Software GmbHKleiststraße 10 a01129 Dresdenhttp://www.communardo.deinfo@communardo.dePhone: +49 (351) 833 820Standort StuttgartLeinfelder Straße 6470771 Leinfelden-EchterdingenPhone: +49 (711) 220469-61Thank you for listening!Christian Heindelinfo@christian-heindel.dewww.communardo.deMobile: +49 (0) 171 - 3123924Twitter: @c_heindelBlog: http://blog.christian-heindel.deBlog: http://www.communardo.de/techblog/

×