Bob Swart (aka Dr.Bob)
Project "SideWinder"

Micha Somers Borland Solutions for the .NET Platform
Op vrijdag 14 mei hield Micha Somers (pre-sales Engineer en RAD Specialist bij Borland EMEA - Europe, Middle-East & Africa) een presentatie over "Borland Solutions for the .NET Platform" tijdens de Conference to the Point in Congrescentrum "De Reehorst", Ede/Wageningen. De agenda van zijn sessie bestond uit een aantal onderdelen:
Micha begon met een verhaal over Application Lifecycle Management (ALM), die bestaat uit Definition, Design, Development, Test en Deployment, met in het midden (op de slide dan - in praktijk overal) de Change Management. Met de recente aankopen heeft Borland nu in iedere taartpunt een of meerdere producten beschikbaar: CaliberRM voor de Definition, Together voor Design, JBuilder, C++Builder en xBuilder (volgens de slide) voor Development (daar hoort Delphi natuurlijk ook bij, haastte Micha zich te zeggen). Voor Testen is er dan OptimizeIt, voor Deployment BES (Borland Enterprise Server), InterBase (waar een .NET provider voor komt) en JDataStore. Als Change Management tool is er tot slot StarTeam.
In het tijdschema van dingen-die-komen gaan noemde Micha nog de Borland Enterprise Studio voor Java die inmiddels in Q1 2003 beschikbaar is gekomen. In Q2 ("zo rond de zomer") komt daar een Borland Enterprise Studio for .NET bij - hier zullen o.a. SideWinder en OptimizeIt onderdeel van uitmaken. In Q3 kunnen we daarnaast nog een Borland Enterprise Studio for C++ verwachten. Wat daar allemaal bij zou kunnen zitten (en voor welke platforms) bleef helaas vaag, maar daar horen we vast nog wel meer over. De nadruk vandaag lag op de .NET Solutions van Borland.

Delphi for .NET
Na het Application Lifecycle Management overzicht gaf micha nog drie demos: met Delphi for .NET, met OptmizeIt (for .NET) en tot slot met SideWinder. Alhoewel het een sessie was in de C# track, kende vrijwel iedereen Delphi, dus kon Micha meteen laten zien wat er nieuw is in de nieuwe update van de Delphi for .NET Preview command-line compiler (overigens hielp hij allereerst het misverstand uit de wereld dat je met de preview command-line compiler alleen maar command-line toepassingen zou kunnen compileren. Je kan er natuurlijk ook visuele toepassingen mee maken - zie ook mijn column van november 2002 - en dat deed hij dan ook meteen).
Micha liet zien dat de nieuwste update (voor Delphi for .NET) naast een IDE plug-in ook een speciale Dfm2Pas hulpmiddel bevat. Met de IDE plug-in kun je vanuit de Delphi 7 IDE de Delphi for .NET command-line compiler (dccil - ook wel diesel genoemd) aanroepen. En omdat we onder .NET voor Delphi nog geen mooie form designer hebben (en er dus ook geen concept van een .dfm (of .xfm) bestand meer is), is het hulpmiddel Dfm2Pas beschikbaar gesteld dat van een .pas unit met .dfm bestand een nieuwe .pas unit kan maken met daarin alle "settings" uit het .dfm bestand (properties met hun waarden) opgenomen als code in het .pas bestand (neergezet en aangeroepen in een speciale InitializeControls method).
Als demonstratie bouwde toen Micha een eenvoudige Delphi 7 toepassing met een editbox, listbox, button, maar ook drop-down combobox, memo, radiobuttons, checkboxes, een grid, panel en zelfs een mediaplayer (alhoewel de buttons hiervan er nog niet zo goed uit schijnen te zien onder .NET), en dat allemaal op een PageControl. Voor menus gebruikte hij de ActionManager en ActionMainMenuBar, en in een paar minuten was er toch een aardige Delphi 7 toepassing (met een behoorlijk .dfm bestand) gemaakt. Met behulp van de Dfm2Pas werd (een kopie van) deze toepassing vervolgens naar "Delphi for .NET" gemigreerd, en daarna bleek alles nog te werken ook - van VCL naar .NET.

