Deeplinking in eine WinForms-Anwendung

.NET User Group Dresden
.NET User Group Dresden.NET User Group Dresden
www.inqu.de




.NET User Group Dresden

            Real World Scenario
 Deeplinking in eine WinForms-Anwendung

               01.03.2012
         InQu Informatics GmbH
             Marco Wagner
www.inqu.de


die vorhandene Anwendung

 unternehmensinternes Bestellsystem
 WinForms-Client auf Terminalserver




                            Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


das Ziel

 Migration ins Web
 neue Features
 Einsparung Terminalserver




                              Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


das (Zwischen)Ergebnis

 Bestellansicht




                         Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Herausforderung

 2 Systeme
 Medienbruch Win/Web
 „nicht aus einem Guß“

 Mindestanforderung: Navigation zwischen beiden Systemen




                            Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Navigation zwischen Win & Web



      vonnach   Win                          Web
      Win        Nav zw. Modulen              Hyperlink
      Web        ?                            Hyperlink




                       Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Nachrichten vom Web ins Win?

 Skype?
 MSDN?




                     Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Custom URL Protocol

 eigenen URL-Protokollhandler registrieren und
  implementieren

 http://
 ms-help://
 skype://

 shop://

   MSDN: http://msdn.microsoft.com/en-us/library/ie/aa767914(v=vs.85).aspx



                                       Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


URL-Protokoll registrieren

 siehe shop.reg in MessageDispatcher.csproj




                              Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Windows Registry

HKEY_CLASSES_ROOT     COM-Registrierung; Dateitypen / Erweiterungen
HKEY_CURRENT_USER     Profil aktueller User
HKEY_LOCAL_MACHINE    Nutzerübergreifende Einstellungen
HKEY_USERS            Nutzerstamm
HKEY_CURRENT_CONFIG   Profil aktuelle Hardware




                                   Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Kommunikation über Prozessgrenzen hinweg

 Problem
    Prozesse haben separate Adressräume

 Lösungen
      Pipes
      Events / Nachrichten
      Funktionsaufrufe / Remote Procedure Calls
      Shared Memory




                                       Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Navigation von Web nach Win (auch) per Hyperlink




                        Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Demo Prototyp

 siehe Solution




                   Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Übersicht Prototyp




                     Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Pause?




         Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


URL



      shop://component=Bestellungen;id=2




                      Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Nachricht

 Nachrichtentyp: WM_COPYDATA
    http://msdn.microsoft.com/en-
     us/library/windows/desktop/ms649011(v=vs.85).aspx
 Nachrichtenstruktur: COPYDATASTRUCT
    http://msdn.microsoft.com/en-
     us/library/windows/desktop/ms649010(v=vs.85).aspx

 siehe Shared




                                    Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


URL via Dispatcher weiterreichen
(Nachricht senden)
 vgl. MessageDispatcher.Program
        [DllImport("user32.dll")]
        public static extern int SendMessage(
               IntPtr hWnd,
               int Msg,
               IntPtr wParam,
               ref WndMessage lParam);

 SendMessage schickt direkt ans Ziel und wartet bis
  Abarbeitung (Message Loop; synchron)
 PostMessage legt Message in Queue und kehrt sofort zurück
  (Message Queue; asynchron)
                             Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


URL/ Parameter im Legacy Shop verarbeiten
(Nachricht empfangen)
 siehe WndProc in LegacyShop


protected override void WndProc(ref Message m)

…

var messageData = (WndMessage)Marshal
       .PtrToStructure(m.LParam, typeof(WndMessage));

var message = Marshal.PtrToStringUni(messageData.lpData);




                               Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


proprietäre Nachrichteninterpretation

              shop://component=Bestellungen;id=2



var formatPattern =
       @"shop://component=(?<componentKey>w+);id=(?<id>d+)";
var match = Regex.Match(message, formatPattern);

var componentKey = match.Groups["componentKey"].Value;
var idText = match.Groups["id"].Value;




                               Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Fragen?




          Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
