<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4525690913054233781</id><updated>2011-07-29T08:36:25.290+02:00</updated><category term='Foxpro'/><category term='COM'/><category term='VFP'/><category term='WPF'/><category term='Cloud'/><category term='Silverlight'/><title type='text'>Foxpro and beyond</title><subtitle type='html'>Die mittelfristige Persperkive großer Foxpro-Apps.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chrdressler.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4525690913054233781/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chrdressler.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/04155304563674292497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://2.bp.blogspot.com/_qF80xiVWlY0/TAlTcxs7StI/AAAAAAAABj0/knLrMsOE-vM/S220/ChristophPortrait.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4525690913054233781.post-245677406382444550</id><published>2010-07-13T22:00:00.006+02:00</published><updated>2010-07-14T16:09:43.160+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='COM'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Datenaustausch VFP &lt;-&gt; .NET</title><content type='html'>Nach diversen Exprimenten haben wir uns entschieden, zwei Verfahren zu betreiben:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #cc0000;"&gt;&lt;b&gt;a) Einen Datensatz zum Bearbeiten holen.&lt;/b&gt;&lt;/div&gt;&lt;b&gt;Lesen: &lt;/b&gt;Dazu wird VFP angewiesen den aktuellen Datensatz einer View in eine DBF im Temp-Ordner zu kopieren.&lt;br /&gt;Danach liest .NET über den &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=e1a87d8f-2d58-491f-a0fa-95a3289c5fd4&amp;amp;displaylang=en"&gt;VFPOleDB&lt;/a&gt;-Treiber und den &lt;a href="http://msdn.microsoft.com/de-de/library/system.data.oledb.oledbdatareader%28VS.80%29.aspx"&gt;OleDBReader &lt;/a&gt;die DBF in eine &lt;a href="http://msdn.microsoft.com/de-de/library/system.data.datatable%28VS.80%29.aspx"&gt;DataTable&lt;/a&gt;. Das Businessobjekt &lt;i&gt;VFPRecordBase&lt;/i&gt; belädt aus dieser seine Properties. &lt;br /&gt;&lt;b&gt;Schreiben&lt;/b&gt;: Das BO genieriert aufgrund der geänderten Properties einen SQL-UPDATE-Befehl und schickt diesen an VFP. Analog wird beim &lt;b&gt;Löschen &lt;/b&gt;und &lt;b&gt;Anlegen &lt;/b&gt;verfahren.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #cc0000;"&gt;&lt;b&gt;b) Einen Cursor zur Anzeige holen&lt;/b&gt;&lt;/div&gt;Dazu formuliert das BO auf Basis seiner Properies ein SQL SELECT, das an VFP geschicht wird.&lt;br /&gt;Danach liest .NET über den &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=e1a87d8f-2d58-491f-a0fa-95a3289c5fd4&amp;amp;displaylang=en"&gt;VFPOleDB&lt;/a&gt;-Treiber und den &lt;a href="http://msdn.microsoft.com/de-de/library/system.data.oledb.oledbdatareader%28VS.80%29.aspx"&gt;OleDBReader &lt;/a&gt;die  DBF in eine &lt;a href="http://msdn.microsoft.com/de-de/library/system.data.datatable%28VS.80%29.aspx"&gt;DataTable&lt;/a&gt;. Das Businessobjekt vom Typ List&amp;lt;&lt;i&gt;VFPRecordBase&lt;/i&gt;&amp;gt; legt eine Liste an und befüllt diese mit &lt;i&gt;VFPRecordBase&lt;/i&gt;-Objekten. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Vorteil&lt;/b&gt;: keine weitere Installation/Administration von Komponenten (Webserver)&lt;br /&gt;&lt;b&gt;Nachteil&lt;/b&gt;: wg. COM-Kopplung ist die .NET-Seite auf 32 Bit festgelegt.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Das ganze Konstrukt ist weiterhin für den Desktop gedacht. &lt;br /&gt;Es sollte jedoch möglich sein, auf .Net-Seite einen Webservice anzubieten. Damit könnte das Konstrukt auf einem Server laufen (in 32 Bit), der Client (Konsument des &lt;a href="http://de.wikipedia.org/wiki/Webservice"&gt;Webservice&lt;/a&gt; über &lt;a href="http://de.wikipedia.org/wiki/Windows_Communication_Foundation"&gt;WCF&lt;/a&gt;) ist aber unabhängig: 64 Bit, Silverlight, im Browser oder außerhalb, alles geht.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dem &lt;a href="http://de.wikipedia.org/wiki/Cloud_Computing"&gt;Cloud-Computing&lt;/a&gt; steht damit nichts mehr im Wege. Aber das ist eine ganz andere Baustelle.&lt;br /&gt;Obwohl: Microsoft pusht das ganze jetzt über seine &lt;a href="http://www.microsoft.com/germany/net/WindowsAzure/"&gt;Azure&lt;/a&gt;-Plattform...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4525690913054233781-245677406382444550?l=chrdressler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrdressler.blogspot.com/feeds/245677406382444550/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://chrdressler.blogspot.com/2010/07/datenaustausch-vfp-net.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4525690913054233781/posts/default/245677406382444550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4525690913054233781/posts/default/245677406382444550'/><link rel='alternate' type='text/html' href='http://chrdressler.blogspot.com/2010/07/datenaustausch-vfp-net.html' title='Datenaustausch VFP &lt;-&gt; .NET'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/04155304563674292497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://2.bp.blogspot.com/_qF80xiVWlY0/TAlTcxs7StI/AAAAAAAABj0/knLrMsOE-vM/S220/ChristophPortrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4525690913054233781.post-3825855020574289795</id><published>2010-07-04T17:10:00.000+02:00</published><updated>2010-07-04T17:43:45.779+02:00</updated><title type='text'>Rettung in Sicht</title><content type='html'>Trotz der Hitze haben wir unsere Köpfe rauchen lassen. Das Ergebnis ist vielversprechend!&lt;br /&gt;&lt;br /&gt;Es ist tatsächlich möglich, Foxpro auf zwei Weisen zu nutzen:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;als passiver Daten-Lieferant: hier läuft VFP als &lt;a href="http://de.wikipedia.org/wiki/Component_Object_Model"&gt;COM&lt;/a&gt;-Server und liefert der .Net-GUI auf deren Wunsch als COM-Client die Anzeige-Daten.&lt;/li&gt;&lt;li&gt;als aktiver Teil, der Dienste der GUI verwenden kann (z.B. MessageBoxen oder Fortschrittsbalken). Hier wird von VFP eine dritten Komponente verwendet: die VFPBridge. Diese stellt Dienste bereit, z.B. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ShowMessagebox()&lt;/span&gt;. Die Gui sieht die VFPBridge über dei VFP-Instanz und kann damit Ereignisse der VFPBridge abonnieren, die von den Dienste-Methoden der VFPBridge ausgelöst werden.&lt;/li&gt;&lt;/ul&gt;Wie man sieht, sind die Details des Verfahrens relativ kompliziert. Dennoch ist damit die grundlegende Aufgabe des Datenaustauschs in &lt;b&gt;beide &lt;/b&gt;Richtungen zwischen VFP und .NET elegant und ohne irgendwelche Hilfskonstrukte wie Polling oder Steuerdateien gelöst.&lt;br /&gt;Eine Veröffentlichung hier ist aktuell nicht geplant. Interessenten können sich jedoch gerne melden.&lt;br /&gt;&lt;br /&gt;Nächstes Thema ist, wie möglichst einfach und typsicher der Austausch einzelner Datensätze oder Cursordateien abzuwickeln ist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4525690913054233781-3825855020574289795?l=chrdressler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrdressler.blogspot.com/feeds/3825855020574289795/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://chrdressler.blogspot.com/2010/07/rettung-in-sicht.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4525690913054233781/posts/default/3825855020574289795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4525690913054233781/posts/default/3825855020574289795'/><link rel='alternate' type='text/html' href='http://chrdressler.blogspot.com/2010/07/rettung-in-sicht.html' title='Rettung in Sicht'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/04155304563674292497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://2.bp.blogspot.com/_qF80xiVWlY0/TAlTcxs7StI/AAAAAAAABj0/knLrMsOE-vM/S220/ChristophPortrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4525690913054233781.post-6678876790197885138</id><published>2010-06-04T21:14:00.000+02:00</published><updated>2010-06-06T11:23:28.763+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Foxpro'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Wie weiter mit Foxpro?</title><content type='html'>Kein Zweifel, die Zeit von &lt;a href="http://msdn.microsoft.com/de-de/vfoxpro/default.aspx"&gt;Visual Foxpro&lt;/a&gt; neigt sich dem Ende zu. Das Produkt wird nicht mehr weiterentwicklet, es wird niemals eine 64 Bit-Version geben.&lt;br /&gt;Zugegeben, das ist ein Luxusproblem, denn 32-Bit-Anwendungen werden noch lange Zeit laufen. Allergings laufen 16-Bit-Anwendungen in 64-Bit-Umgebungen schon heute nicht mehr. Was also, wenn irgendwann mal 128-Betriebssysteme erscheinen? Richtig, der 32bittige Fuchs wirds nicht überleben.&lt;br /&gt;&lt;br /&gt;Andererseits: der Fux ist immer noch produktiver als selbst das aktuelle .Net FW 4.0. Es existiert eine riesige Codebasis. Diesen Code kann man nicht mit wirtschaflich vertretbarem Aufwand migrieren.&lt;br /&gt;&lt;br /&gt;Was sind die Optionen?&lt;br /&gt;&lt;br /&gt;Microsofts aktuelle &lt;a href="http://de.wikipedia.org/wiki/Grafische_Benutzeroberfl%C3%A4che"&gt;GUI&lt;/a&gt;-Technologie heißt &lt;a href="http://msdn.microsoft.com/de-de/netframework/aa663326.aspx"&gt;WPF&lt;/a&gt; bzw. &lt;a href="http://www.silverlight.net/"&gt;Silverlight&lt;/a&gt;. Die Masken werden in XAML beschrieben, was bedeuted, dass Foxpro-Masken konvertiert werden können. Foxpro kann als COM-Server die Daten liefern. Und , Voila! habe ich eine zeitgemäße GUI und die vielen Mannjahre Investition in Logik und Datenschicht sind gerettet.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Fortsetzung folgt...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4525690913054233781-6678876790197885138?l=chrdressler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrdressler.blogspot.com/feeds/6678876790197885138/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://chrdressler.blogspot.com/2010/06/wie-weiter-mit-foxpro.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4525690913054233781/posts/default/6678876790197885138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4525690913054233781/posts/default/6678876790197885138'/><link rel='alternate' type='text/html' href='http://chrdressler.blogspot.com/2010/06/wie-weiter-mit-foxpro.html' title='Wie weiter mit Foxpro?'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/04155304563674292497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://2.bp.blogspot.com/_qF80xiVWlY0/TAlTcxs7StI/AAAAAAAABj0/knLrMsOE-vM/S220/ChristophPortrait.jpg'/></author><thr:total>0</thr:total></entry></feed>