OptimizeIt
Na Delphi for .NET (voor de meeste mensen toch al wel een bekende omgeving), kwam OptimizeIt for .NET aan de orde: een profiler voor .NET. Onderstaande slide geeft de drie OptimizeIt Profiler Key Capabilities aan:


Als "willekeurige C# ontwikkelomgeving" werd toen maar vast gebruik gemaakt van SideWinder (zie de SideWinder Splash Screen hieronder):

SideWinder Splash Screen

Met behulp van SideWinder had Micha een klein testprogramma geschreven dat op vier manieren een string groter ging maken door er (1000 keer) een stukje aan vast te plakken. Vanuit OptimizeIt kozen we voor Memory Profiling, en vervolgens werd het testprogramma gestart.
In de eerste poging werd er een character aan de string geplakt. Dat kost meer dan 2000 string operaties (en meer dan 1MB aan geheugen); 1000 keer eerst het omzetten van de character naar een string, en daarna het plakken van deze string aan onze uiteindelijke string (operaties die allemaal een tijdelijke string opleveren). Met behulp van OptimizeIt kunnen we niet alleen zien hoeveel operaties (en string objecten) er zijn geweest, maar ook in welke module en zelfs op welke source code regel dit plaatsvindt. Hierdoor is snel in te zoomen op performance bottle-necks: zowel op geheugen als op CPU niveau!

SideWinder Demo Project OptimizeIt Memory Profiling

Een hele verbetering kon al behaald worden door niet een character maar een string (van één character lang) erbij op te tellen: dan gaat de teller al van ruim 2000 naar "slechts" ruim 1000. Daarna werd gebruik gemaakt van een speciale String class die gemaakt is om op deze manier opgebouwd te worden, en werd het geheugen gebruik teruggebracht tot 5K (maar het ging natuurlijk meer om het zien hoe OptimizeIt de vinger op de "zere plek" kon leggen).
Een trial-versie van OptimizeIt for .NET is te downloaden van de Borland website (en Micha kwam er ter plekke achter dat zijn trial er al op 14 maart mee ophield ;-)

SideWinder
En toen waren we eindelijk aangekomen bij de hoofdschotel: SideWinder. Alvorens de SideWinder IDE nog een keer op te starten (hij was immers al gebruikt bij de OptimizeIt demo), liet Micha nog even een slide zien van de Borland Conference in Anaheim (18 t/m 22 mei 2002). Toen werd als naam nog Galileo gebruikt voor de .NET Development Studio. Als eerste resultaat van Galileo werkt Borland momenteel aan SideWinder: een native .NET IDE voor C# (met alles erop en eraan).

Borland .NET Strategy

De SideWinder IDE doet een beetje denken aan een combinatie van de Delphi, Visual Studio, en JBuilder IDE en misschien nog wel meer. De menu-structuur deed in ieder geval veel aan Delphi denken, terwijl de manier waarop de IDE elementen waren gerangschikt veel aan Visual Studio .NET deed denken (er is ook een "Classic" IDE layout, maar Micha liet die bewust even niet zien). De Object Inspector lijkt op een nieuwe versie van die van Delphi, maar je kan ook voor een .NET Object Inspector kiezen als je wilt (die hebben we echter niet gezien). Verder is er ook binnen SideWinder kennelijk geen concept van een .dfm bestand, maar worden alle properties en andere zaken (zoals positie en omvang van een control) direct in de C# code zelf geregeld: ieder control heeft zijn eigen paar regels code om de initialisatie uit te voeren. Het aardige is dat SideWinder - zoals we gewend zijn - een echte 2-way tool is: wijzigingen in de C# code (zoals een nieuwe waarde voor de Text property) worden ook meteen zichtbaar in de form designer.
Met File | New kom je in een soort Object Repository, waar we voor C# een nieuwe application, een nieuwe console application, een nieuwe class lib en nog iets (ging te snel) konden maken. Ook zagen we mogelijkheden voor ASP.NET (WebForms) en web services staan. Een nieuwe application levert een WinForms toepassing op, waarbij je verschillende componenten kunt gebruiken (rechtsonder in de IDE te zien). De gebruikelijke demo van een edit - button en listbox werd vertoond, inclusief een breakpoint in de code (hieronder zie je hoe je in de SideWinder IDE Debugger komt op een breakpoint):