www.inqu.de


Slides & Code

 demnächst auf
    http://raumwolken.de
    http://dd-dotnet.de/

 Fragen
    marco.wagner@inqu.de




                            Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
1 von 22

Recomendados

BUILD 2011 in Anaheim. von
BUILD 2011 in Anaheim.BUILD 2011 in Anaheim.
BUILD 2011 in Anaheim..NET User Group Dresden
717 views24 Folien
MVVM Pattern von
MVVM Pattern MVVM Pattern
MVVM Pattern .NET User Group Dresden
835 views19 Folien
Ist ADO.NET EntityFramework das bessere LINQ? von
Ist ADO.NET EntityFramework das bessere LINQ?Ist ADO.NET EntityFramework das bessere LINQ?
Ist ADO.NET EntityFramework das bessere LINQ?.NET User Group Dresden
893 views27 Folien
WPF 3D Programmierung von
WPF 3D ProgrammierungWPF 3D Programmierung
WPF 3D Programmierung.NET User Group Dresden
2.7K views20 Folien
ScriptRunner - Eine Einführung von
ScriptRunner - Eine EinführungScriptRunner - Eine Einführung
ScriptRunner - Eine EinführungHeiko Brenn
176 views25 Folien
FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter... von
FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...
FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...Verein FM Konferenz
1.9K views14 Folien

Más contenido relacionado

Similar a Deeplinking in eine WinForms-Anwendung

Service oriented alerting von
Service oriented alertingService oriented alerting
Service oriented alertinggeekQ
101 views51 Folien
Einsatz eines Unternehmens-Wikis für das Wissensmanagement von
Einsatz eines Unternehmens-Wikis für das WissensmanagementEinsatz eines Unternehmens-Wikis für das Wissensmanagement
Einsatz eines Unternehmens-Wikis für das WissensmanagementCommunardo GmbH
1.2K views14 Folien
Continuous Delivery in ADF Projekten von
Continuous Delivery in ADF ProjektenContinuous Delivery in ADF Projekten
Continuous Delivery in ADF ProjektenUlrich Gerkmann-Bartels
958 views38 Folien
Top 10 Internet Trends 2006 von
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Jürg Stuker
1.3K views123 Folien
OSDC 2010 | IT Service Management mit Open Source Software „OpenITSM“ by Juli... von
OSDC 2010 | IT Service Management mit Open Source Software „OpenITSM“ by Juli...OSDC 2010 | IT Service Management mit Open Source Software „OpenITSM“ by Juli...
OSDC 2010 | IT Service Management mit Open Source Software „OpenITSM“ by Juli...NETWAYS
60 views55 Folien
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal von
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
20040921 Serviceorientierte Architektur für WebSphere und WebSphere PortalFrank Rahn
2K views19 Folien

Similar a Deeplinking in eine WinForms-Anwendung(20)

