Benutzer-Werkzeuge

Webseiten-Werkzeuge


entwicklertreffen:140814

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
entwicklertreffen:140814 [19.08.2014 14:12] – angelegt Joachim Hilgersentwicklertreffen:140814 [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-Im August 2014 wurde auf dem Treffen gezeigt, wie einfach sich DotNet-Komponenten aus FoxPro heraus aufrufen lassen, indem man wwDotnetBridge von Rick Strahl (http://west-wind.com/wwDotnetBridge.aspx) einsetzt. wwDotnetBridge wird als freie Version incl. Sourcecode zur Verfügung gestellt.Es ist aber auch eine kommerzielle Lizenz verfügbar um entsprechenden Support zu erhalten oder einfach das Projekt zu unterstützen...+Im August 2014 wurde auf dem Treffen gezeigt, wie einfach sich DotNet-Komponenten aus FoxPro heraus aufrufen lassen, in dem man wwDotnetBridge von Rick Strahl (http://west-wind.com/wwDotnetBridge.aspx) einsetzt. wwDotnetBridge wird als freie Version incl. Sourcecode zur Verfügung gestellt. Es ist aber auch eine kommerzielle Lizenz verfügbar um entsprechenden Support zu erhalten oder einfach das Projekt zu unterstützen...
  
 Um wwDotnetBridge unter VFP einzusetzen, benötigt man die folgenden Dateien aus dem Download: Um wwDotnetBridge unter VFP einzusetzen, benötigt man die folgenden Dateien aus dem Download:
Zeile 7: Zeile 7:
   * "wwDotNetBridge.xml"   * "wwDotNetBridge.xml"
  
-<code foxpro>+**Einfache Anwendung** 
 + 
 +Das mitgelieferte Beispiel zeigt, wie einfach man z.B. die Liste der laufenden Prozesse in einen Cursor einlesen kann: 
 + 
 +<code>
  
 LOCAL loBridge as wwDotNetBridge OF wwDotNetBridge.prg LOCAL loBridge as wwDotNetBridge OF wwDotNetBridge.prg
Zeile 31: Zeile 35:
  
 loBridge.unload() loBridge.unload()
 +
 </code> </code>
  
 +**Mögliche Performaceverbesserungen**
  
-Vorgestellt wurde +Weiterhin wurde gezeigt, dass man z.B. rechenintensive Programmteile sehr einfach auslagern kann und so u.U. erhebliche Performanceverbesserungen erreichen kann. 
  
-Dazu wurde +Im folgenden Beispiel wird z.B. in einer Million Durchläufen eine Summe gebildet. Der erste Durchlauf erfolgt in nativem FoxPro-Code. Der 2. Durchlauf erfolgt innerhalb einer selbst erzeugten .Net-DLL. In diesem Fall dauerte die Berechnung in VFP rund 0,4 Sekunden und in .net 0,001 Sekunden...
  
-  * http://west-wind.com/wwDotnetBridge.aspx: NET Interop for Visual FoxPro made easy +<code>
-    * {{:vfp:wwdotnetbridge.pdf|}}+
  
 +LOCAL loBridge as wwDotNetBridge OF wwDotNetBridge.prg
 +LOCAL loRechnen
 +do wwDotNetBridge  && Load library
 +loBridge = CreateObject("wwDotNetBridge","V4")
 +
 +*** Load our custom assembly
 +loBridge.LoadAssembly("MeineDLL.dll")
 +IF loBridge.lError
 +   ? loBridge.cErrorMsg
 +   RETURN 
 +ENDIF
 +
 +loRechnen =  loBridge.CreateInstance("MeineNetVersucheDLL.rechnen")
 +IF loBridge.lError
 +   ? loBridge.cErrorMsg
 +   RETURN 
 +ENDIF
 +
 +LOCAL lnAnzahl, ln, lnStart, lnSum
 +lnAnzahl = 1000 * 1000
 +lnStart = SECONDS()
 +? "================================="
 +? "VFP, Durchläufe:", lnAnzahl 
 +lnSum = 0
 +FOR  ln=0 TO lnAnzahl STEP 1
 +   lnSum = lnSum + ln
 +ENDFOR 
 +? "Ergebnis:", TRANSFORM(lnSum,"999,999,999,999")
 +? "Dauer: ", SECONDS()-lnStart
 +
 +? "--------------------------------"
 +lnStart = SECONDS()
 +? ".Net, Durchläufe:", lnAnzahl 
 +lnSum = loBridge.Invokemethod(loRechnen,"schleife",lnAnzahl)
 +? "Ergebnis:", TRANSFORM(lnSum,"999,999,999,999")
 +? "Dauer: ", SECONDS()-lnStart
 +
 +loBridge.unload()
 +
 +</code>
 +
 +
 +<code csharp>
 +
 +namespace MeineDLL
 +{
 +    public class rechnen 
 +    {
 +        public Int64 schleife(Int32 anzahl)
 +        {
 +            Int64 summe = 0;
 +            for (Int64 i = 0; i <= anzahl; i++)
 + {
 +                summe = summe + i;
 + }
 +            return summe;
 +        }
 +    }
 +}
 +
 +</code>
entwicklertreffen/140814.1408457569.txt.gz · Zuletzt geändert: 19.08.2014 13:12 (Externe Bearbeitung)