SideWinder Demo Project SideWinder BreakPoint

Daarna werd de aandacht verschoven naar de toevoegingen die Borland aan C# ontwikkelaars kan bieden (waarom zouden we C# van Borland gebruiken?). En één verzameling van die speciale componenten die in SideWinder zitten zijn de Borland Data Provider componenten. Ik zag o.a. een bdpCommand, bdpCommandBuilder, bdpConnection en bdpDataAdapter (er zijn er vast meer). Deze componenten maken het eenvoudig om te switchen van database, en om ook tijdens design-time "live" data te kunnen zien.
Micha gebruikte hiertoe een normaal DataGrid en een DataAdapter om via een dialoogscherm (daar heb ik helaas geen foto van) een verbinding te maken met een InterBase database (via de InterBase .NET Provider) en daar een query op uit te voeren. Dit leverde drie extra componenten op: dataSet, bdpCommand en bdpConnection. Door de dataSet aan het DataGrid te koppelen zagen we meteen data tijdens design-time:

SideWinder live Data at Design-Time

Om de C# code-kloppers gerust te stellen vertelde Micha dat het ook in "pure" C# code kon (dus zonder de DataAdapter dialoog). Merk overigens op dat de non-visuele componenten niet op het form zelf, maar onderaan terug te vinden zijn. Dit zagen we ook al in de eerste screenshots van SideWinder op mijn website.
Als laatste demo van SideWinder liet Micha zien dat SideWinder al in staat is om de WSDL van web services te importeren en te gebruiken. Hiervoor werd een in Delphi 7 Enterprise geschreven web services gebruikt (die een method had genaamd "BorlandMessage" met ook de huidige tijd). De WSDL URL van deze web services werd vervolgens gebruikt in de SideWinder WSDL Importer om een C# import unit te genereren:

SideWinder WSDL Importer for C#

Vervolgens werd er een instantie van het interface gecreëerd, de methode BorlandMessage aangeroepen, en zagen we het resultaat inderdaad op het scherm. Vanuit .NET dus een Delphi 7 Win32 web service aanroepen.
Als allerlaatste grapje liet Micha vervolgens de Delphi 7 Web Service als Web App Debugger stoppen op een breakpoint (op basis van een request van de SideWinder C# web service client).

SideWinder C# Client triggers Delphi 7 Breakpoint

Aan de tijd die met de Borland Message werd meegegeven zag Micha toen dat het tijd was om af te sluiten. SideWinder is duidelijk nog niet af, alhoewel het al erg indrukwekkend is om te zien wat er allemaal al mogelijk is (vooral de Borland Data Provider componenten zagen er erg goed uit).

Meer Informatie
Mocht iemand nog vragen, opmerkingen of suggesties hebben, dan hoor ik die het liefst via e-mail. Zodra er meer te melden valt over SideWinder zal ik dat zeker op mijn websites vermelden, en OptimizeIt zal ik binnenkort al eens nader bekijken. Wie tot slot meer wil zien betreffende de Delphi for .NET preview command-line compiler en de mogelijkheden daarvan, zou zeker een bezoek aan mijn Delphi en .NET Clinic kunnen overwegen.


This webpage © 1999-2003 by webmaster drs. Robert E. Swart (aka Dr.Bob - www.drbob42.com). All Rights Reserved.