Service oriented alerting von geekQ
Service oriented alertingService oriented alerting
Service oriented alerting
geekQ101 views
Einsatz eines Unternehmens-Wikis für das Wissensmanagement von Communardo GmbH
Einsatz eines Unternehmens-Wikis für das WissensmanagementEinsatz eines Unternehmens-Wikis für das Wissensmanagement
Einsatz eines Unternehmens-Wikis für das Wissensmanagement
Communardo GmbH1.2K views
Top 10 Internet Trends 2006 von Jürg Stuker
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
Jürg Stuker1.3K views
OSDC 2010 | IT Service Management mit Open Source Software „OpenITSM“ by Juli... von NETWAYS
OSDC 2010 | IT Service Management mit Open Source Software „OpenITSM“ by Juli...OSDC 2010 | IT Service Management mit Open Source Software „OpenITSM“ by Juli...
OSDC 2010 | IT Service Management mit Open Source Software „OpenITSM“ by Juli...
NETWAYS60 views
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal von Frank Rahn
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
Frank Rahn2K views
IKT-Trends und deren Bedeutung für eHealth von Fraunhofer AISEC
IKT-Trends und deren Bedeutung für eHealthIKT-Trends und deren Bedeutung für eHealth
IKT-Trends und deren Bedeutung für eHealth
Fraunhofer AISEC1.1K views
Vortrag zu Apps AppPlusMobile, Kreativamt Gladbeck von AppPlusMobile.info
Vortrag zu Apps AppPlusMobile, Kreativamt GladbeckVortrag zu Apps AppPlusMobile, Kreativamt Gladbeck
Vortrag zu Apps AppPlusMobile, Kreativamt Gladbeck
AppPlusMobile.info2.3K views
Industrie 4.0 von GESIS
Industrie 4.0Industrie 4.0
Industrie 4.0
GESIS4.1K views
Nagios Conference 2006 | Automatisierung von Performancecharts mit dem Nagios... von NETWAYS
Nagios Conference 2006 | Automatisierung von Performancecharts mit dem Nagios...Nagios Conference 2006 | Automatisierung von Performancecharts mit dem Nagios...
Nagios Conference 2006 | Automatisierung von Performancecharts mit dem Nagios...
NETWAYS29 views
Cloud Native Computing von Aarno Aukia
Cloud Native ComputingCloud Native Computing
Cloud Native Computing
Aarno Aukia135 views
TeamProQ - Die Arbeitsplattform für den gesamten Immobilien-Lebenszyklus! von TeamProQ GmbH
TeamProQ - Die Arbeitsplattform für den gesamten Immobilien-Lebenszyklus!TeamProQ - Die Arbeitsplattform für den gesamten Immobilien-Lebenszyklus!
TeamProQ - Die Arbeitsplattform für den gesamten Immobilien-Lebenszyklus!
TeamProQ GmbH440 views
Knockin' on heaven's door - Die Praxis zu Besuch beim W3C von Jens Grochtdreis
Knockin' on heaven's door - Die Praxis zu Besuch beim W3CKnockin' on heaven's door - Die Praxis zu Besuch beim W3C
Knockin' on heaven's door - Die Praxis zu Besuch beim W3C
Jens Grochtdreis1.9K views
TechCommToGo + Kisters 3DVS | GO MOBILE von Georg Eck
TechCommToGo + Kisters 3DVS | GO MOBILETechCommToGo + Kisters 3DVS | GO MOBILE
TechCommToGo + Kisters 3DVS | GO MOBILE
Georg Eck2.6K views
PIM2Print mit Xactuell von Unic
PIM2Print mit XactuellPIM2Print mit Xactuell
PIM2Print mit Xactuell
Unic1.3K views

Más de .NET User Group Dresden

Dynamic linq von
Dynamic linqDynamic linq
Dynamic linq.NET User Group Dresden
657 views11 Folien
GUIs mit Expression Blend von
GUIs mit Expression BlendGUIs mit Expression Blend
GUIs mit Expression Blend.NET User Group Dresden
1.6K views22 Folien
Visual Studio Tools for Office von
Visual Studio Tools for OfficeVisual Studio Tools for Office
Visual Studio Tools for Office.NET User Group Dresden
1K views33 Folien
Team Foundation Server von
Team Foundation ServerTeam Foundation Server
Team Foundation Server.NET User Group Dresden
961 views14 Folien
Silverlight von
SilverlightSilverlight
Silverlight.NET User Group Dresden
936 views13 Folien
Lambda Expressions & Linq von
Lambda Expressions & LinqLambda Expressions & Linq
Lambda Expressions & Linq.NET User Group Dresden
2.1K views28 Folien

Deeplinking in eine WinForms-Anwendung

  • 1. www.inqu.de .NET User Group Dresden Real World Scenario Deeplinking in eine WinForms-Anwendung 01.03.2012 InQu Informatics GmbH Marco Wagner
  • 2. www.inqu.de die vorhandene Anwendung  unternehmensinternes Bestellsystem  WinForms-Client auf Terminalserver Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 3. www.inqu.de das Ziel  Migration ins Web  neue Features  Einsparung Terminalserver Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 4. www.inqu.de das (Zwischen)Ergebnis  Bestellansicht Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 5. www.inqu.de Herausforderung  2 Systeme  Medienbruch Win/Web  „nicht aus einem Guß“  Mindestanforderung: Navigation zwischen beiden Systemen Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 6. www.inqu.de Navigation zwischen Win & Web vonnach Win Web Win Nav zw. Modulen Hyperlink Web ? Hyperlink Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 7. www.inqu.de Nachrichten vom Web ins Win?  Skype?  MSDN? Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 8. www.inqu.de Custom URL Protocol  eigenen URL-Protokollhandler registrieren und implementieren  http://  ms-help://  skype://  shop://  MSDN: http://msdn.microsoft.com/en-us/library/ie/aa767914(v=vs.85).aspx Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 9. www.inqu.de URL-Protokoll registrieren  siehe shop.reg in MessageDispatcher.csproj Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 10. www.inqu.de Windows Registry HKEY_CLASSES_ROOT COM-Registrierung; Dateitypen / Erweiterungen HKEY_CURRENT_USER Profil aktueller User HKEY_LOCAL_MACHINE Nutzerübergreifende Einstellungen HKEY_USERS Nutzerstamm HKEY_CURRENT_CONFIG Profil aktuelle Hardware Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 11. www.inqu.de Kommunikation über Prozessgrenzen hinweg  Problem  Prozesse haben separate Adressräume  Lösungen  Pipes  Events / Nachrichten  Funktionsaufrufe / Remote Procedure Calls  Shared Memory Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 12. www.inqu.de Navigation von Web nach Win (auch) per Hyperlink Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 13. www.inqu.de Demo Prototyp  siehe Solution Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 14. www.inqu.de Übersicht Prototyp Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 15. www.inqu.de Pause? Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 16. www.inqu.de URL shop://component=Bestellungen;id=2 Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 17. www.inqu.de Nachricht  Nachrichtentyp: WM_COPYDATA  http://msdn.microsoft.com/en- us/library/windows/desktop/ms649011(v=vs.85).aspx  Nachrichtenstruktur: COPYDATASTRUCT  http://msdn.microsoft.com/en- us/library/windows/desktop/ms649010(v=vs.85).aspx  siehe Shared Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 18. www.inqu.de URL via Dispatcher weiterreichen (Nachricht senden)  vgl. MessageDispatcher.Program [DllImport("user32.dll")] public static extern int SendMessage( IntPtr hWnd, int Msg, IntPtr wParam, ref WndMessage lParam);  SendMessage schickt direkt ans Ziel und wartet bis Abarbeitung (Message Loop; synchron)  PostMessage legt Message in Queue und kehrt sofort zurück (Message Queue; asynchron) Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 19. www.inqu.de URL/ Parameter im Legacy Shop verarbeiten (Nachricht empfangen)  siehe WndProc in LegacyShop protected override void WndProc(ref Message m) … var messageData = (WndMessage)Marshal .PtrToStructure(m.LParam, typeof(WndMessage)); var message = Marshal.PtrToStringUni(messageData.lpData); Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 20. www.inqu.de proprietäre Nachrichteninterpretation shop://component=Bestellungen;id=2 var formatPattern = @"shop://component=(?<componentKey>w+);id=(?<id>d+)"; var match = Regex.Match(message, formatPattern); var componentKey = match.Groups["componentKey"].Value; var idText = match.Groups["id"].Value; Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 21. www.inqu.de Fragen? Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de
  • 22. www.inqu.de Slides & Code  demnächst auf  http://raumwolken.de  http://dd-dotnet.de/  Fragen  marco.wagner@inqu.de Marco Wagner | InQu Informatics GmbH | http://inqu.de | http://raumwolken.de