10.07.2015 Views

web services edge 2003 west conference brochure! - sys-con.com's ...

web services edge 2003 west conference brochure! - sys-con.com's ...

web services edge 2003 west conference brochure! - sys-con.com's ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Borland ® C#Builder Enterprise Development for the Microsoft ® .NET FrameworkBorland ® C#Builder for the Microsoft ® .NET Framework is an enterprise-class, .NET development <strong>sys</strong>tem with mixedplatform interoperability and support for major enterprise databases. It brings you into the new world of C# and .NET andmaintains access to your existing business logic, including J2EE and CORBA. ® And because it's Borland, C#Builder is theaccess point into the Borland Application Lifecycle solution; providing best-in-class products integrated to help the wholedevelopment team make better software, faster.• Powerful C#, ASP.NET, ADO.NET, WinForms, WebForms, XML Web Services,.NET SDK1.1 development• Integrated C# IDE for superior design, develop, test, and debug• Borland Data Provider for ADO.NET --- High-performance seamlessly 'switchable'support for Borland InterBase, ® Microsoft ® SQL Server, Oracle and IBM ® DB2 ®• Borland ® Enterprise Core Objects (ECO ) model-driven framework and Borland ®Together ® powered UML designer• UML code visualization of C# source code• Borland ® Optimizeit for .NET-CLR, memory and CPU profiling• Fully-integrated, third party development solutions for .NET includingComponentOne ® Studio Enterprise Suite• Borland ® StarTeam ® Personal Server for automated software <strong>con</strong>figuration andchange management• Tight integration of existing J2EE and CORBA ® into .NET applications withBorland ® Janeva Visit go.borland.com/c6Learn from the experts at the premier event for technical education --the <strong>2003</strong> Borland Conference. Learn more: www.borland.com/<strong>con</strong>f<strong>2003</strong>sMade in Borland® Copyright © <strong>2003</strong> Borland Software Corporation. All rights reserved. All Borland brand and productnames are trademarks or registered trademarks of Borland Software Corporation in the United States and other countries.Microsoft, Windows, and other Microsoft product names are trademarks or registered trademarks of Microsoft Corporationin the U.S. and other countries. All other marks are the property of their respective owners. • 20726.3


EditorialEDITORIALEditor-in-ChiefDerek Ferguson derek@<strong>sys</strong>-<strong>con</strong>.comMobility EditorJon Box jbox@quilogy.comEditorial BoardJon Box jbox@quilogy.comGary Cornell gary@thecornells.comKeith Franklin ka_franklin@empowered.comDean Guida deang@infragistics.comTim HuckabyBrian LoesgenJohn Sharp johns@<strong>con</strong>tentmaster.comScott Hanselman scott@corillian.comPatrick Hynds phynds@criticalsites.comExecutive EditorGail Schultz gail@<strong>sys</strong>-<strong>con</strong>.comManaging EditorJean Cassidy jean@<strong>sys</strong>-<strong>con</strong>.comEditorNancy Valentine nancy@<strong>sys</strong>-<strong>con</strong>.comAssociate EditorsJamie Matusow jamie@<strong>sys</strong>-<strong>con</strong>.comJennifer van Winckel jennifer@<strong>sys</strong>-<strong>con</strong>.comOnline EditorLin Goetz lin@<strong>sys</strong>-<strong>con</strong>.comWRITERS IN THIS ISSUEJon Box, Derek Ferguson, Dan Fox,John Gomez, Rob Harrop, Doug Holland, Miguel Katrib,Erich Ledesma, Dan Maharry, Anand Narayanaswamy,Leonardo Paneque, Karthik Ravindran, Frank SloaneSUBSCRIPTIONSFor subscriptions and requests for bulk orders,please send your letters to Subscription DepartmentSubscription Hotline: subscribe@<strong>sys</strong>-<strong>con</strong>.comCover Price: $6.99/issueDomestic: $69.99/yr. (12 issues)Canada/Mexico: $99.99/yr. Overseas: $129.99/yr.(U.S. banks or money orders). Back issues: $12/ea.,plus shipping and handling.EDITORIAL OFFICESSYS-CON Media 135 Chestnut Ridge Rd.,Montvale, NJ 07645Telephone: 201 802-3000 Fax: 201 782-9600.Net Developer’s Journal (ISSN#1541-2849) ispublished monthly(12 times a year) for $69.99 bySYS-CON Publications, Inc.,135 Chestnut Ridge Road, Montvale, NJ 07645.Postmaster: Send address changes to:.NET Developer’s Journal,SYS-CON Publications, Inc.,135 Chestnut Ridge RoadMontvale, NJ 07645.Copyright © <strong>2003</strong> by SYS-CON Publications, Inc.All rights reserved.Worldwide Newsstand DistributionCurtis Circulation Company, New Milford, NJFor list rental information:Kevin Collopy: 845 731-2684,kevin.collopy@edithroman.com;Frank Cipolla: 845 731-3832,frank.cipolla@epostdirect.comNo part of this publication may be reproduced or transmittedin any form or by any means, electronic or mechanical,including photocopy or any information storage andretrieval <strong>sys</strong>tem, without written permission.For promotional reprints, <strong>con</strong>tact Reprint CoordinatorCarrie Gebert, Carrieg@<strong>sys</strong>-<strong>con</strong>.com.All brand and product names used on these pages aretrade names, service marks, or trademarks of theirrespective companies. SYS-CON Publications, Inc., is notaffiliated with the companies or products covered in .NETDeveloper’s Journal..NET and .NET-based marks are trademarks or registeredtrademarks of Microsoft Corporation in the United Statesand other countries.SYS-CON Publications, Inc., reservesthe right to revise, republish andauthorize its readers to use the articlessubmitted for publication.dotnetdevelopersjournal.com • September <strong>2003</strong>Perspectives onPast, Present, and Futureas we approach the one-yearanniversary of NETDJ’spreview issue, it seemslike a good time to <strong>con</strong>siderthe recent past, present,and near future of our platform, ourmagazine – and your humble editor!The PastFor me, the past few months havebeen incredibly busy! Last month, Ispoke at two <strong><strong>con</strong>ference</strong>s in Europe.The first was the Mobile WorkforceSolutions <strong><strong>con</strong>ference</strong> (www.mobileworkforcesolutions.com)in London.The se<strong>con</strong>d was the Bluetooth WorldCongress (www.ibctelecoms.com/bluetoothworld<strong>con</strong>gress) inAmsterdam.As for the magazine, we haveadded two members to our editorialboard! Scott Hanselman is aMicrosoft Regional Director (RD) andchief architect at the CorillianCorporation, an e-finance enabler.Patrick Hynds, Microsoft RD forBoston, has also joined the board.The PresentI’ve been struggling with an interestingimpersonation issue thismonth (see last month’s editorial for abrief introduction to this ongoingsaga). It seems that if you use impersonationunder ASP.NET and then tryto open a WMI <strong>con</strong>nection withEnablePrivileges set to true, you willget an “Access Denied” error.Interestingly enough, this problemgoes away on Windows 2000 and XP ifyou change machine.<strong>con</strong>fig to use theSystem account instead of machine.Of course, this shouldn’t be the case,since you’ve already impersonatedanother account by the time you tryopening the WMI <strong>con</strong>nection. Withany luck I’ll have more informationabout this for you in a later issue.In the meantime, the theme forthis month’s issue is Visual Studio.NET, specifically deployment ofsolutions created via Visual Studio.NET and custom <strong>con</strong>trols that canbe used within it.Toward this end, we’ve cooked upsomething extra special for you thismonth – NETDJ’s first ever productshootout! This month, the shootout isbetween Wise and InstallShield. Forthose of you who haven’t already heard,there is a major legal dispute currentlyraging between these two players, sowe think that this should make forquite a tasty little “grudge match!”Our coverage of deployment alsoincludes Dan Fox and Jon Box’s pieceon “Packaging and Deploying .NETCompact Framework” solutions. It ismy pleasure to announce that Jon Boxhas agreed to accept the newly createdmobility editor position, in addition to<strong>con</strong>tinuing to serve as a member ofthe .NETDJ editorial board. For thoseof you unfamiliar with Jon, he alsoserves as Microsoft RD for theSoutheastern U.S. and is a member ofthe INETA Speakers Bureau!In other news, we’re currently seeinga lot of activity on the .NETDJdiscussion boards regarding two ofour postings. The first of these is anarticle on .NET purity (http://<strong>sys</strong><strong>con</strong>.com/dotnet/articlenews.cfm?id=356) that raises some interestingpoints about the interaction between.NET and the native Windows APIsunderlying it. The other articlereceiving a lot of attention(http://<strong>sys</strong>-<strong>con</strong>.com/dotnet/articlenews.cfm?id=361)is Microsoft’s newsabout their upcoming Whidbey andOrcas releases of Visual Studio .NET.The FutureWhidbey isn’t expected until 2004.Here at .NET Developer’s Journal, weare currently putting together our editorialcalendar for 2004. What thatmeans (for those of you not in the publishingbusiness) is that we are tryingto figure out what our readers wouldlike to read about in .NETDJ next year.If you have any topics that youwould like to see covered, please feelfree to e-mail me directly atderek@<strong>sys</strong>-<strong>con</strong>.com.BY DEREK FERGUSONDerek Ferguson is editor-in-chief of.NET Developer's Journal andauthor of the book Mobile .NET(Apress). He is also chieftechnology evangelist for ExpandBeyond Corporation (www.xb.com),a worldwide leader in mobilesoftware for enterprisemanagement.derek@<strong>sys</strong>-<strong>con</strong>.comCLIENTSERVEREVERYWHERE5HOME


.NETDJ FeedbackOn the Myth of .NET PurityHOMESend us your feedback.Letters may be edited forlength and clarity. Pleaseprovide full name,location, and, if applicable,title and company.dndj@<strong>sys</strong>-<strong>con</strong>.comCLIENTSERVEREVERYWHEREscott Hanselman’s articleon “The Myth of .NETPurity” (http://<strong>sys</strong><strong>con</strong>.com/dotnet/articlenews.cfm?id=356)strucka chord (with even .NETDJ editorin-chiefDerek Ferguson jumpinginto the discussion).Why the Myth Exists at All...I think this article is right on,but felt that we should <strong>con</strong>frontthe issue of why this kind of rebuttalis needed (and it is needed). Wefind people who are earnest onlyin so far as they can justify theirexistence. Therefore they brandsomething heresy as soon as theyabandon the practice themselves.Let’s assume that COM interopwas a horrible waste of resources;it still wouldn’t justify discarding insuch a wholesale manner a tooland the wealth of existing functionalitythe last generation alwaysholds. I have heard people in ASPcircles a while back declare that“session state is bad.” Like hybridapplications, session state in ASPis a tool; use it or don’t use it, but ifyou happen to need a hammer itdoesn’t make the saw evil.Posted by Patrick Hynds on Jul 17 @10:16 PMBut “Wrapping” Can StillGet Out of Hand!I would never suggest thatCOM Interop should be gotten ridof or is in any way, shape, or form“evil.” However, as a developerwho spends more than 90% of mycoding time working with theSystem.DirectoryServices andSystem.Management namespaces,let me tell you – MS could havesaved developers a lot of grief byhaving written some managedprotocol handlers here, ratherthan just wrapping up the old,troubled APIs.As one example of this, theDirectoryEntry class inSystem.DirectoryServices allowsyou to pass a username and passwordto its <strong>con</strong>structor. However,when you use the WinNT ADSIprovider, these parameters aresometimes ignored. Why is this?Because of a limitation in theexisting APIs that were wrapped!Similar problems abound in theSystem.Management namespace –where I recently managed to provethat Impersonation (a native API)interacts differently withEnablePrivileges (a wrapped API)under ASP.NET than it does underthe Console. In working throughthis with MS, I have been passedaround to 10 different people intheir support infrastructure. Why?Because the old, obscure APIs thathave been wrapped are a “dark art”known only to a few individualswithin the Redmond infrastructure.Once again: it would’ve beenbetter to have recreated the wholething in C#.Posted by Derek Ferguson on Jul 18 @10:12 AMPracticality Is What Matters MostThere is a lot to be said for purityfor purity’s sake? I have neversubscribed to this type of thinking.At the end of the day we all wantto build dependable software thatsolves the business problem athand. Everything should always betaken in the <strong>con</strong>text of a solutionwith a sense of practicality. I thinkmost of the software developmentcommunity has this maturity.Posted by Dean Guida on Jul 25@ 04:00 PMYour Comments on <strong>sys</strong>tem.directory Are InterestingYour comments on<strong>sys</strong>tem.directory are interesting.ADSI is simply a com wrapper, sotechnically it’s a “wrapped wrapper”of the native LDAP API,which of course is C++ only. Thatbeing said, the directory entryclass you are referring to is a“wrapped, wrapped wrapper.”Ultimately, the big disappointmentof the .NET Framework 1.1and the hope for 2.0 is morenative framework classes.Posted by Tim Huckaby on Jul 25@ 07:07 PMPresident and CEOFuat Kircaali fuat@<strong>sys</strong>-<strong>con</strong>.comPresident, SYS-CON EventsGrisha Davida grisha@<strong>sys</strong>-<strong>con</strong>.comGroup PublisherJeremy Geelan jeremy@<strong>sys</strong>-<strong>con</strong>.com?????ADVERTISINGSenior Vice President, Sales and MarketingCarmen Gonzalez carmen@<strong>sys</strong>-<strong>con</strong>.comVice President, Sales and MarketingMiles Silverman miles@<strong>sys</strong>-<strong>con</strong>.comAdvertising DirectorRobyn Forma robyn@<strong>sys</strong>-<strong>con</strong>.comDirector of Sales and MarketingMegan Mussa megan@<strong>sys</strong>-<strong>con</strong>.comAdvertising Sales ManagerAlisa Catalano alisa@<strong>sys</strong>-<strong>con</strong>.comAssociate Sales ManagersCarrie Gebert carrieg@<strong>sys</strong>-<strong>con</strong>.comKristin Kuhnle kristen@<strong>sys</strong>-<strong>con</strong>.comPRODUCTIONProduction ConsultantJim Morgan jim@<strong>sys</strong>-<strong>con</strong>.comLead DesignerLouis F. Cuffari louis@<strong>sys</strong>-<strong>con</strong>.comArt DirectorAlex Botero alex@<strong>sys</strong>-<strong>con</strong>.comAssociate Art DirectorRichard Silverberg richards@<strong>sys</strong>-<strong>con</strong>.comAssistant Art DirectorTami Beatty tami@<strong>sys</strong>-<strong>con</strong>.comWEB SERVICESVice President, Information SystemsRobert Diamond robert@<strong>sys</strong>-<strong>con</strong>.comWeb DesignersStephen Kilmurray stephen@<strong>sys</strong>-<strong>con</strong>.comChristopher Croce chris@<strong>sys</strong>-<strong>con</strong>.comACCOUNTINGAccounts ReceivableKerri Von Achen kerri@<strong>sys</strong>-<strong>con</strong>.comFinancial AnalystJoan Larose joan@<strong>sys</strong>-<strong>con</strong>.comAccounts PayableBetty White betty@<strong>sys</strong>-<strong>con</strong>.comSYS-CON EVENTSPresident, SYS-CON EventsGrisha Davida grisha@<strong>sys</strong>-<strong>con</strong>.comConference ManagerMichael Lynch mike@<strong>sys</strong>-<strong>con</strong>.comSales Executive, ExhibitsJames Donovan james@<strong>sys</strong>-<strong>con</strong>.comCUSTOMER RELATIONSCirculation Service CoordinationsNiki Panagopoulos niki@<strong>sys</strong>-<strong>con</strong>.comShelia Dickerson shelia@<strong>sys</strong>-<strong>con</strong>.comEdna Earle Russell edna@<strong>sys</strong>-<strong>con</strong>.comJDJ Store ManagerRachel McGouran rachel@<strong>sys</strong>-<strong>con</strong>.com6September <strong>2003</strong> • dotnetdevelopersjournal.com


.NET MobilityPackaging and Deploying .NETCompact Framework SolutionsVS.NET offersa number of optionsCLIENTBY JON BOXAND DAN FOXHOMESERVEREVERYWHEREone of the great benefits ofbuilding applicationsthat utilize the .NETCompact Framework is, ofcourse, that the application isinstalled on the device and so it canwork in both dis<strong>con</strong>nected andoccasionally <strong>con</strong>nected modes. Butas with most things in IT, there is atrade-off lurking around the corner.In this case that trade-off is thepackaging and deployment of theapplication. And so in this columnwe’ll give you a rundown of theoptions you have and what VisualStudio .NET provides to make yourlife a little easier.Packaging Made EasyBefore an application can bedeployed to a device or set ofdevices, it must be packaged.Fortunately, VS.NET and SmartDevice Projects (SDP) provide plentyof help in targeting the applicationto a specific directory on thedevice and building .cab files fordeployment to devices supportingdifferent processors.First, however, before actuallycreating the .cab file it is importantto note three basic features ofVS.NET. First, you can set theOutput File Folder property in theProperties window in VS.NET. Thisproperty (which defaults to\Program Files\projectname) specifiesthe deployment directory on thedevice that the project will beinstalled in and is referenced by the.cab file-creation process. Se<strong>con</strong>d,you can package and deploy project-relatedfiles (like SQL Server CEdatabases and <strong>con</strong>figuration files)by setting their Build Action propertyto Content in the Properties window.And finally, you should changethe build <strong>con</strong>figuration from Debugto Release in order to producesmaller and faster assemblies.Once the project options are set,a .cab file can be created to deploythe application. SDP makes thiseasy by including a Build Cab Filemenu, accessible by right-clickingthe project. This process is differentthan in the desktop version of the.NET Framework, in which adeployment project that uses theWindows Installer can be added tothe solution to package the application.When this option is invoked,VS.NET silently creates a cab directoryunder the project directory onyour workstation. In this directoryand within a directory identifyingthe build mode (Debug or Release)is placed a series of .cab files. Each.cab file targets a specific processortype – including ARM, ARM4, MIPS,SH3, and X86 – and is namedaccordingly, e.g., MyApplication_PPC_ARM.CAB. To install theapplication on a device, the .cab filesimply needs to be copied to thedevice. Windows CE includes softwarethat automatically performsthe unpacking and installation of.cab files.In order to customize the installationprocess, SDP also adds thefiles needed to customize andrebuild the .cab files in theobj\buildmode directory. TheBuildCab.bat, Dependencies_platform.txt,and Projectname_platform.inffiles, along with a <strong>con</strong>figurationfile for each processor type,are placed in this directory. Thebatch file can be used to initiate therebuild of the .cab files. Thedependencies file <strong>con</strong>tains the listof .cab files that the batch file isdependent on and always <strong>con</strong>tainsa reference to the CompactFramework .cab file for each processortype. At installation time thesedependencies will be checked toensure that they have been appliedto the device. The .inf file <strong>con</strong>tainsthe installation settings to use whenthe .cab file is executed. It is importantto note that the .cab file createddoes not include the .cab file for theCompact Framework. AlthoughPocket PC <strong>2003</strong> devices ship withthe Compact Framework in ROM,for the present you’ll need to copyand execute the redistributable onthe device.To customize the installation onthe device, the .inf can be modified.For example, you can add a shortcutto the Programs group on a PocketPC by modifying the following sectionsin the .inf file like so:[DefaultInstall]CEShortcuts=Shortcuts[Shortcuts]MyApplication,0,myapp.exe,%CE2%\StartMenu\ProgramsOther examples of customizingthe .inf file might include addingadditional files (for example, SQLCEdatabases) to be distributed to thedevice in the .cab file by modifyingthe CopyFiles section.8September <strong>2003</strong> • dotnetdevelopersjournal.com


Ready-Set-Deploy!After a Compact Frameworkapplication has been packaged intoa .cab file it can be deployed andinstalled on the device. You can dothis in several ways, including thefollowing:• ActiveSync: Perhaps the mostobvious option for deploying aCompact Framework applicationis to allow the application to beinstalled when the device is cradledusing the ActiveSync softwaretypically used to synchronizefiles and e-mail.To do so the application mustbe registered with the ActiveSyncApplication Manager installed onthe desktop machine. Thisprocess is relatively simple andrequires creating a custom setupexecutable or an installer thatintegrates with a WindowsInstaller project created inVS.NET. In either case the processthen invokes the ApplicationManager on the workstation withActiveSync installed, passing it an.ini file that <strong>con</strong>tains informationabout the application to be installed.For a complete exampleof how to do this, check out thewhitepaper “Developing andDeploying Pocket PC SetupApplications” on the MicrosoftSmart Devices DeveloperCommunity Site (http://smartdevices.microsoftdev.com).While this deployment andinstallation option is intuitive andprovides a familiar mechanism tothe user, it does require that thecustom-setup application beinstalled on the workstation usedfor synchronizing with the device.• Web site: The se<strong>con</strong>d option is touse a Web site. Using this optionan organization could create apublic or intranet site that <strong>con</strong>tainslinks to the various .cab filescreated by SDP. This option hasthe benefit of not requiring thedevice to be cradled in order toinstall software.When users navigate to the Webpage using Pocket InternetExplorer, they can tap on therequired .cab file. The resultingdialog allows the file to be downloadedand then opened.Opening the file after download isequivalent to executing the .cabfile on the device and will causethe application to be installed.To protect the .cab files, especiallyon a site accessible over theInternet, it is recommended thatthe virtual directory in which thedownload page resides be protectedby standard HTTP encryptionand authentication schemes.There are also third-party solutionssuch as the AppearProvisioning Server (APS) fromAppear Network, which allowsautomatic delivery, single-clickdownload, and automatic discardof location-specific applicationstargeted for health care, hospitality,transportation, and workforcecoordination.• Storage card: In many cases, theapplication needs to be deployedalong with a SQL Server CE data-Jon Box is a Microsoft regionaldirector (www.microsoft.com/rd); aMSDN Webcast presenter, founderof the Memphis .NET User Group(www.memphisdot.net); a memberof Quilogy’s Atomic group(http://atomic.quilogy.com), whichevangelizes emerging technologies;and author, with Dan Fox, of theupcoming Building Solutions withthe .NET Compact Framework fromAddison-Wesley.jbox@quilogy.comdotnetdevelopersjournal.com • September <strong>2003</strong>9


.NET MobilityDan Fox is a technical director forQuilogy (www.quilogy.com). Danevangelizes technology withinQuilogy and to its customersthrough writing and speaking. Heis the author of BuildingDistributed Applications withVisual Basic .NET and TeachYourself ADO.NET in 21 Days,and coauthor, with Jon Box, ofthe upcoming Building Solutionswith the .NET CompactFramework from Addison-Wesley.dfox@quilogy.combase or other software. As a resultit can be both time <strong>con</strong>sumingand bulky to deploy such anapplication over the Internet orthrough a cradled <strong>con</strong>nection.For those reasons the applicationcan alternatively be deployed ona memory storage card such as aCompact Flash card. However,rather than requiring the user toexecute the .cab file once thestorage card is inserted into thedevice, Pocket PC devices includean Autorun feature that can beutilized.With this feature, when a storagecard is inserted into thedevice, the Pocket PC looks for anexecutable called Autorun.exe ina folder mapping to the processortype of the device. For example, ifthe processor type is ARM, then itwill look for the file \StorageCard\ARM\Autorun.exe on thestorage card. When found, theexecutable is copied to the\Windows folder and executedwith the install parameter.Likewise, when the card isremoved from the device, thesame executable is launched withthe uninstall parameter.• File share: Just as with a Web sitedeployment, the .cab files can beplaced on a local area networkshare and accessed wirelesslyusing 802.1x (or even throughActiveSync when cradled, usingActiveSync 3.5 and higher supportingpass-through) from theFile Explorer on the device.And as with Web deployment, theshare can be protected and userswill be forced to enter valid credentialsto gain access to the files.Once again, this option frees theuser from having to cradle thedevice in order to install software.• Auto-deployment: Althoughslightly different from the previousdeployment options, applicationswritten in the CompactFramework, just as in the desktop.NET Framework, can be writtento be auto-updating. By autoupdating,we mean an applicationthat checks – either periodicallyor with each invocation – afile share or Web site for newerversions of its assemblies andthen dynamically downloads thenew assemblies. This technique isespecially effective for applicationsthat use private assemblies,since the application can be partitionedinto various functionalities,each housed in a separateassembly and therefore updatedindependently.The obvious benefit to creatingan auto-updating application isthat it reduces the burden ofkeeping the application up todate. For an example of how sucha component could be written,take a look at Microsoft’s UpdaterApplication Block atwww.microsoft.com/patterns.It’s Up to YouNow that we’ve given you theoptions and set the stage, all that’sleft for you to do is the work. So getout there and deploy your CompactFramework applications!ATTN: DevelopersSTEP UPto the mikeand be...Calling SleekGeeks Everywhere!Go toHEARD!http://developer.<strong>sys</strong>-<strong>con</strong>.comMake sure you have your finger onthe pulse of i-Technology...bookmarkhttp://developer.<strong>sys</strong>-<strong>con</strong>.com today.i-TechnologyNewsi-TechnologyViewsi-TechnologyCommenti-Technology© COPYRIGHT <strong>2003</strong>, SYS-CON MEDIA WWW.SYS-CON.COM10September <strong>2003</strong> • dotnetdevelopersjournal.com


For answers call us at 1-866-EDGEWEB3 3 4 3 9 3 2When calling your <strong>web</strong> host for support you want answers, not anannoying song stuck in your head from spending all day on hold. AtEdgeWebHosting.net, we'll answer your call in two rings or less. There'sno annoying on-hold music, no recorded messages or <strong>con</strong>fusing menumerry-go-rounds. And when you call, one of our qualified experts will havethe answers you're looking for. Not that you'll need to call us often sinceour self-healing servers virtually eliminate the potential for problems andautomatically resolve most CF, IIS and ASP problems in 60 se<strong>con</strong>ds or lesswith no human interaction. Plus, our multi-user support <strong>sys</strong>tem allows youto track support requests for each of your engineers individually, lookupserver availability, receive a copy of all errors on your site in real time, andeven monitor intrusion attempts on your site in real time. For a new kindof easy listening, talk to EdgeWebHosting.netBy the Numbers:• 2 Rings or less, live support• 100% Guarantee• 99.998% Uptime• 150 MBPS Fiber Connectivity• 24 x 7 Emergency support• 24 Hour free backupWhat are you WAITING for?www.<strong>edge</strong><strong>web</strong>hosting.netShared Hosting ¥ Managed Dedicated Servers ¥ Semi-Private ServersColdFusion ¥ SQL Server ¥ .NET ¥ Self-Healing Servers ¥ Value Priced© <strong>2003</strong> Edge Web Hosting. All rights reserved. Edge<strong>web</strong>hosting.net and Edge Web Hosting logos are trademarks of ACS Edge<strong>web</strong>hosting.net. ColdFusion is a trademarke of Macromedia. ASP, SQL Server, .NET are registered trademarks of Microsoft Corp.Wina yearof freehosting**On Shared Hosting or the equivalent valueSee http://<strong>edge</strong><strong>web</strong>hosting.net/cfdj for details


IntegrationActiveX Controlsand .NETNo need to waitfor native .NET<strong>con</strong>trols to catch upCLIENTBY FRANK SLOANEHOMESERVEREVERYWHEREactiveX <strong>con</strong>trols have beenthe mainstay of mostVisual Basic 6 developersand have found their wayinto countless development toolsand Windows applications. MostActiveX <strong>con</strong>trols, even the “free”<strong>con</strong>trols included with Visual Basic,can be used with Visual C++, Access,Delphi, Oracle, Paradox, and manyother languages.With tens of thousands ofActiveX <strong>con</strong>trols available, somefree, some not, it’s not difficult tofind a <strong>con</strong>trol with the exact featurethat you need for your latest project.Finding a “pure” .NET managed <strong>con</strong>trolis not always quite that simple..NET and Visual Studio .NET go along way toward making ActiveX<strong>con</strong>trols very easy to use, but thereare some pitfalls that may causesome <strong>con</strong>fusion (and possibly somebad language). These obstacles arereally minor, but when you run intothem the first time, they areextremely frustrating.I’ll try to guide you through mostof these issues. No, we won’t writean actual application, but once youhave seen the problems you mayencounter, you should be ready togo with the assurance that you canuse most ActiveX <strong>con</strong>trols with.NET. To illustrate the roadblocksahead, I’ll use the demo version ofSftBox/ATL 3.0, an ActiveXComboBox <strong>con</strong>trol. You can downloadthe free demo from www.windows<strong>con</strong>trols.com,but most anyActiveX <strong>con</strong>trol will do and could beused instead.I’ll use Visual Studio .NET <strong>2003</strong>in this article and for the samplecode, but using Visual Studio .NET2002 is essentially the same andraises the same issues when dealingwith an ActiveX <strong>con</strong>trol. Both versionsfully support ActiveX <strong>con</strong>trols,and the techniques shown hereapply to both.Getting ready to use an ActiveX<strong>con</strong>trol and dropping it onto aWindows Form is quite straightforward.First, you’ll need to create anew project. Using Visual Studio.NET’s “File, New” menu command,create a new Windows Applicationusing the Visual C# or Visual BasicProject type. As the blank formstares at you, it is time to drop anActiveX <strong>con</strong>trol onto it. Your Toolboxhas a number of Windows Forms<strong>con</strong>trols, but you’ll have to add theActiveX <strong>con</strong>trols you want to usefirst. If you right-click on theToolbox and select Add/RemoveItems (or Customize Toolbox inVisual Studio .NET 2002), you’ll bepresented with a list of .NET componentsand a list of COM components.ActiveX <strong>con</strong>trols are COMcomponents, so you’ll have to pickone of the COM components. In thisexample, we’ll select “SftBox/ATL 3.0Combo Box Control” (see Figure 1).Now you’re all set. Locate thenew Toolbox i<strong>con</strong> for the SftBox/ATL3.0 Combo Box Control and drop iton your form (see Figure 2).So far, so good. If your ActiveX<strong>con</strong>trol made it this far, we’llassume that it works okay with.NET. Just keep in mind that someActiveX <strong>con</strong>trols simply won’t workwith all development tools. Forexample, most tab <strong>con</strong>trols that youmay be familiar with from yourVisual Basic 6 days do not work withanything but Visual Basic 6; somesplitter <strong>con</strong>trols also suffer from thislimitation. But for the most part, awell-designed <strong>con</strong>trol that followsthe ActiveX standards should offerlittle trouble.At this point, you’ll most likelyneed some help. Actually, most of uswould. Unless you know the <strong>con</strong>trolyou are using extremely well, you’llprobably need a little guidance inthe form of online help. Not all of usmanage to remember the hundredsof properties and methods a <strong>con</strong>troloffers. Finding the help file is notalways easy. Older ActiveX <strong>con</strong>trolsor <strong>con</strong>trols that have not beenupdated specifically to support.NET will not offer online help – atleast it’s not easily accessible. Manycurrent ActiveX <strong>con</strong>trols do, however,have excellent help support.When a <strong>con</strong>trol is selected or aproperty is edited, the DynamicHelp window automatically offers anumber of suggested topics for the<strong>con</strong>trol and for Visual Studio .NETin general. Dynamic Help is a great12September <strong>2003</strong> • dotnetdevelopersjournal.com


way to access <strong>con</strong>text-related helpfor any activity. You can accessDynamic Help using Control F1. For<strong>con</strong>trols that don’t offer DynamicHelp, you’ll have to locate the helpfile. Often you’ll find a programgroup for a <strong>con</strong>trol in your Startmenu, which has an entry for onlinehelp. If the <strong>con</strong>trol offers propertypages, you may be able to accessonline help there. Otherwise, you’llhave to hunt for the help file.So far I’ve shown you how to adda <strong>con</strong>trol to the form and accessonline help. I skipped over a littledetail when I told you to drop the<strong>con</strong>trol onto the form. Remember,this is an ActiveX <strong>con</strong>trol. .NETdoesn’t really “talk” directly toActiveX <strong>con</strong>trols. An ActiveX <strong>con</strong>trolis not a managed <strong>con</strong>trol; it usesunmanaged code. Visual Studio.NET creates a complete class wrapperfor our ActiveX <strong>con</strong>trol, so toyour application the <strong>con</strong>trol looksjust like any other .NET managed<strong>con</strong>trol would. This class wrapper iscalled the runtime callable wrapper(RCW). Usually, this process is completelytransparent and is a nice wayto bring an ActiveX <strong>con</strong>trol to the.NET world. An ActiveX <strong>con</strong>trol willnow look just like a .NET <strong>con</strong>trol –and in fact it is. The class wrappercreates a <strong>con</strong>trol derived from theAxHost class, which has the Controlclass as its base class.Where is the class wrapper? Youdon’t actually see it. It is created,compiled, and deleted. You get onlythe Interop DLLs in your outputdirectory. But for the curious (andsometimes the desperate), you cantake a look at the class wrapper. The.NET Framework SDK has a utilitythat can generate the source (in additionto creating the DLLs). The AxImputility can create the class wrapperfor you. Its output is also included aspart of the sample source availablewith this article. Use this commandlinecode to invoke the utility:“C:\program files\Microsoft VisualStudio .NET<strong>2003</strong>\SDK\v1.1\Bin\AxImp.exe”C:\Windows\System32\SftBox_IX86_A_30.ocx /sourceIt creates a source file full ofquite boring properties and methoddefinitions, as seen in Listing 1. Fordotnetdevelopersjournal.com • September <strong>2003</strong>now, we won’t actually need thisclass wrapper, but it will come inhandy when we look at events and afew odd properties.Up to this point an ActiveX <strong>con</strong>troland a .NET managed <strong>con</strong>trol arevirtually indistinguishable. Theycertainly look the same when yourapplication runs. Even at designtime, you can manipulate propertiesusing the IDE’s “Properties” windowand you can get online help. SomeActiveX <strong>con</strong>trols even offer propertypages. You can access these usingthe Property Pages button in theProperties window. Or you canaccess the Properties pages by rightclickingon the <strong>con</strong>trol in designview.Properties pages offered byActiveX <strong>con</strong>trols are specific to each<strong>con</strong>trol (see Figure 3) and oftenoffer additional features, such aseasier property editing, online helpaccess, and additional descriptions.Whether you modify propertiesthrough the IDE’s Properties windowor through the <strong>con</strong>trol’s customproperty pages doesn’t matter. Allthe properties you define at designtime are nicely saved in a resourceand are set at runtime by the form’sInitializeComponent method (seeListing 2).It looks all too easy, and as usualin this business, it’s the little detailsthat get you. Let’s start by addingthree entries to the combo box andselecting the first entry (see Listing3). As you enter this code, you’llnotice that IntelliSense nicely offersall available properties and methods.The project actually runs withoutany problems, but it does lookquite boring.First, let’s spruce it up a bit byusing a different foreground colorfor the first entry. In old-style VB, wewould be able to say something like:SftBox1.Cell(index, 0).ForeColor =vbRed;Basically, we’re accessing the Cellobject, indexed by item index andcolumn index, so we can manipulateits ForeColor property. Becauseof the class wrapper generated by.NET, it’s not quite that simple. Thisseemingly simple <strong>con</strong>struct canmake a seasoned developer cringewhen it needs to be translated to.NET. But you’ll get the hang of itonce you know what to look for.Simple properties are no problem.But a property such as “Cell”, whichrequires additional parameters (i.e.,index and column number), ischanged by .NET into a method. Soinstead of the Cell property, you’llhave to use the get_Cell and set_Cellf 1Figure 1: Choosing a COM componentmethods. Actually set_Cell doesn’texist in this case, but you get theidea. So let’s try again.C#axSftBox1.get_Cell(index,0).ForeColor = Color.Red;VBAxSftBox1.get_Cell(index,0).ForeColor = Color.RedAlmost, but IntelliSense saysForeColor is of type uint or UInt32,and Red is a Color type. Fortunately,.NET has a ColorTranslator class,which comes in handy to <strong>con</strong>vertbetween these types:C#axSftBox1.get_Cell(index,0).ForeColor = (uint)ColorTranslator.ToOle(Color.Red);axSftBox1.get_Cell(index,0).SelectForeColor =axSftBox1.get_Cell(index,0).ForeColorVBAxSftBox1.get_Cell(Index,0).ForeColor =Convert.ToUInt32(ColorTranslator.ToOle(Color.Red))AxSftBox1.get_Cell(Index,0).SelectForeColor =AxSftBox1.get_Cell(Index,0).ForeColorFrank Sloane is supportmanager at Softel vdm, acompany specializing inWindows ActiveX and .NET<strong>con</strong>trols. He has coauthored(and fixed) a number ofapplications and <strong>con</strong>trolssince joining the company in1997.13


Integrationcan use the same helper class. TheOLEConvert.cs and OLEConvert.vbsource files included with thesource code for this article showhow this class is implemented (seeListing 4). All of the code referencedin this article can be downloadedfrom www.<strong>sys</strong>-<strong>con</strong>.com/dotnet/sourcec.cfm.The ToOLEPic function is used toeasily <strong>con</strong>vert from an Image objectto an OLE Picture type.f 2 Figure2: Drop the new Toolbox i<strong>con</strong> onto your formC#axSftBox1.get_Cell(index,0).Picture = (stdole.IPictureDisp)OLEConvert.OLECvt.ToOLEPic(pictureBox1.Image);VBAxSftBox1.get_Cell(Index,0).Picture =OLEConvert.OLECvt.ToOLEPic(PictureBox1.Image)CLIENTHOMESERVEREVERYWHEREf 3 Figure3: The Properties pageNow let’s add a nice little imageto the first item. To make life easier,we’ll add a PictureBox <strong>con</strong>trol fromthe Toolbox to the form, load animage into it, and we’ll have accessto the Image property of thePictureBox. Of course there aremany other ways to get an image,but this is the easiest for our example..NET thinks of bitmaps andimages in terms of an Image object.ActiveX <strong>con</strong>trols use the OLE Pictureobject (really an IPicture orIPictureDisp COM interface). Theseare truly worlds apart. In “VB6-speak” you would simply assign theimage to the cell as in:Set SftBox1.Cell(index, 0).Picture= PictureBox1.Picture;A VB6 PictureBox happens tohave the Picture property, whichuses an OLE Picture object. .NET ofcourse doesn’t. Converting an Imageobject to an IPicture interface pointerseems difficult, if not impossible.At first, this is a real puzzler. A lookat the class wrapper may help. Ittranslated the MouseI<strong>con</strong> property,which also uses an OLE Picturetype, but it is exposed it as aSystem.Drawing.Image type. Uponinspection, it reveals the use of theGetIPictureFromPicture method.this.ocx.MouseI<strong>con</strong> =((stdole.IPictureDisp)(GetIPictureFromPicture(value)));This method takes an object oftype Image and returns an IPictureinterface pointer. That’s exactlywhat we need, but unfortunately themethod is protected, meaning it canonly be used in a class derived fromAxHost. So, we’ll have to create asmall helper class for this.Fortunately, we’ll only have to dothis once. All <strong>con</strong>trols and projectsThe complete code to add threeentries, highlighting the first withcolor and an image, now looks asshown in Listing 5 (Listings 5–8 canbe downloaded from www.<strong>sys</strong><strong>con</strong>.com/dotnet/sourcec.cfm.)While entering code, you mayhave noticed that IntelliSense alsooffers a let_Picture method. Usually,a picture property offers two forms.The first form assigns a reference toa picture object (Picture property),the se<strong>con</strong>d form assigns a completecopy of the image to the pictureproperty (let_Picture method).Unless you want to create actualcopies of images, the use oflet_Picture should be minimal.Fonts also need somewhat specialtreatment. .NET knows the Fonttype, but ActiveX <strong>con</strong>trols insist onthe OLE Font type (a IFontDispCOM interface). The generated classwrapper again offers some assistanceand handles the <strong>con</strong>trol’s Fontproperty, which accepts a Font typeand translates it to the ActiveX <strong>con</strong>trol’spreferred IFontDisp interfacepointer, so we don’t have to worryabout this case (see Listing 6).Unfortunately, other Font properties,such as the cells’ Font properties,need our help. Our helperclass that we implemented to betterhandle images can also help withfonts. The ToOLEFont function <strong>con</strong>vertsa Font object to an IFontDisp14September <strong>2003</strong> • dotnetdevelopersjournal.com


interface pointer (see Listing 7).Dealing with images and fontscan be difficult at first, but usingthese techniques should make itquite straightforward. Of course,you’ll still have to write the application,but at least working withActiveX <strong>con</strong>trols is now a bit easier.Because .NET uses namespaces,even setting a simple property canend up becoming a typing effort.axSftBox1.Items.Style =SftBoxLib30.SftBoxItemsStyleConstants.itemsStyleSftBoxVariable;Don’t forget that you can use ausing or Imports statement even forActiveX <strong>con</strong>trols. This will reducethe clutter. If you add a “usingSftBoxLib30;” or an “ImportsSftBoxLib30” statement to yoursource file, assigning a propertybecomes:axSftBox1.Items.Style =SftBoxItemsStyleConstants.itemsStyleSftBoxVariable;Events are a bit surprising in the.NET world. If you are used to VisualBasic or Visual C++, you expectevent parameters to arrive as part ofthe event handler. For example, inVisual Basic 6 you would see aKeyDown event defined like this:Private Sub object_KeyDown(KeyCodeAs Integer, ByVal Shift AsInteger)In .NET, every event handler hasthe same “signature” with exactlytwo arguments:C#void object_KeyDownEvent(objectsender, EventArgumentType e);VBPrivate SubAxSftBox1_KeyDownEvent(ByValsender As Object, ByVal e AsAxSftBoxLib30._ISftBoxEvents_KeyDownEvent) HandlesAxSftBox1.KeyDownEventAll the arguments that are specificto the event are passed in the“e” object. “e” is an object of classEventArgs or a derived class. You’llfind all the different event classesdotnetdevelopersjournal.com • September <strong>2003</strong>listed in the class wrapper generatedby AxImp. But generally, youreally won’t have to look there. Ifyou need a specific argument, youcan use IntelliSense by typing “e.”and it will offer all available arguments.You should have no problemmatching these up against the documentedarguments in the onlinehelp. The generated class wrapperusually changes the argument’s firstletter to lowercase. In this exampleyou would find an e.keyCode andan e.shift member as part of theclass derived from EventArgs (seeListing 8).At last, depending on the ActiveX<strong>con</strong>trol you are using, you may findthat a method, property, or event ismissing or may be in <strong>con</strong>flict withone of its base classes. (Remember,your ActiveX <strong>con</strong>trol is derived fromthe Control and AxHost base classes.)For example, the ComboBox<strong>con</strong>trol’s “RightToLeft” property isnowhere to be found. With the generatedclass wrapper in hand, youcan quickly find that the propertyhas become “CtlRightToLeft”instead. .NET prefixes <strong>con</strong>flicting orreserved names with “Ctl”. If a <strong>con</strong>trolhas a “Refresh” method, it isrenamed to “CtlRefresh”, to distinguishit from the Refresh methoddefined in the Control base class.Some events receive an “Event” suffix.For example, an event name“KeyDown” (as defined by theActiveX <strong>con</strong>trol) becomes the“KeyDownEvent”.ConclusionUsing ActiveX <strong>con</strong>trols is just aseasy with .NET as it is with manyother development tools such asVisual Basic. Most ActiveX <strong>con</strong>trolswill work equally well in a .NETapplication. The .NET runtimeoffers great COM support, so youcan <strong>con</strong>tinue to use ActiveX <strong>con</strong>trolsthat you have used outside of .NETuntil now. Rather than reinventingthe wheel or waiting for native .NET<strong>con</strong>trols to catch up with the selectionand the wealth of featuresalready offered by ActiveX <strong>con</strong>trols,you can use these <strong>con</strong>trols today.Now that you know how to overcomesome of the more frustratingissues involved in integratingActiveX <strong>con</strong>trols with .NET, what isstopping you?l 1l 2 ListingListing 1[System.ComponentModel.Browsable(false)][System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)][System.Runtime.InteropServices.DispIdAttribute(9)]public virtual SftBoxLib30.SftBoxEdit Edit {get {if ((this.ocx == null)) {throw new System.Windows.Forms.AxHost.InvalidActiveXStateException("Edit",System.Windows.Forms.AxHost.ActiveXInvokeKind.PropertyGet);}return this.ocx.Edit;}}2C#private void InitializeComponent(){System.Resources.ResourceManager resources = newSystem.Resources.ResourceManager(typeof(Form1));this.axSftBox1 = new AxSftBoxLib30.AxSftBox();((System.ComponentModel.ISupportInitialize)(this.axSftBox1)).BeginInit();this.SuspendLayout();//// axSftBox1//this.axSftBox1.Location = newSystem.Drawing.Point(32, 24);this.axSftBox1.Name = "axSftBox1";this.axSftBox1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSftBox1.OcxState")));this.axSftBox1.Size = new System.Drawing.Size(224,38);this.axSftBox1.TabIndex = 0;//// Form1//this.AutoScaleBaseSize = newSystem.Drawing.Size(5, 13);this.ClientSize = new System.Drawing.Size(292,266);this.Controls.Add(this.axSftBox1);this.Name = "Form1";this.Text = "Form1";this.Load += newSystem.EventHandler(this.Form1_Load);((System.ComponentModel.ISupportInitialize)(this.axSftBox1)).EndInit();this.ResumeLayout(false);}VBPrivate Sub InitializeComponent()Dim resources As System.Resources.ResourceManager= New System.Resources.ResourceManager(GetType(Form1))Me.AxSftBox1 = New AxSftBoxLib30.AxSftBoxCType(Me.AxSftBox1,System.ComponentModel.ISupportInitialize).BeginInit()15


Integrationl 3 ListingMe.SuspendLayout()''AxSftBox1'Me.AxSftBox1.Location = NewSystem.Drawing.Point(32, 24)Me.AxSftBox1.Name = "AxSftBox1"Me.AxSftBox1.OcxState =CType(resources.GetObject("AxSftBox1.OcxState"),System.Windows.Forms.AxHost.State)Me.AxSftBox1.Size = NewSystem.Drawing.Size(224, 38)Me.AxSftBox1.TabIndex = 3''Form1'Me.AutoScaleBaseSize = NewSystem.Drawing.Size(5, 13)Me.ClientSize = New System.Drawing.Size(292,266)Me.Controls.Add(Me.AxSftBox1)Me.Name = "Form1"Me.Text = "Form1"CType(Me.AxSftBox1,System.ComponentModel.ISupportInitialize).EndInit()Me.ResumeLayout(False)End Sub3C#private void Form1_Load(object sender,System.EventArgs e) {axSftBox1.Items.Style =SftBoxLib30.SftBoxItemsStyleConstants.itemsStyleSftBoxVariable;int index = axSftBox1.Items.Add("FirstItem");axSftBox1.Items.Add("Se<strong>con</strong>d Item");axSftBox1.Items.Add("Third Item");}// This helper class allows access to pro// tected members of AxHost// used to <strong>con</strong>vert Image and Font objects to// OLE objectspublic class OLECvt :System.Windows.Forms.AxHost{private OLECvt() : base(""){}// <strong>con</strong>vert an Image to an OLE Picture objectpublic static stdole.StdPictureToOLEPic(Image i){returnAxHost.GetIPictureDispFromPicture(i) asstdole.StdPicture;}}// <strong>con</strong>vert an Image to an OLE PictureIPictureDisp interfacepublic static stdole.IPictureDispToOLE_IPictureDisp(Image i){returnAxHost.GetIPictureDispFromPicture(i) asstdole.IPictureDisp;}// <strong>con</strong>vert a Font to an OLE Font objectpublic static stdole.StdFontToOLEFont(Font f){return AxHost.GetIFontFromFont(f) asstdole.StdFont;}// <strong>con</strong>vert a Font to an OLE Font// IFontDisp interfacepublic static stdole.IFontDispToOLE_IFontDisp(Font f){return AxHost.GetIFontFromFont(f) asstdole.IFontDisp;}CLIENTHOMESERVEREVERYWHERE}l 4 ListingaxSftBox1.Items.Selection = index;VBPrivate Sub Form1_Load(ByVal sender AsSystem.Object, ByVal e As System.EventArgs)Handles MyBase.LoadDim Index As IntegerAxSftBox1.Items.Style =SftBoxLib30.SftBoxItemsStyleConstants.itemsStyleSftBoxVariableIndex = AxSftBox1.Items.Add("First Item")AxSftBox1.Items.Add("Se<strong>con</strong>d Item")AxSftBox1.Items.Add("Third Item")AxSftBox1.Items.Selection = IndexEnd Sub4C#namespace OLEConvert{VBPublic Class OLECvtInherits System.Windows.Forms.AxHostPublic Sub New()MyBase.New("")End Sub' <strong>con</strong>vert an Image to a OLE Picture objectPublic Shared Function ToOLEPic(ByVal i AsImage) As stdole.StdPictureReturn GetIPictureDispFromPicture(i)End Function' <strong>con</strong>vert an Image to an OLE Picture' IPictureDisp interfacePublic Shared FunctionToOLE_IPictureDisp(ByVal i As Image) Asstdole.IPictureDispReturn GetIPictureDispFromPicture(i)End Function' <strong>con</strong>vert a Font to an OLE Font objectPublic Shared Function ToOLEFont(ByVal f AsFont) As stdole.StdFontReturn GetIFontFromFont(f)End Function' <strong>con</strong>vert a Font to an OLE Font IFontDisp' interfacePublic Shared Function ToOLE_IFontDisp(ByValf As Font) As stdole.IFontDispReturn GetIFontFromFont(f)End FunctionEnd Class16September <strong>2003</strong> • dotnetdevelopersjournal.com


XSLT TransformationsTroubleshooting .NET ApplicationsPart 1: Implementing anXslTransform wrapper to trace andprofile XSLT transformationsSERVERBY KARTHIKRAVINDRANHOMECLIENTEVERYWHEREin this article I will showyou how to implementan XslTransform wrapperto trace and profile XSLTtransformations at runtime in .NETapplications. The source code andsupporting files can be downloadedfrom www.<strong>sys</strong>-<strong>con</strong>.com/dotnet/sourcec.cfm.Tests executed and resultsobtained to verify the execution andperformance of XSLT transformationsduring development and testingare often not fully representativeof production use case scenariosencountered in a live environment.Troubleshooting XSLT transformationsthat performed well during thedevelopment and testing phases butlater exhibit unexpected behavior ina production environment can be adaunting task.Random exceptions, access violations,generation of unexpected/incorrect output, and in<strong>con</strong>sistentdrops in query execution performance(prolonged high CPU usageor idle times) are examples of commonproblems that you canencounter when executing XSLTtransformations in production environments.Such problems are mostcommonly caused by the design ofthe XSLT style sheet(s) used to executethe transformations. Theseproblems can be difficult to reproduceand troubleshoot when thesource XML data is generateddynamically and varies by user, e.g.,dynamically generated queries toretrieve source XML data from aSQL Server back end, or dataretrieved dynamically from externalWeb <strong>services</strong>.In such situations the availabilityof the following diagnostic data canhelp significantly reduce the time toidentify the cause of the problem inan XSLT transformation and takethe required corrective action:1. The <strong>con</strong>text source XML data2. The XSLT style sheet used to executethe transformation3. An XSLT transformationtrace/profiler log to the point offailure, manual termination, orcompletionThe <strong>con</strong>text source XML datacan be difficult to obtain in dynamicenvironments without source codemodifications. The availability ofthis item combined with the stylesheet (which is usually easily attainable,as style sheets are commonlyloaded from the disk) will provideusers the data they will need torecreate the problem on a development/testserver.An XSLT transformationtrace/profiler log will help execute atime- and resource-efficient postmortem analysis of the failed/problematicXSLT transformation todetermine the progress to the pointof failure/manual termination/completion,isolate the cause of anobserved problematic behavior, andtake the required corrective action.These items should be obtainablewithout having to resort to executingtime-<strong>con</strong>suming troubleshootingsteps that require theuse of advanced debugging toolsand/or the implementation ofsource code modifications. Beingable to obtain diagnostic data representativeof a live use case in a timelymanner will facilitate faster problemisolation and resolution.In the .NET Framework, theXslTransform type in theSystem.Xml.Xsl namespace implementsthe API to execute XSLTtransformations using the .NETXSLT processor. This article detailsan implementation architecture thatcan be used to implement a wrapperfor this type to trace and profileXSLT transformations at runtime in.NET applications.XSLT Tracing GoalsDesign Goals1. The tracing functionality shouldbe fully <strong>con</strong>figurable withoutrequiring source code modifications.This is mandatory if a featurelike this is to be useful inproduction environments.Specifically, the following aspectsshould be <strong>con</strong>figurable:• Enable/disable tracing. By defaultXSLT Tracing should be disabled.The feature is meant to beenabled and used only in troubleshootingand/or profiling scenarios.• Configure (enable/disable) XSLTelements/instructions to betraced, e.g., trace only xsl:templateinstructions.• Enable/disable the persisting ofsource XML data used in XSLTtransformations. This option,when enabled, will help obtain18September <strong>2003</strong> • dotnetdevelopersjournal.com


the source XML data transformedby problematic XSLT transformationsin dynamic environments.• Enable/disable the deletion oftrace logs and source XML datapersisted by successful XSLTtransformations (to prevent logsrelated to successful transformationsfrom cluttering the disk).• Specify the physical path of thedisk and folder where the tracelog and source XML data shouldbe persisted.2. There should be no requirementto mix trace points and tracingcode with the core queryprocessor implementation.Users will not have access to thesource code of the XslTransformtype and will therefore not beable to instrument its implementationto achieve thedesired tracing.3. It should generate a trace log withuseful data that can be easilyinterpreted by an XSLT developer.Third-party application profilersthat profile managed code executionin .NET applications areavailable. The data generated bythese profilers reflect the executionand performance of API callsexecuted on the .NET assembliesused during the course of thetransformation. A user will needto be familiar with the internalXslTransform implementation tomap its API calls to correspondingXSLT instructions in a stylesheet. This level of expertise andf 1Figure 1: Architecture of the XslTransform wrapperdotnetdevelopersjournal.com • September <strong>2003</strong>skill is currently possessed onlyby the Microsoft developers whoimplemented the XslTransformtype. An XSLT transformationtrace log should reflect the executionof the style sheet using a formatthat is independent of implementationspecifics and that canbe easily interpreted by an XSLTdeveloper.User Goals1. Enable users to easily obtain livesource XML data in dynamicenvironments in order to recreateand troubleshoot XSLT transformationfailures.2. Eliminate the need to install/<strong>con</strong>figureadvanced debugging toolsto troubleshoot XSLT transformationproblems and failures.3. Enable experienced XSLT developersto efficiently and independentlytroubleshoot and resolve.NET XSLT transformation problems.The feature can also beused to obtain and provideMicrosoft product support <strong>services</strong>with live data to reproduce anobserved problem when encounteringa potential anomaly thatrequires <strong>con</strong>firmation.4. Enable inexperienced XSLTdevelopers to efficiently gatherand provide Microsoft ProductSupport Services with the data(source XML + style sheet +trace log) required to troubleshootthe cause of anobserved .NET XSLT transformationproblem.Non-Goals1. High performance when XSLTtracing is enabled is not a designgoal. Tracing functionality of anykind is meant to be used only introubleshooting/profiling scenarios.ODBC tracing is a perfectexample of this. When enabled, itsignificantly slows down the executionof ODBC applications.XSLT tracing is no different, andits benefits come with an associatedperformance trade-off.2. Tracing will be <strong>con</strong>figurable onlyfor specific XSLT instructions.Tracing every XSLT instruction isnot required to isolate the causeof an XSLT problem in the vastmajority of the use cases. Theability to trace a few core XSLTinstructions (e.g., xsl:template,xsl:for-each, and xsl:value-of)should be sufficient to aid in theproblem isolation process.Additionally, the requirement totrace each supported XSLTinstruction should be <strong>con</strong>figurable.ArchitectureFigure 1 is a high-level diagramof the architecture that will be usedand implemented by theXslTransform wrapper to trace XSLTtransformations in .NET applications.The following aspects of thearchitecture will help achieve thedesign and user goals.1. Application <strong>con</strong>figuration fileswill be used to <strong>con</strong>figure XSLTtracing. This is the preferredapproach to be able to dynamically<strong>con</strong>figure the aspects ofXSLT tracing described in thedesign goals without requiringsource code modifications. Thisflexibility comes at the cost of the<strong>con</strong>figured settings having anapplication-wide impact. In this<strong>con</strong>text, when XSLT tracing isenabled, all XSLT transformationsexecuted by an application will betraced. When it is disabled, noneof the XSLT transformations willbe traced.2. The code to generate the trace logwill be implemented in a CLRtype. When tracing is enabled,object instances of this type willbe instantiated and supplied asextension objects to trace XSLTtransformations.19


XSLT TransformationsSERVERf 2 Figure2: A snapshot from a trace log generated by the XslTransform wrapperHOMECLIENTEVERYWHEREf 3 Figure3: When tracing is disabled, the XSLT processor will execute XSLTtransformations in a regular mode3. When the option to trace XSLTtransformations is enabled, theXSLT processor will instrumentXSLT style sheets to add therequired trace points. The tracepoints in the instrumented stylesheet will be extension objectmethod calls to the tracing extensionobject. Each extension objectmethod call will supply parametersthat reflect the following:• XSLT instruction to be traced• Values specified in the originalstyle sheet for the commonattributes of the XSLT instructionbeing traced, e.g., the value specifiedfor the selected attributes ofxsl:value-of and xsl:for-eachinstructions• The <strong>con</strong>text node processed bythe instruction (when applicable)• The <strong>con</strong>text node data (whenapplicable)The tracing extension objectmethod will log these parametersin a tab-delimited text file, therebygenerating an execution tracelog as the transformation isprocessed and executed. For eachinstruction, the time elapsedsince the execution of the previoustraced instruction and thetotal cumulative time elapsedsince the transformation beganwill also be reported. These valueswill serve as simple but usefulprofiling data that can help identifyperformance bottlenecks inthe style sheet execution.Instrumenting the style sheet toadd trace points eliminates theneed to have access to the queryprocessor’s implementation toimplement tracing functionality.The goal is to treat XSLT as anXML transformation/query programminglanguage that can beinstrumented and whose executioncan be traced like any otherregular programming language.4. The generated trace log can beopened and viewed usingMicrosoft Excel. This will <strong>con</strong>tainan instruction trace to the pointof failure, manual termination(hang scenarios), or completion.In failure and manual terminationscenarios, the trace logcan be used to study the executionsequence of the transformationand isolate thecause of the problem. In scenarioswhere the transformationsrun to completion, theprofiling information in thetrace log can be used to evaluatethe performance and identify anysignificant bottlenecks that mayexist. Figure 2 is a snapshot froma trace log generated by theXslTransform wrapper.5. When the option to persist thesource XML is enabled, the XSLTprocessor will write the sourceXML to a dynamically generatedXML document that will be persistedin the trace output folder.The persisted source XML can bematched with its instruction tracelog using the timestamp valueused to <strong>con</strong>struct the names ofthese files.6. When tracing is disabled, therewill be no performance hit andthe XSLT processor will executeXSLT transformations in a regularmode as depicted in Figure 3.This is very important to ensurethat there is no additional overheadwhen XSLT tracing is disabled(the default).ImplementationNote: The implementation discussedin this section and providedas a download with this article is anunsupported sample. Do not use itdirectly in production environments.The objective of this implementationis to illustrate how tracingfunctionality can be implementedto trace XSLT transformations in.NET applications. You are encouragedto study the source code of thesample XslTransform wrapper, addadditional features as required, anduse it in development/testing environmentsto troubleshoot and profileXSLT transformations executedby your .NET applications. You arealso encouraged to invest additionaldevelopment and testing efforts toimplement/enhance and fully testan identical custom XslTransformwrapper for use in your productionenvironments.This section will explain theimplementation of the sampleXslTransform wrapper to trace and20September <strong>2003</strong> • dotnetdevelopersjournal.com


XSLT TransformationsConfiguration option Use Default valueTraceXSLTStyleSheets Used to enable/disable XSLT tracing in an application. FalseTracing should be enabled only when there is arequirement to troubleshoot an XSLT transformation.XSLTTraceOutputPath Used to specify the output folder where the trace logs and No default. The user mustspecify an existing source XML data (if the XSLTTracePersistSourceXML specify an existing folder.option is enabled) should be persistedTraceXSLTTemplates Used to enable/disable the tracing of xsl:template instructions TrueTraceValueOf Used to enable/disable the tracing of xsl:value-of instructions TrueTraceForEach Used to enable/disable the tracing of xsl:for-each instructions TrueXSLTTracePersistSourceXML Used to enable/disable the persisting of source XML data Falseused in XSLT transformations. This option should be enabledonly when there is a requirement to capture dynamicallygenerated source XML data required to recreate an observedproblematic behavior.XSLTTraceDeleteLogsWhenSuccessfulUsed to enable/disable the deletion of trace logs and persisted Truesource XML data for successful transformations. This optionshould be disabled only when using the tracing functionalityto profile the performance of successful transformations.Table 1: Configuration optionsParameterName of the XSLT instructionPattern specified for the match attributeQName specified for the name attributeExpression specified for the select attributeLocal name of the <strong>con</strong>text nodeThe <strong>con</strong>text nodeApplicable toxsl:template, xsl:for-each, and xsl:value-ofxsl:templatexsl:templatexsl:for-each and xsl:value-ofxsl:template, xsl:for-each, and xsl:value-ofxsl:template, xsl:for-each, and xsl:value-ofTable 2: The tracing extension object method parametersSERVERHOMECLIENTEVERYWHEREInstruction Position of trace point Examplein relation to instructionxsl:template First child xsl:for-each First child when there is no child xsl:sort Se<strong>con</strong>d child when there is xsl:value-of Replaces instruction will be replaced byTable 3: The position of a generated xsl:value-of trace point in relation to the XSLT instruction being traced22 September <strong>2003</strong> • dotnetdevelopersjournal.com


The <strong>2003</strong> Borland ® ConferenceAccelerate your development.The premier event for technical education—register early and save $200.With more than 200 technical sessions focused on Java /J2EE, Microsoft ® .NET Framework and Windows, ® Web Services, agileprocesses, and mobile application development– the <strong>2003</strong>Borland Conference is sure to help you advance your masteryof the technologies impacting enterprise-class developmenttoday. Borland – helping the whole development team makebetter software, faster.Special 50% discount on select products for attendees.** See <strong>web</strong> site for additional information. Made in Borland® Copyright © <strong>2003</strong> Borland Software Corporation.All rights reserved. All other marks are the property of their respective owners. • 20514.2November 1– 5, <strong>2003</strong>McEnery Convention CenterSan Jose, CaliforniaFor complete <strong><strong>con</strong>ference</strong> detailsand session information:<strong>con</strong>nect.borland.com/bor<strong>con</strong>03DEFINECaliberRM DESIGNTogether ®DEVELOPJBuilder, ® Delphi, C#Builder, C++Builder, ® Kylix TESTOptimizeit DEPLOYBorland ® Enterprise Server,AppServer, InterBase, ®JDataStore MANAGEStarTeam ®


XSLT TransformationsSERVERHOMECLIENTEVERYWHEREprofile XSLT transformations in.NET applications. The implementationwill be based on the architecturedetailed in the previous section.An understanding of thedesign goals and the architecture isrequired to comprehend the implementationspecifics.Prior to getting started, you willfirst need to download and set upthe sample project files providedwith this article. Execute the followingsteps to do this:1. Download TracingSample.zipfrom www.<strong>sys</strong>-<strong>con</strong>.com/dotnet/sourcec.cfm and save it on yourlocal hard disk.2. Extract the <strong>con</strong>tents of the zip fileto the root folder of your harddrive (C:\). This will create twosubfolders, named TracingDemoand TraceOutput. The Xslt-Diagnostics solution in theTracingDemo\XsltDiagnosticsfolder <strong>con</strong>tains the Visual Studio.NET <strong>2003</strong> project files for theXslTransform wrapper class andthe XSLT tracing extension object.The TracingClient solution in theTracingDemo\Tracing-Client folder <strong>con</strong>tains the projectfiles for a sample <strong>con</strong>sole EXEclient application that will beused to illustrate the XSLT tracingfunctionality implemented by theXslTransform wrapper. Trace-Output is <strong>con</strong>figured as the XSLTtracing output folder in theTracingClient application <strong>con</strong>figurationfile.Open TracingClient.sln (locatedin the TracingDemo\TracingClientfolder) and XsltDiagnostics.sln(located in the Tracing-Demo\XsltDiagnostics folder) intwo instances of the Visual Studio.NET <strong>2003</strong> IDE. Enable the option toShow all files in the SolutionExplorer window of both instances.With the sample files set up, wewill now see how the architecturedescribed in the previous sectionmaps to the implementation of thesample XslTransform wrapper.The XSLT ProcessorThe sample XslTransform wrappertype will be used as the XSLTprocessor in this implementation.The XsltDiagnostics.XslTransform2type implements this wrapper.Wrapper implementations arerequired in order for theXslTransform <strong>con</strong>structor, the Loadmethod, and the Transform methodto implement the desired tracingfunctionality. To keep things simpleand to be able to focus on theimplementation of the tracing functionality,the XslTransform2 typeimplements wrapper methods foronly the following Load andTransform method overloads:Load(string url)Transform(IXPathNavigable,XsltArgumentList,TextWriter)Don’t worry about understandingthe functionality of the code inthese wrapper methods at thispoint. I will get into this as we digdeeper into the implementationspecifics of the tracing functionality.For now it is sufficient that youunderstand that the code written touse the XsltDiagnostics.Xsl-Transform2 wrapper type to executeXSLT transformations (using thesupported Load and Transformwrapper overloads) will be identicalto the code required to use theSystem.Xml.Xsl.XslTransform typefor the same purpose. The followingcode taken from the Main methodof the TracingClient.StaticClienttype illustrates this:XslTransform2 stylesheet = newXslTransform2();stylesheet.Load("people.xsl");XPathDocument data = newXPathDocument("people.xml");System.IO.StreamWriter output =new System.IO.StreamWriter("output.html");stylesheet.Transform(data,null,output);The XSLT tracing functionality is<strong>con</strong>figured using an application<strong>con</strong>figuration file (discussed next)and used by the XslTransform2 Loadand Transform wrapper methods.No source code modifications orsetting of additional properties isrequired in the client applications totrace XSLT transformations executedby them. Subsequent referencesin this article to the term XSLTprocessor refer to theXsltDiagnostics.XslTransform2 typeand/or object instances of it.Configuring XSLT TracingIn this implementation, regular.NET application <strong>con</strong>figuration fileswill be used to <strong>con</strong>figure XSLT tracing.For EXE applications, this willbe the .exe.<strong>con</strong>fig filelocated in the executable folder, andfor ASP.NET applications it will bethe Web.<strong>con</strong>fig file. Keys to <strong>con</strong>figurethe aspects of tracing describedin the design goals will be defined inan section. TheXslTransform wrapper will read inthese <strong>con</strong>figuration settings oninstantiation to determine the XSLTtracing options that must be appliedwhen executing transformations.Listing 1 is a sample section (taken fromthe TracingClient application <strong>con</strong>figurationfile) used to <strong>con</strong>figure XSLTtracing in this implementation. (Allof the code referenced in this articlecan be downloaded from www.<strong>sys</strong><strong>con</strong>.com/dotnet/sourcec.cfm.)Theuse of the <strong>con</strong>figuration options isdescribed in Table 1.On instantiation the XSLTprocessor will read in these settingsfrom the application <strong>con</strong>figurationfile. The settings specified for eachof these <strong>con</strong>figuration parameterswill <strong>con</strong>trol the subsequent tracingfunctionality.Listing 2 shows the code in the<strong>con</strong>structor of the XsltDiagnostics.XslTransform2 type to read in thesettings specified for the XSLT tracing<strong>con</strong>figuration parameters. The codein the <strong>con</strong>structor instantiates thewrapped System.Xml.Xsl.XslTransform object, and uses aninstance of the System.Configuration.AppSettingsReader .NET Frameworkclass to read and store the values ofthe XSLT tracing <strong>con</strong>figurationparameters defined in the application<strong>con</strong>figuration file. The <strong>con</strong>figurationparameter names are case sensitive(by virtue of being specified asXML). An attempt to read a missingparameter (not defined in the <strong>con</strong>figurationfile, misspelled, or typedusing the wrong case) will generatean InvalidOperationException. EachGetValue method call is wrapped in adistinct try…catch block to prevent a24 September <strong>2003</strong> • dotnetdevelopersjournal.com


XSLT TransformationsSERVERKarthik Ravindran is asupportability program managerin the Microsoft WebDataProduct Support Servicesgroup. His core responsibilitiesinclude helping enterprisecustomers successfullyimplement solutions usingMicrosoft's WebData XMLtechnologies, evaluating andcommunicating customerproduct feedback to productgroups, and working withproduct groups to review andprovide input on theimplementation ofsupportability/usability features.HOMECLIENTEVERYWHEREmissing/misspelled <strong>con</strong>figurationparameter from hindering theattempt to read subsequent <strong>con</strong>figurationparameters. TheTraceXSLTStyleSheets parameter isused to determine whether or not toenable XSLT Tracing. Tracing will bedisabled when this parameter is setto false (the default) or is missing/misspelled.Instrumenting the XSLT Style SheetXSLT style sheet instrumentationis the process used to add tracepoints to an XSLT style sheet totrace its execution. In the sampleimplementation, the instrumentationprocess can be <strong>con</strong>figured toadd trace points to trace the executionof the following XSLT instructions.Tracing these instructionsshould in most cases help you narrowdown on the problematic stylesheet segment/instruction:1. xsl:template2. xsl:for-each3. xsl:value-ofYou can extend the implementationto trace the execution of additionalXSLT instructions using theimplementation techniquedescribed in this section.When the style sheet is initiallyloaded, the value of the TraceXSLT-StyleSheets <strong>con</strong>figuration parameteris used to determine whether or not itshould be instrumented. Trace pointswill be introduced in the style sheet totrace its execution when this option isenabled (disabled by default). Whendisabled, the original style sheet isloaded as is with no modification.The trace points in the instrumentedstyle sheet are calls to atracing extension object methodthat takes the parameters shown inTable 2 (as applicable to an instructionbeing traced) and uses them togenerate the execution trace log.The instrumentation routine parseseach XSLT instruction for whichtracing is enabled to extract the valuesthat must be supplied for thematch, name, and select parameters.The local-name XPath functionand the period (.) <strong>con</strong>text nodeXPath operator are used to supplythe last two parameters.The tracing extension objectmethod will use these parameters togenerate a tab-delimited executiontrace log as the transformation is executed.For each instruction, the timeelapsed since the execution of theprevious traced instruction and thetotal cumulative time elapsed sincethe transformation began will also bereported. These values are closeapproximations and will serve assimple but useful profiling data thatcan help identify performance bottlenecksin the style sheet execution.xsl:value-of elements are used toinsert the extension object method callsto trace the style sheet execution. Theextension object method will return anempty string for xsl:template and xsl:foreachinstructions after logging their execution.For xsl:value-of instructions, itwill evaluate the select expression andreturn the result as a string. This makesit possible to completely replace anxsl:value-of instruction with a call to theextension object method. The positionof a generated xsl:value-of trace point inrelation to the XSLT instruction beingtraced is summarized in Table 3.The sample implementationdoes not automatically resolve andinstrument style sheets imported(xsl:import) and/or included(xsl:include) by the main style sheetloaded into the XSLT processor. Thesource code for the sample implementationcan be downloaded fromwww.<strong>sys</strong>-<strong>con</strong>.com/dotnet/sourcec.cfm. Study the inline commentsto understand the implementationspecifics.Executing the Style Sheetand Tracing the TransformationWhen an XSLT transformation isexecuted with the tracing optionenabled, an object instance of theXSLTDiagnostics.XSLTTracer type isinstantiated and associated with the<strong>con</strong>text of the XSLT processor. TheXSLTDiagnostics.XSLTTracer typeimplements the functionality ofgenerating the XSLT execution tracelogs. As explained in the previoussection, the trace points in theinstrumented style sheets are callsto the traceInstruction methodimplemented by this type. Thismethod is invoked by the XSLTprocessor for each <strong>con</strong>figuredinstruction as the transformation isexecuted. Suitable parameter valuesrequired to generate a trace line foreach instruction will be passed tothe method when it is invoked.Listing 3 shows the code used toimplement the Transform wrappermethod in the XsltDiagnostics.XslTransform2 type. Study the inlinecomments to understand its functionality.The code to persist the XML datais implemented in the privateRecursivelyWalkAndPersistDatamethod. You can examine thismethod at your <strong>con</strong>venience to seehow code can be written to persistdata loaded into an IXPath-Navigable object that does notimplement a Save method (e.g.,XPathDocument).The generated trace log and thepersisted XML data will be deleted ifthe option to delete logs for successfultransformations (XSLTTrace-DeleteLogsWhenSuccessful) isenabled. The default setting for thisparameter is True to prevent thelogs generated for successful transformationsfrom cluttering the disk.When profiling the performance ofXSLT transformations that executeto completion you should disablethis option to be able to view thegenerated trace log.Note: When tracing is disabled,the transformation will be executedin a regular mode without accruingany of the overheads associatedwith tracing its execution.ConclusionInstrumenting and tracing XSLTtransformations by treating XSLT asa regular programming languagecan provide very useful diagnosticdata to help analyze and troubleshootrelated problems. The sampleimplementation discussed inthis article is a proof of <strong>con</strong>cept“scratch the surface” prototype toillustrate how this can be done andthe value of XSLT tracing. In Part 2 ofthis series I will walk you through acouple sample scenarios to illustratethe use of the XSLT tracing implementationdiscussed here.I hope that I have managed to whetyour appetite on this subject and getyour creative juices flowing on ways tofurther enhance this base implementationto address additional specificrequirements that you might have. Iam also very interested in hearing yourfeedback on the value of a feature likethis being built into the .NETSystem.Xml and MSXML stacks.26September <strong>2003</strong> • dotnetdevelopersjournal.com


ÆStraight Talk AboutSpeechSeptember 29 - October 2, <strong>2003</strong>EXPO October 1-2, <strong>2003</strong>New York Marriott MarquisSpeechTEK Highlights■■■■Explore What’s Working and Why.Customers present their most innovative solutions of <strong>2003</strong>.Candid discussions of recent deployments.See and Test the Latest and Most InnovativeProducts and Solutions.Over 100 exhibitors at SpeechTEK EXPO:The Voice Solutions Showcase.Learn Tips and Techniques for EffectiveDeployments.Eight pre-<strong><strong>con</strong>ference</strong> tutorials. Workshops and special events.All Points of View Represented.64 educational sessions with over 175 experts and analysts.Expanded to five tracks.Registration information:Chris Nolan1-859-278-2223 or Toll-free 1-877-993-9767chris@amcommexpos.comRegister Online: www.speechtek.comGOLD SPONSORS SILVER SPONSORS BRONZE SPONSORS MEDIA SPONSORS


Managed SpaceMarissa’s Guide tothe .NET Garbage CollectorPart 2: Managing memoryand resourcesEVERYWHEREBY JOHN GOMEZHOMECLIENTSERVERstand once and for all that threadinghas implications – many implications– and that it isn’t a toy. I knowI’m getting a little serious here,Uncle John, but trust me – in my sixmonths I’ve seen many good applicationsmessed up with threads. So Ihope that by highlighting how theyimpact the GC, people will think alittle harder about using them.”“It sounds as if you have strongfeelings about threading there,Marissa!” I tossed out. “I do,” sheresponded emphatically. “It’s justthat threads never hurt anyone, andso many people misuse them.”When I finally got her calmed down,she gave me some strong insightinto threading and the GC. Sheexplained that all the aspects we’vediscussed and will discuss in thisarticle work exactly as in a singlethreadedenvironment. But whenyou go to a multithreaded design,the GC has to do some specialthings that can affect performance.For instance, she explained, theGC will suspend all threads executingmanaged code before it starts acollection. This is importantbecause the GC is rearrangingthings and threads could end up refwhen we left Marissa lastmonth she was gettingrather cranky, but nowshe is well rested andready to get down to business. Andthat business is how Microsoft .NETmanages memory through the useof what is commonly known as thegarbage collector or GC. In the firstarticle in this series [.NETDJ, Vol. 1,issue 8] we discussed some of thebasic <strong>con</strong>cepts behind the garbagecollector. If you haven’t had achance to read that article, nowwould be a good time – before youlook over the following explanationsand advice from Marissa, my sixmonth-oldniece, who is known farand wide as an expert in playtimeetiquette; baby food; and most ofall, the workings of the Microsoft.NET garbage collector.“So Marissa, where should <strong>west</strong>art this time?” “Given that we leftoff with the Finalize method, maybewe should pick up from there, UncleJohn,” she replied. She then doveright into some of the deeper <strong>con</strong>ceptsrelated to the Finalizemethod. Marissa outlined some keyrules regarding the Finalize methodthat we should keep in mind whendesigning applications. (I took theliberty of detailing these rules in asidebar.) “Now that we have a handleon the Finalize method, weshould move on to the Disposemethod.” I just nodded my head,put my feet up on the PlaySkoolTalking Grill, and leaned back.“One of the challenges of dealingwith the Finalize method arisesfrom the fact that it is neither deterministicnor a public method,”Marissa stated as she pointed toThe Finalize Method• The Finalize method can cause expensiveor unmanaged resources to be held ontolonger than required.• There is no public access to the Finalizemethod, and you have no <strong>con</strong>trol overwhen it will be called.• There is no guarantee as to the order bywhich the GC will call Finalize methods.some notes she’d scribbled on achalkboard. “So it is important toimplement a Dispose methodwhenever we utilize resources thatare expensive or limited.” “So if I’mright,” I interjected, “the Disposemethod basically allows an applicationto provide a means by whichapplications or even the originalapplication itself can deterministicallyrelease resources?” “Yes, that’sexactly right, Uncle John.”Marissa shot me a small grin andcommented, “I think you might getthe hang of this yet. The importantthing to keep in mind, though, isthat the Dispose method allows onlyresources to be released; it does notrelease memory or help managememory.” As I listened to her pointout this subtle difference – therelease of resources versus therelease of memory – I decided that itwarrants a brief example.Consider that a database <strong>con</strong>nection,a file handle, and a networksocket are all examples of <strong>sys</strong>temresources. By implementing theDispose method you could designan algorithm that calls the Close orRelease method of each, makingthem available for other applications.But <strong>con</strong>sider that althoughyou have released the resource, youcannot release the memory allocatedfor the management of theresource. So the memory that wasoriginally allocated by the GC willremain allocated until the GC worksthrough its cleanup process.“I think we should spend just alittle time talking about how threadingaffects the GC,” Marissa said,dragging me back from my reverie.“It’s important that people under-28September <strong>2003</strong> • dotnetdevelopersjournal.com


erencing memory that is allocatedto objects that are going to bemoved to another generation. Thinkof the havoc that would cause! Keepin mind that the suspension ofthreads by the GC affects only managedthreads executing in theprocess that the GC is cleaning up.Now you’re wondering how the GCknows it can safely suspend a threadwithout interfering with the executionof your application’s task.It has to do with how threads aremanaged, and their state within theinternal method table and threadstack. We’ll tackle these <strong>con</strong>cepts in afuture article on threading, but restassured that the GC will not suspendyour threads until it has determinedthat they have reached a safe andhappy place and no harm will be doneby suspending them. But the implicationsare that the GC must wait, therebyprolonging the use of resources –or, once the threads are suspended,they must wait on the GC. Both ofthese actions result in a situation thatcan and often does, impact the performanceof your application and memoryutilization.Next on the agenda was reviewingthe <strong>con</strong>cept of weak and strongreferences. Marissa did a pretty goodjob of explaining the differencebetween strong and weak references.She started by explaining that theGC will create a graph, similar to atree graph, of all the objects in the<strong>sys</strong>tem. This graph helps the GCdetermine which objects are reachable,or in other words, directly referencedby a “root node” in the tree.If an object is reachable, it is saidto have a “strong” reference. Sobasically, if the object is being used,it is strong. To understand weak references,it helps to first understandthe advantages they provide. Let’s<strong>con</strong>sider an application that forsome reason loads a list of a thousanditems into memory. For argument’ssake let’s just say that theseitems cause a large performance hitand that it is easier to keep them inmemory than to re-create the list ofitems each time the application hasto access something in the list. Nowsuppose that the behavior of yourapplication is such that at somepoint the list is nice to have around,but the memory could “possibly” bebetter used elsewhere.dotnetdevelopersjournal.com • September <strong>2003</strong>GC MethodGC.Collect()GC.GetGeneration()GC.KeepAlive()GC.MaxGenerationGC.SuppressFinalize()t1Table 1: Useful methods for interacting with the GCl 1Listing 1DefinitionForces a collectionReturns the current generation numberMakes an object ineligible for collectionReturns the maximum number of generations used by the <strong>sys</strong>temRequests that the <strong>sys</strong>tem not call the Finalize methodWouldn’t it be, as Marissa says,“ultra-cool” if you could somehowtell the GC that you are still using theobject, but if worst comes to worstthe GC could reclaim the memoryused by the list? That is exactly whata weak reference allows you to do. Aweak reference allows the GC toreclaim an object that is still referencedby a root node, and that isultra-cool. To let the GC know thatyou have a weak reference to something,examine the code in Listing 1and modify it for your needs.Remember that you will always needto check to see if the object is stillalive because the GC can reclaim thememory the object is using, therebydestroying the object, at any time.The last thing Marissa and I discussedwas the ability to programmaticallycall the GC and monitor itvia the exposed performance counters.Marissa explained that thereare few times when you will need toprogrammatically interact with theGC, but in some rare instances – forsay developing a utility or debugging– there are some useful methodsyou should be aware of to roundout your understanding of the GC.These methods are described inTable 1, which should give you abasic understanding.It’s also important to becomefamiliar with the .NET and <strong>sys</strong>temperformance counters so that yourefforts at debugging problems relatedto memory management aremore fruitful. It’s important to get toknow the performance countersthat are not part of .NET – but thatare related to overall <strong>sys</strong>tem memoryusage – since they can give youclues as to how your application isimpacting the overall <strong>sys</strong>tem, or letyou know if other applications areimpacting your application.ConclusionI hope we have provided you witha practical and applicable review ofhow the GC works to manage memoryand resources. It is my hope – andMarissa’s – that you will be able totruly use the information <strong>con</strong>tainedhere to design more robust applicationsand architectures.{//Create a reference to an object as you normally would.Object oMyObj = new Object();//Create the weak reference as soon as possible.WeakReference oWR = new WeakReference(oMyObj);oMyObj = null; //Drop the reference to the strong object.oMyObj = wr.Target; //Use the target of the weak reference.If (oMyObj == null){//If oMyObj is null then the GC cleaned it up and you need//to recreate the object and start over. Nice way to manage//object references for things that are expensive to create.}Else{//If oMyObj is not null then it is still active and the GC//didn’t clean up the object yet. Use it as you normally//would and party on.}John Gomez is CEO and chief scientistat Group Espada, a company specializingin advanced .NET development,training, cyber-security, and counterhacking.When John isn’t runningGroup Espada, he enjoys spendingtime with the hobbits and elves of the.NET netherworld.jgomez@groupespada.com29


C#ALIncluding Assertionsin .NET AssembliesA step toward a trustedcomponent scenarioEVERYWHEREBY MIGUEL KATRIBERICH LEDESMA& LEONARDOPANEQUEHOMECLIENTSERVER.nET assemblies are superiorto previous componenttechnologies becausethey seamlessly providemultilingual support; introduce anexcellent synergy between code andmetadata; and inspire <strong>con</strong>fidencethrough a strong type <strong>sys</strong>tem and the.NET security policy. Nevertheless,.NET lacks a formal mechanism forspecifying the semantics of the typesoffered by an assembly.This article shows how, using.NET attributes, it is feasible tointroduce Boolean assertion clausesin .NET assemblies. Using reflection,these assertion attributes canbe extracted, checked, and monitoredat runtime. We offer an assertionbrowser tool that extracts theassertion attributes from the assembliesfor documentation purposesand generates a “trusted” proxyassembly to monitor these assertionsat runtime.IntroductionBertrand Meyer included theassertion formalism in Eiffel underhis Design by Contract metaphor.Works for other languages such asJava and C++ recognize the significanceof assertions. This articleintroduces assertions in .NET codethrough attributes. This approachchanges neither .NET languages nor.NET compilers.The resulting asserted assemblywill have two advantages:1. To serve as a documentationvehicle: Because assertions areinserted as attributes, they areformal metadata integrated intothe assembly.2. To increase the developer’s trustin the assembly: Because assertionscan be checked and monitoredat runtime by means ofreflection, the developer can verifythat the assembly really doeswhat the assertions say it does.Components inPrevious TechnologiesTechnologies like CORBA andCOM use IDLs (Interface DefinitionLanguages), but these IDLs do notinclude more semantic informationthan that which can be deducedfrom types, methods, and parameternames.Java technology alleviates thisdrawback, but has the followingweaknesses:• The monolinguistic approach. AJava component can be used onlyby another Java component.There is no seamless and comfortableway to <strong>con</strong>nect an EJBcomponent to a componentdeveloped in another languageand vice versa.• The documentation extractedfrom a component <strong>con</strong>sists onlyof type signatures and comments.• The Java reflection mechanism isunable to recover the “information”embedded as comments. Developersmust work directly with the internalsof the Java bytecode files.Strengths of .NET Assemblies.NET components are supportedby assemblies.• A .NET assembly is languageneutral. It can be used transparentlyfrom any other .NETassembly, independently of thesource languages that producedeach.• A .NET assembly <strong>con</strong>tains code,data, and metadata. Metadata canbe fully extracted using .NETreflection capabilities.• .NET introduces a new metadatafeature: attributes. Throughattributes we can include our owncustom metadata in assemblies.The Convenience of MoreTrusted .NET AssembliesThe .NET signing policy is basedon <strong>con</strong>fidence in the human (enterprise)author of the assembly, butthis is not enough for reliability.Applications are not forced to usethe types of an assembly under the“<strong>con</strong>tract” that these types request(in the BCL these “<strong>con</strong>tracts” appearin a verbose fashion). We need amore organized documentation toverify that an assembly does what itsays it does.How can an assembly exportinga type Stack, with a Push methodand a property Top, prohibit itsclient assemblies from applying Topto a stack s if s is empty? How canthe same assembly guarantee thatafter pushing an object x in s, theproperty Top will return x?Including Assertions byMeans of .NET AttributesThe proposed assertions are representedby the interface:30September <strong>2003</strong> • dotnetdevelopersjournal.com


interface IAssertion{string BoolExpression {get;}string Label {get; set;}bool Inherited {get;}}The class AssertionAttributeimplements IAssertion and extendsthe .NET SystemAttribute. This classallows the inclusion of the assertionattributes in the source code duringcompilation.The target of an assertion attributewill be a type or a method(including properties and <strong>con</strong>structors).The assembly resulting fromthe compilation of a project withthose assertion attributes will becalled the asserted assembly.The assertions are really the rawstring parameters of these attributes,which are returned by theproperty BoolExpression. They mustdenote logical expressions under anotation named C#AL (C#-likeAssertion Language).For example, the string "!Empty"used in the assertion attribute of themethod Pop (see Listing 1) helps tospecify that a stack cannot bepopped if it is empty.The property Label = "To pop anelement the stack cannot be empty"defines a textual message about theassertion’s semantics.The Inherited property stateswhether the assertion will also applyto a derived type or method.The AssertionAttribute class hasthree derived types. The Invariant-Attribute derives from Assertion-Attribute. The AttributeUsage attributeis used to define the possibletargets of this InvariantAttribute,which in this case are classes, interfaces,or structs (see Listing 2).For an InvariantAttribute theBoolExpression should be truebefore and after applying any publicmethod of the type attached to theattribute.Because the property Allow-Multiple is set to true, several invariantattributes can be targeted to asingle type. A logical <strong>con</strong>junction(&&) will be applied to all Booleanexpressions.When assertions are monitoredduring runtime and && evaluates tofalse, then an InvariantException willbe thrown. The Label property willbe part of the exception message.dotnetdevelopersjournal.com • September <strong>2003</strong>The following excerpt shows aninvariant attribute attached to aRational type:[Invariant("Denominator != 0",Label="Denominator cannot bezero")]struct Rational{...public int Numerator{...}public int Denominator{...}}Pre<strong>con</strong>ditionAttribute andPost<strong>con</strong>ditionAttribute also derivefrom AssertionAttribute. Under theDesign by Contract guidelines, aPre<strong>con</strong>ditionAttribute denotes a<strong>con</strong>dition required by the assemblybefore applying the public methodtargeted by the attribute, and aPost<strong>con</strong>ditionAttribute denotes a<strong>con</strong>dition that will be ensured bythe assembly after applying themethod targeted by the attribute.Note: The Push method of theStack type (see Listing 1) has threepost<strong>con</strong>ditions (the propertyAllowMultiple of the Post<strong>con</strong>ditionAttributeis true).interface Stack {...[Pre<strong>con</strong>dition("!Full",Label="Stack Overflow")][Post<strong>con</strong>dition("!Empty")][Post<strong>con</strong>dition("Total ==Total.Old + 1")][Post<strong>con</strong>dition("Top == x",Label="The Stack applies a LIFOpolicy")]public void Push(object x);...}The attribute [Pre<strong>con</strong>dition("!Full", Label="Stack Overflow")]states that to push the stack, it cannotbe full; the attribute[Post<strong>con</strong>dition("!Empty")] statesthat after pushing, the stack will notbe empty; and the [Post<strong>con</strong>dition("Total == Total.Old + 1")] states thatthe total of elements in the stackwill be one plus the old value ofTotal before executing the push. Theattribute [Post<strong>con</strong>dition("Top == x",Label="The Stack applies a LIFOpolicy")] means that the pushed elementwill be at the top of the stack.The InvariantException,Pre<strong>con</strong>ditionException, andPost<strong>con</strong>ditionException types,derived from the base classAssertionException, represent theexceptions to be thrown when thecorresponding assertion is not fulfilledat runtime.Assertion Attributesand InheritanceAn invariant defined in a basetype must be fulfilled by theinstances of each derived type.Pre<strong>con</strong>ditions and post<strong>con</strong>ditionstargeting a virtual base methodmust be fulfilled by the correspondingoverriding method.The above approach fits wellwith classes implementing an interfacebase type, but it should notnecessarily be applied when a classextends another base class. If theInheritable property is set to false, adeveloper of a derived method isnot forced to guarantee the assertionsof the corresponding basemethod. For example, the followingclass Account does not require aderived class CreditAccount to <strong>con</strong>formto the pre<strong>con</strong>dition "Balance >amount" when overriding themethod Withdraw, because aCreditAccount allows a negativeBalance.class Account{..[Pre<strong>con</strong>dition("Balance >amount")][Post<strong>con</strong>dition("Balance ==Balance.Old - amount")]public virtual void Withdraw(intamount){...}}The C# Assertion Language(C#AL)Each BoolExpression parameterin the assertion attributes mustdescribe a C#-like Boolean expression(an analogous approach couldbe applied to other .NET languages).An entity appearing in theexpression must observe the followingrules:1. It must be public in order to beused and tested by client code in31


C#ALEVERYWHEREf 1HOMECLIENTSERVERFigure 1: The C#AL browser toolother assemblies. If the Full propertyof the Stack type (see Listing1) were not public, then it wouldmake no sense for the methodPush to have the pre<strong>con</strong>dition"!Full".2. Pre- and post<strong>con</strong>ditions of aninstance method can use bothinstance and static features of thetype defining the method.3. Pre- and post<strong>con</strong>ditions of a staticmethod can use only the type’sstatic features.“A .NET assembly is language neutral. Itcan be used transparently from any other.NET assembly, independently of thesource languages that produced each”C#AL includes a special property,Old, which can be applied to anyterm used in a method’s post<strong>con</strong>dition.This property returns the correspondingvalue of the term beforethe method’s execution. The attribute[Post<strong>con</strong>dition("Total == Total.Old+ 1",Label="The stack mustincrease by one element"]attached to the Push method,expresses that after pushing an element,the Total property must returna value equal to the value of Totalbefore the execution of Push (denotedby Total.Old) increased by 1.When x is of reference type x.Oldreturns a copy of the reference. Butif the dynamic type of the objectattached to x implements the interfaceICloneable, the returned valueis a clone of x. So by implementingthe method Clone and overridingthe method Equals, developers candecide how deeply to apply the Oldpolicy.A special variable, “result,” canbe used in the post<strong>con</strong>dition of anonvoid method; it will refer to thereturning value of the method. Forexample, the property Tomorrow(see Listing 3) has the post<strong>con</strong>dition:[Post<strong>con</strong>dition("result-this == 1",Label = "Tomorrow is the day aftertoday")]Others operators are => (implies)and (if only if). These operatorsfacilitate design and improve readability,as shown in the invariantassertion attribute of the Date type(see Listing 3).Quantifiers in C#ALSeveral previous papers haverecognized the relevance of quantifiersin assertions. Fortunately.NET standardizes the notion ofcollection based on the IEnumerableinterface. Furthermore, C#includes the foreach operator. So,based on these features, C#ALincludes the universal quantifier“forall” and the existential quantifier“exists”:forall (T x in C : E)andexists (T x in C : E)where T is a type, x is a variable, C isan expression denoting a collectionof returning objects of some typethat can be cast to T, and E is aBoolean expression in which thevariable x should appear.The forall operator evaluatestrue if for all x in C the expression Eevaluates to true; otherwise it evaluatesto false. The operator existsevaluates to true if at least one x inC exists such that the expression Eevaluates to true; otherwise it evaluatesto false.Both operators will throw anInvalidCast exception if the objectreturned by the iteration cannot becast to T. If you want to apply anassertion to only a subset of C, youcan use the following pattern:forall (object x in C : (x is T)=> E')where E' is the expression resultingfrom changing all occurrences of xin E by the cast (T)x.An Employee type having aproperty MyDepartment and aDepartment type having anEmployees property could have thefollowing invariants:[Invariant("forall (Employee e inEmployees : e.MyDepartment ==this)",Label = "LegalDepartment")]class Department {...}[Invariant("exists (Employee e inMyDepartment.Employees : e ==this)",Label = "Legal employee")]class Employee {...}Quantifiers are also helpful inpost<strong>con</strong>ditions and pre<strong>con</strong>ditions.For example, a Fire method of theDepartment type might have thepost<strong>con</strong>dition:[Post<strong>con</strong>dition("! exists (e inEmployees: x == e)"]public void Fire(Employee e){...}A method, AnnounceMeeting,announces a meeting date butrequires that the date will not be aholiday:[Pre<strong>con</strong>dition("forall (Date d inDate.Holidays : d !=meetingDate")]public void AnnounceMeeting(DatemeetingDate){...}The forthcoming iterator <strong>con</strong>structannounced for C# will offerbetter support for these C#AL quantifiers.About ImplementationThe assembly AssertionEngine.dll <strong>con</strong>tains all attributetypes presented in the previous sections.An application can use an assertedassembly as any ordinary .NETassembly, ignoring the assertion32September <strong>2003</strong> • dotnetdevelopersjournal.com


introductorysubscription offer!A TRULY INDEPENDENTVOICE IN THE WORLD OF .NET.NET Developer’s Journal is the leadingindependent monthly publication targeted at .NETdevelopers, particularly advanced developers. It brings.NET developers everything they need to know in orderto create great software.Publishedmonthly, .NETDeveloper’sJournal coverseverything of interest todevelopers working withMicrosoft .NET technologies– all from acompletely independentand nonbiased perspective.Articles are carefullyselected for their primetechnical <strong>con</strong>tent – technicaldetails aren’t watered down withSUBSCRIBE ONLINE!www.<strong>sys</strong>-<strong>con</strong>.com/dotnet/or Call1 888 303-5282Here’s what you’ll find inevery issue of .netdj:Security WatchMobile .NET.NET TrendsTech TipsStandards WatchBusiness Alerts.NET NewsBook and SoftwareAnnouncements.NET Developer’s Journal is for .NETdevelopers of all levels, especially those “inthe trenches” creating .NET code on a dailybasis:• For beginners:Each issue <strong>con</strong>tains step-by-step tutorials.• For intermediate developers:There are more advanced articles.• For advanced .NET developers:In-depth technical articles and columnswritten by acknowl<strong>edge</strong>d .NET experts.Regardless of their experience level, .NETDeveloper’s Journal assumes that everyonereading it shares a common desire to understandas much about .NET – and the businessforces shaping it – as possible. Our aimis to help bring our reader-developers closerand closer to that goal with each and everynew issue!lots of needless opinion and commentary.Apart from the technical <strong>con</strong>tent, expert analystsand software industry commentators keep developersand their managers abreast of the businessforces influencing .NET’s rapid development.Wholly independent of both Microsoft Corporationand the other main players now shaping the course of.NET and Web <strong>services</strong>, .NET Developer’s Journalrepresents a <strong>con</strong>stant, neutral, expert voice on thestate of .NET today – the good, the bad, and theugly…no exceptions.SAVE16%OFFTHE ANNUAL COVER PRICEGet 12 issues of .NETDJfor only $ 69 99 !OFFER SUBJECT TO CHANGE WITHOUT NOTICEANNUALCOVER PRICE:$83.88YOU PAY$69 99YOU SAVE$13.89OFF THE ANNUALCOVER PRICE


C#ALattributes in .NET will be a humblebut important step toward the goalof a trusted component scenario.This article illustrates the significanceof .NET attributes formetaprogramming. Combiningattributes with assertions opensother research areas such as thespecification of temporal <strong>con</strong>straints,component coordination,and synchronization of multithreadingapplications. We areexploring those areas. More <strong>con</strong>tributionswould be very welcome.EVERYWHEREHOMECLIENTSERVERf 2 Figure2: HTML documentation for the Stack typeattributes embedded in it.Nevertheless, an application canalso retrieve and study these assertionsfor documentation purposesand can also evaluate them to monitorthe behavior of the features targetedby the assertion attributes.For these purposes theAssertionEngine.dll includes theAssertionManager type. Usingreflection, AssertionManagerretrieves Assertion objects from theasserted assembly at runtime (theAssertion class implementsIAssertion).But developers don’t need to usethe above capabilities programmatically.A browser tool (see Figure 1)allows selection of an assembly, andlisting of the types, methods, andassertions in the assembly.The Documentation Panel generatesan HTML file (Figure 2 illustratesthe displayed HTML for theStack type).The following is a typical scenario:you are developing an applicationusing an asserted A.dll. Youcan use the C#AL browser to visualizethe assertion attributes embeddedin A.dll and check if they arecorrect. If you want to monitor theassertions, then you can use the“Build” button (see Figure 1) togenerate a trusted assembly,Trusted_A.dll, which works as aproxy to the original A, interceptingcalls to the asserted A methods andevaluating the code of the correspondingassertions. Finally, youmust rebuild your project, removingthe reference to A.dll andincluding references to the newTrusted_A.dll and to theAssertionEngine.dll. The resulting.exe file will monitor the assertion’sfulfillment.Conclusion and Further WorkUnfortunately the .NETFramework did not include anassertion mechanism from the outset.There is an Assert method in theDebug class, but it is not enough toachieve the specification goal ofassertions.The Monash group is<strong>con</strong>sidering support assertions inthe Rotor runtime.eXtensible C# (www.resolvecorp.com) includes declarativeassertions. At present this approachis less expressive than C#AL.Moreover, the C#AL browser toolallows you to insert assertions inexisting assemblies. We are alsoworking on an implementation ofassertions using CodeDom. In thiscase the Trusted_A.dll will not act asa proxy, but will embed its own Acode.Assertions are not enough tocompletely guarantee a component’squality and behavior,according to Beugnard et al. intheir article, “Making ComponentsContract Aware” [Computer, Vol. 32,No. 7]. Nevertheless, we hope thatthe proposed inclusion of assertionReferences• Beugnard, A., Jézéquel, J.M.,Plozeau, N., Watkins, D. (1999).“Making Components ContractAware.” Computer. July.• Coira, J., Katrib, M. (1997).“Improving Eiffel AssertionsUsing Quantified Iterators.”Journal of Object OrientedProgramming. Nov./Dec.• eXtensibleC# (XC#):www.resolvecorp.com• Design by Contract for Java UsingJMSAssert:www.mmsindia.com/DBCForJava.html• Fernandez, D., Katrib, M.,Pimentel, E. (1999).“Synchronizing Java ThreadsUsing Assertions.” Proceedings ofTOOLS 31st. IEEE ComputerSociety.• Katrib, M., Martínez, I. (1993).“Collections and Iterators inEiffel.” Journal of Object OrientedProgramming. Nov./Dec.• iContract: The Java Design byContract Tool:http://people.cs.uchicago.edu/~songyanf/research/<strong>con</strong>tract_paper/other/i<strong>con</strong>tract-tools98usa.pdf• Meyer, B. (1992). “ApplyingDesign by Contract.” Computer.IEEE. October.• Meyer, B. (1997). Object-OrientedSoftware Construction. 2ndEdition. Prentice Hall.• Meyer, B. (1992). Eiffel: TheLanguage. Prentice Hall.• Java with Assertions: http://theoretica.informatik.unioldenburg.de/~jawa• Support for Assertions in the RotorRuntime: www.csse.monash.edu.au/~namtt/rotor/MonashRotorProject.html34September <strong>2003</strong> • dotnetdevelopersjournal.com


LEARN WEB SERVICES. GET A NEW JOB !SUBSCRIBE TODAY TO THE WORLD’SLEADING WEB SERVICES RESOURCEGet Up to Speed with the Fourth Wave in Software Development• Real-World Web Services: XML’s Killer App!• How to Use SOAP in the Enterprise• Demystifying ebXML for success• Authentication, Authorization, and Auditing• BPM - Business Process Management• Latest Information on Evolving Standards• Vital technology insights from the nation’sleading Technologists• Industry Case Studies and Success Stories• Making the Most of .NET• Web Services Security• How to Develop and Market Your Web Services• EAI and Application Integration Tips• The Marketplace: Tools, Engines, and Servers• Integrating XML in a Web Services Environment• Wireless: Enable Your WAP Projects and BuildWireless Applications with Web Services!• Real-World UDDI• Swing-Compliant Web Services• and much, much more!The Best.NETCoverageGuaranteed!Only $69.99 for1 year (12 issues)** Newsstand price $83.88 for 1 yearSubscribe online atwww.wsj2.com orcall 888 303-5252*Offer subject to change without noticeSYS-CON Media, the world's leading i-technology publisher of developer magazines and journals,brings you the most comprehensive coverage of Web <strong>services</strong>.


EVERYWHEREC#ALMiguel Katrib is a full professor inthe Computer Science Departmentat the University of Havana andheads the WEBOO groupdedicated to Web andobject-oriented technologies. He isa member of the National DoctoralBoard in Mathematics andComputer Science and has beenhonored with the Pablo Miguelaward of the Cuban Society ofMathematics and ComputerScience. Miguel has authored threebooks and several papers onprogramming languages andobject-oriented technologies.Erich Ledesma is an undergraduateand student assistant in theComputer Science Department atthe University of Havana and is astudent member of the WEBOOgroup. He has won several prizesin student competitions. Erich’smain interests are compilingtechniques, and network andWeb programming.Leonardo Paneque is anundergraduate student in theComputer Science Department atthe University of Havana and is astudent member of the WEBOOgroup. His main interests aresecurity, Windows, andGUI programming.katribmiguel@yahoo.comerich@uh.cuHOMECLIENTSERVERl 1l 2 ListingListing 1[Invariant("Total>=0", Label = "The total itemsin a stack cannot be negative")]public interface IStack{int Total{get;}bool Empty{[Post<strong>con</strong>dition("Result Total == 0", Label= "Emptiness of a stack")]get;}bool Full{get;}[Pre<strong>con</strong>dition("!Empty", Label = "StackUnderflow")]object Top {get;[Post<strong>con</strong>dition("Top == value", Label = "TheTop changes")]set;}[Pre<strong>con</strong>dition("!Full", Label = "StackOverflow")][Post<strong>con</strong>dition("Top == x", Label = "Applying aLIFO policy")][Post<strong>con</strong>dition("Total == Total.Old + 1", Label= "Increasing the stack size")][Post<strong>con</strong>dition("!Empty", Label = "NonEmptiness")]void Push(object x);[Pre<strong>con</strong>dition("!Empty", Label = "StackUnderflow")][Post<strong>con</strong>dition("Total == Total.Old - 1", Label= "Decreasing the stack size")][Post<strong>con</strong>dition("!Full", Label = "NonFullness")]void Pop();}}2interface IAssertion{string BoolExpression {get;}string Label {get; set;}bool Inherited {get;}}abstract class AssertionAttribute:System.Attribute, IAssertion {AssertionAttribute(string CSALExpression){boolExpression = CSALExpression;}public string BoolExpression{get {return boolExpression;}}public string Label{get {return label;}set {label = value;}}public Type ExceptionRais<strong>edge</strong>t {return exceptionRaised;}set {exceptionRaised = value;}}public bool Inherited{get{return inherited ;}set{inherited = value ;}}bool inherited;string boolExpression;string label = """;Type exceptionRaised;}[AttributeUsage(AttributeTargets.Class |AttributeTargets.Struct |AttributeTargets.Interface,AllowMultiple = true)]public class InvariantAttribute :AssertionAttribute {InvariantAttribute(string CSALExpression) :base(CSALExpression){}}[AttributeUsage(AttributeTargets.Method |AttributeTargets.Property |AttributeTargets.Constructor,AllowMultiple = true)]public class Pre<strong>con</strong>ditionAttribute :AssertionAttribute {Pre<strong>con</strong>ditionAttribute(string CSALExpression) :base(CSALExpression){}}[AttributeUsage(AttributeTargets.Method |AttributeTargets.Property |AttributeTargets.Constructor,AllowMultiple = true)]public class Post<strong>con</strong>ditionAttribute :AssertionAttribute {Post<strong>con</strong>ditionAttribute(string CSALExpression) :base(CSALExpression){}}Listing 3[Invariant(@"(Year > 0) && (Day >= 1) && (Month >= 1) &&(Month (Day (Day (Day (Day


A LIMITED TIME SAVINGS OFFER FROM SYS-CON MediaSUBSCRIBE TODAYTO MULTIPLE MAGAZINESAND SAVE UP TO $400 ANDRECEIVE UP TO 3 FREE CDs!TOORDER•Choose the Multi-Pack you want to order by checkingnext to it below. •Check the number of years you want toorder. •Indicate your location by checking either U.S.,Canada/Mexico or International. •Then choose whichmagazines you want to include with your Multi-Pack order.■ Linux World MagazineU.S. - Two Years (24) Cover: $143 You Pay: $79.99 / Save: $63 + FREE $198 CDU.S. - One Year (12) Cover: $72 You Pay: $39.99 / Save: $32Can/Mex - Two Years (24) $168 You Pay: $119.99 / Save: $48 + FREE $198 CDCan/Mex - One Year (12) $84 You Pay: $79.99 / Save: $4Int’l - Two Years (24) $216 You Pay: $176 / Save: $40 + FREE $198 CDInt’l - One Year (12) $108 You Pay: $99.99 / Save: $8■ Java Developer’s JournalU.S. - Two Years (24) Cover: $144 You Pay: $89 / Save: $55 + FREE $198 CDU.S. - One Year (12) Cover: $72 You Pay: $49.99 / Save: $22Can/Mex - Two Years (24) $168 You Pay: $119.99 / Save: $48 + FREE $198 CDCan/Mex - One Year (12) $84 You Pay: $79.99 / Save: $4Int’l - Two Years (24) $216 You Pay: $176 / Save: $40 + FREE $198 CDInt’l - One Year (12) $108 You Pay: $99.99 / Save: $8■ Web Services JournalU.S.- Two Years (24) Cover: $168 You Pay: $99.99 / Save: $68 + FREE $198 CDU.S. - One Year (12) Cover: $84 You Pay: $69.99 / Save: $14Can/Mex - Two Years (24) $192 You Pay: $129 / Save: $63 + FREE $198 CDCan/Mex - One Year (12) $96 You Pay: $89.99 / Save: $6Int’l - Two Years (24) $216 You Pay: $170 / Save: $46 + FREE $198 CDInt’l - One Year (12) $108 You Pay: $99.99 / Save: $8■ .NET Developer’s JournalU.S. - Two Years (24) Cover: $168 You Pay: $99.99 / Save: $68 + FREE $198 CDU.S. - One Year (12) Cover: $84 You Pay: $69.99 / Save: $14Can/Mex - Two Years (24) $192 You Pay: $129 / Save: $63 + FREE $198 CDCan/Mex - One Year (12) $96 You Pay: $89.99 / Save: $6Int’l - Two Years (24) $216 You Pay: $170 / Save: $46 + FREE $198 CDInt’l - One Year (12) $108 You Pay: $99.99 / Save: $8■ XML-JournalU.S. - Two Years (24) Cover: $168 You Pay: $99.99 / Save: $68 + FREE $198 CDU.S. - One Year (12) Cover: $84 You Pay: $69.99 / Save: $14Can/Mex - Two Years (24) $192 You Pay: $129 / Save: $63 + FREE $198 CDCan/Mex - One Year (12) $96 You Pay: $89.99 / Save: $6Int’l - Two Years (24) $216 You Pay: $170 / Save: $46 + FREE $198 CDInt’l - One Year (12) $108 You Pay: $99.99 / Save: $8Pick a 3-Pack, a 6-Pack or a 9-Pack■ 3-Pack ■ 1YR ■ 2YR ■ U.S. ■ Can/Mex ■ Intl.■ 6-Pack ■ 1YR ■ 2YR ■ U.S. ■ Can/Mex ■ Intl.■ 9-Pack ■ 1YR ■ 2YR ■ U.S.■ Can/Mex ■ Intl.■ WebLogic Developer’s JournalU.S. - Two Years (24) Cover: $360 You Pay: $169.99 / Save: $190 + FREE $198 CDU.S. - One Year (12) Cover: $180 You Pay: $149 / Save: $31Can/Mex - Two Years (24) $360 You Pay: $179.99 / Save: $180 + FREE $198 CDCan/Mex - One Year (12) $180 You Pay: $169 / Save: $11Int’l - Two Years (24) $360 You Pay: $189.99 / Save: $170 + FREE $198 CDInt’l - One Year (12) $180 You Pay: $179 / Save: $1■ ColdFusion Developer’s JournalU.S. - Two Years (24) Cover: $216 You Pay: $129 / Save: $87 + FREE $198 CDU.S. - One Year (12) Cover: $108 You Pay: $89.99 / Save: $18Can/Mex - Two Years (24) $240 You Pay: $159.99 / Save: $80 + FREE $198 CDCan/Mex - One Year (12) $120 You Pay: $99.99 / Save: $20Int’l - Two Years (24) $264 You Pay: $189 / Save: $75 + FREE $198 CDInt’l - One Year (12) $132 You Pay: $129.99 / Save: $2■ Wireless Business & TechnologyU.S. - Two Years (24) Cover: $144 You Pay: $89 / Save: $55 + FREE $198 CDU.S. - One Year (12) Cover: $72 You Pay: $49.99 / Save: $22Can/Mex - Two Years (24) $192 You Pay: $139 / Save: $53 + FREE $198 CDCan/Mex - One Year (12) $96 You Pay: $79.99 / Save: $16Int’l - Two Years (24) $216 You Pay: $170 / Save: $46 + FREE $198 CDInt’l - One Year (12) $108 You Pay: $99.99 / Save: $8■ WebSphere Developer’s JournalU.S. - Two Years (24) Cover: $360 You Pay: $169.99 / Save: $190 + FREE $198 CDU.S. - One Year (12) Cover: $180 You Pay: $149 / Save: $31Can/Mex - Two Years (24) $360 You Pay: $179.99 / Save: $180 + FREE $198 CDCan/Mex - One Year (12) $180 You Pay: $169 / Save: $11Int’l - Two Years (24) $360 You Pay: $189.99 / Save: $170 + FREE $198 CDInt’l - One Year (12) $180 You Pay: $179 / Save: $1■ PowerBuilder Developer’s JournalU.S. - Two Years (24) Cover: $360 You Pay: $169.99 / Save: $190 + FREE $198 CDU.S. - One Year (12) Cover: $180 You Pay: $149 / Save: $31Can/Mex - Two Years (24) $360 You Pay: $179.99 / Save: $180 + FREE $198 CDCan/Mex - One Year (12) $180 You Pay: $169 / Save: $11Int’l - Two Years (24) $360 You Pay: $189.99 / Save: $170 + FREE $198 CDInt’l - One Year (12) $180 You Pay: $179 / Save: $1RECEIVEYOUR DIGITALEDITIONACCESS CODEINSTANTLYWITH YOUR PAIDSUBSCRIPTIONS3-PackPick any 3 of ourmagazines and saveup to $ 275 00Pay only $175 for a1 year subscriptionplus a FREE CD• 2 Year – $299.00• Canada/Mexico – $245.00• International – $315.006-PackPick any 6 of ourmagazines and saveup to $ 350 00Pay only $395 for a1 year subscriptionplus 2 FREE CDs• 2 Year – $669.00• Canada/Mexico – $555.00• International – $710.009-PackPick 9 of ourmagazines and saveup to $ 400 00Pay only $495 for a1 year subscriptionplus 3 FREE CDs• 2 Year – $839.00• Canada/Mexico – $695.00• International – $890.00OFFER SUBJECT TO CHANGE WITHOUT NOTICESubscribe Online Today www.<strong>sys</strong>-<strong>con</strong>.com/2001/sub.cfm


Product ReviewRich Content Rotatorfor ASP.NETEVERYWHERECompany Info:CYBERAKT Inc108 Pine Crest Rd.Toronto, ON M6P 3G5CanadaPhone: 416.622.2923E-mail:info@cyberakt.comWeb: www.cyberakt.comTest EnvironmentPentium IV 2.4GHz with512MB RAM, WindowsXP Professional withService Pack 1PricingFree Trial Version (withrendering warning)Application Edition: $79Developer Edition: $199Corporate Site Edition:$1,199BY ANANDNARAYANASWAMYHOMECLIENTSERVERw eb developers are alwayson the lookout for greatproducts to add dynamic effects totheir Web pages. Dynamic pages,often called DHTML pages, makeuse of slide shows, random <strong>con</strong>tentrotation, and news scrollers, and aregenerally developed using languagessuch as Visual Basic, Java,JavaScript, and VBScript. Manydevelopers also use MacromediaFlash and other animation tools.Although it is possible to createdynamic pages with these languages,developers face many challenges,such as cross-browser compatibilityissues, complex code, highmaintainability requirements, andslow loading.Classic ASP supplied the AdRotator component for developingDHTML applications, but it doesn’tprovide the required functionality.What is needed is a product withgreat features and functions thatrequires less maintenance.Developers realized that only eventdrivencomponents can provide thisadded functionality. Componentsare reusable <strong>con</strong>trols that can bedeployed as a single unit. Such componentsmay <strong>con</strong>tain several thousandlines of code, including complexmethods or functions.Developers don’t need to knowhow these components weredesigned and developed; they needonly know how to use and applythem to their Web pages. Manydevelopers began developing <strong>con</strong>trolson their own using Visual Basic6.0 or Visual C++ 6.0. But most werehesitant to implement such <strong>con</strong>trolsfor several reasons, including security<strong>con</strong>cerns and rendering issues.Such components are known asActiveX components; in order to usethem, users have to enable ActiveXon their browsers. Many beginningusers were unaware of this andhence the display of these pageswas affected to a large extent. Thisscenario has completely changedwith the evolution of .NET. Now,many vendors offer componentsthat can be used to perform a widevariety of tasks, simplifying the workof many developers and customers.Rich Content Rotator, one of themost useful and robust components,was developed by CYBERAKTInc. (www.cyberakt.com). With RichContent Rotator, you can createdynamic scrollers and tickers on thefly. It comes with four differentlicensing options, explained in thePricing section. The real data comesfrom either an XML file or a SQLServer database. The main advantageof this component is that youdon’t have to reinvent the wheel inorder to develop animated Webpages. Everything is built into it.Once you understand its usage, therest of the work is pretty simple andstraightforward.I tested the product on aPentium IV 2.4GHz with 512MBRAM <strong>sys</strong>tem running Windows XPProfessional with Service Pack 1.The entire download (www.rich<strong>con</strong>tentrotator.com/download.aspx)took 5–10 minutes. Note: This mayvary depending upon your <strong>con</strong>nectionspeed. The product comes as asingle executable file namedFrom CYBERAKT Inc.RichContentRotator_setup.exe,which is around 953KB.Once you have downloaded thefile, run its setup to install the product.Installation normally takes lessthan two minutes, but it dependsupon your <strong>sys</strong>tem <strong>con</strong>figuration. Iencountered no problems duringinstallation. You have to enter theappropriate license key whenprompted to <strong>con</strong>tinue the installationprocess. If you have downloadeda free trial version you willoccasionally get demo warnings.The product folder, namedRichContentRotator, will beinstalled in the Program Files folderof your root drive. Inside this folderyou will find a file namedRichContentRotator.dll. This file isthe component; it <strong>con</strong>tains all of themagic. The component comes witha readme file <strong>con</strong>taining importantinformation but unfortunately thisfile isn’t found on the Start menuafter installation. The product alsoships with a lot of sample applicationsand demos that you can freelyuse in your own projects.All Web Forms (.aspx) and XMLfiles of the sample applications arenicely organized in folders, but theyare not installed by default. Youhave to manually install them byrunning the RichContentRotator_examples.msi file. The sample filesare installed in the virtual directory,RichContentRotator, inside theInetpub/wwwroot directory andhence you can access them by supplyingthe URL http://localhost/RichContentRotator.The product also includes a38September <strong>2003</strong> • dotnetdevelopersjournal.com


small tutorial, which from my pointof view is a real bonus for developersand customers. CYBERAKT'sWeb site displays live demos(www.rich<strong>con</strong>tentrotator.com/demo_simpleNews.aspx) of the examplesused. You can access the codeon the pages themselves. You simplyneed to copy and paste the codeusing a text editor such as Notepad.I copied the code directly to theVisual Studio .NET editor, but someweird characters were pasted ininstead of the actual code. It’s betterto copy the code to Notepad andthen to VS.NET. I did this and itworked well.Now let’s look at how to applythis <strong>con</strong>trol in an ASP.NET page. Iused Visual Studio .NET <strong>2003</strong> FinalBeta to test the product. You canalso use Visual Studio .NET 2002 orASP.NET Web Matrix. If you useNotepad you have to enter all thecode from scratch, which will be atedious process. But I enjoy it. First,I suggest you copy the DLL file tothe Common7/IDE directory. Youwill find this folder inside the VisualStudio .NET installation folder. Afterfiring up Visual Studio .NET, youhave to add the component to theToolbox. This can be done by rightclickingon it and selectingAdd/Remove Items. Click on thebrowse button, then locate andselect the RichContentRotator.dllfile. Finally, click the Open and OKbuttons. If all goes well you will findtwo components namedContentRotator and Ticker in theToolbox. The next step is to place aninstance of the component on theform and set the various propertiessuch as RotationType, Scroll-Direction, etc. Take a moment toscan through all the properties ofthe component. If you are a VisualBasic programmer, you will have nodifficulty understanding them. As Iexplained above, the real datacomes from an XML file and hencethe XmlContentFile property is veryimportant.Even though all the demosshipped with the product are useful,I will show you how to write a sampleprogram using this component.As you may know, Visual Studio.NET automatically adds the relevantcode for a component as soonas you place it on the form. But youdotnetdevelopersjournal.com • September <strong>2003</strong>have to dress it up by adding aSlideTemplate. This templatedefines the look and feel of thecomponent by using the data bindingsyntax. If you have worked withADO.NET, you already know aboutthe syntax of the data-binding code.The complete code for the sampleprogram I used for testing is shownin Listing 1, available for downloadfrom www.<strong>sys</strong>-<strong>con</strong>.com/dotnet/sourcec.cfm.That’s all there is to it. Press F5 tocompile and run the program. Ifthere are no errors or warnings youshould be able to see the scrolling ofthe data. If you want to add moredata, you can do this by simplyupdating the relevant XML file.Visual Studio .NET automaticallyopens the browser upon successfulcompilation. Keep in mind that theloop executes <strong>con</strong>tinuously bydefault. Once you have successfullycreated a sample program as illustratedabove you can freely modifythe various settings from the propertieswindow, activated by pressingF4.Try to change some of theimportant properties such as Loop,RotationType, ShowEffect, andScrollDirection. For example, modifythe ShowEffect property to Fadeand observe the result. But beforedoing this you should change theRotationType property to SlideShowfor maximum results. I hit F5 tocompile and run the programwhenever I change any property.The main advantage of using VisualStudio .NET is its simplicity whensetting the various properties. If youuse Notepad then you have to knowthe various properties of the component.I strongly recommend thatyou download and install ASP.NETWeb Matrix if you don’t have VisualStudio .NET. I also tested the productusing ASP.NET Web Matrix andnoticed slightly different resultswhile adding the DLL to theToolbox.The product also ships withanother component, named“Ticker”. It can be used for creatingnews scrollers, displaying sportsscores, etc. Instead of an XML file,you can directly supply the <strong>con</strong>tentwith Ticker’s Text property. The codefor the Ticker component is shownbelow:I discovered that theContentRotator and Ticker componentscan be easily integrated into asingle application in order to utilizethe functionality of both. In thatcase the real data for the Ticker’sText property comes from an XMLfile and you can apply it by usingthe data-binding technique I discussedearlier. The vendor’s Web sitedisplays a working demo (www.rich<strong>con</strong>tentrotator.com/demo_tickerSequence.aspx) of this feature.Unfortunately, the productdoesn’t come with documentationin HTML Help Format (.chm file).Many developers and customersprefer this format because it helpsthem to easily navigate betweentopics. Among other things, a helpfile should also clearly explain thevarious properties of the two componentsand their values so that itwill benefit those customers anddevelopers using plain Notepad. Ihope the vendor will include thisin the next release of the product.I must say that the current documentation<strong>sys</strong>tem is nearly perfectsince it provides all of the files for thesample applications. CYBERAKT alsoprovides online support, along with afree newsletter subscription so thatyou will always be updated when anew release of the product occurs.The vendor’s Web site says that onceyou purchase the current version ofthe component, you will get a licensefor all the future 1.X versions of theproduct at no additional charge. Thecurrent license key will be valid forthe upcoming versions also.Anand Narayanaswamy is a Microsoft Most ValuableProfessional in Visual C# and an independent<strong>con</strong>sultant based in Trivandrum, India. He divides histime between writing, programming, and training.Anand runs learnXpress.com and specializes in ASP,ASP.NET, C#, Visual Basic 6.0, and Visual Basic .NET;and in the development of courseware, technical articles,documentation, and reviews of products andbooks.anandnswamy@hotmail.com39


Installer ShootoutWise forVisual Studio .NETBuild robust, reliableinstallation routines for your appsEVERYWHERECompany InfoWise Solutions, Inc.47911 HalyardPlymouth, MI 48170Web: www.wise.comPhone: 734.456.2100Fax: 734.456.2345E-mail: info@wise.comTest EnvironmentVisual Studio .NET<strong>2003</strong>, Windows XPSP1, Microsoft .NET1.1; 1GB RAM, 1.9GHz Pentium IVBY ROB HARROPHOMECLIENTSERVERperhaps the most important,yet most overlooked,area of applicationdevelopment is thatof deployment. A flawed installation,or worse – one that corruptsother applications – does not instillfaith in your software and makes forvery unhappy clients. Having beenin this situation myself, I took thetime to investigate the various utilitiesavailable for creating WindowsInstaller–based setup applications.While at a trade show one day, Imanaged to get hold of a couple ofevaluation copies of the most popularinstallation products. On myflight back across the Atlantic I hadthe chance to come to grips with thevarious products, and by the time Ilanded back in the UK, my mindwas made up to use Wise forWindows Installer.Since then my job has becomefocused predominately on .NETdevelopment and I find myself witha couple of new challenges. I am nolonger faced with DLL versioningproblems, and I rarely need to <strong>con</strong>figurethe registry when I deploy a.NET application, so to all intentsand purposes I could just useXCOPY deployment and be done.Alas, no. It seems my clients likedesktop shortcuts, file associations,and i<strong>con</strong>s in the Start menu, so Ihave found myself again returningto the Wise Installer, in its latestincarnation fully integrated withVisual Studio .NET.Windows ApplicationsI use .NET because it is quick. Ifa client calls up and says “Hey, Ineed a new billing application fornext week,” the chances of me sittingdown with Visual C++ are slim.Visual Studio .NET is a big <strong>con</strong>tributorto this productivity gain, and,thankfully, Wise for Visual Studio.NET is completely integrated intothe IDE, so this gain is carriedthrough into installer applications.When deploying Windows applicationsI can build an installer routinein about an hour using Wise forVisual Studio .NET. My project filesare automatically synchronized withthe output from my Windows Formsprojects, meaning that I can be perfectlysure I am sending the latestversion to my client.With a couple of mouse clicks, Ican add external files, as well as createshortcuts on the desktop and inthe Start menu. On the rare occasionthat I need to create Registryentries for my application, Wiseallows me to either create Registrykeys manually or to copy the keysfrom my development environment.Creating file associations for anapplication is just as simple, aseverything in Wise for Visual Studio.NET is driven by a simple menubasedinterface.The feature that annoys me themost about Visual Studio .NET is itsinability to deploy the .NETFramework with an application.With Wise for Visual Studio .NET,this is no longer a problem. I cansimply select the version of the.NET Framework I want to include,either 1.0 or 1.1, and which build ofthe specific version I require. Wisefor Visual Studio .NET will thendynamically download the requiredEXE and include it in the finalsetup file.Web ApplicationsIn the past, when I developed aWeb application, I wouldn’t dreamof building an installer for it – afterall, it was simpler to just do it manually.That is, of course, until thecustomer calls to tell you he accidentallybroke the server and needsa reinstall. Having had good experiencesbuilding installers forWindows applications in Wise forVisual Studio .NET, I decided toforay into building an installer foran ASP.NET application.Thankfully, building an installerfor this kind of application is just assimple as building one for aWindows application. Building anASP.NET installer using Wise forVisual Studio .NET gives me full <strong>con</strong>trolof the IIS virtual directory on thetarget <strong>sys</strong>tem, relieving me of anydependencies on the administratorat the client site. I can even verifythat they have the correct version ofIIS installed, handy for those clientswho can’t tell the difference betweenWindows NT 4.0 and Windows <strong>2003</strong>.No ASP.NET application wouldbe complete without a shiny newSQL Server database to store all itsdata. New to this version of Wise forVisual Studio .NET are the SQLServer installer tools, which allow adeveloper to execute SQL scriptsagainst a target database. This is myfavorite feature because I can loadthe schema into Wise for VisualStudio .NET directly from my developmentdatabase, including anydata that needs to be prepopulatedin the database – something thatgoes way beyond the built-in scriptingfeatures of SQL ServerEnterprise Manager.40September <strong>2003</strong> • dotnetdevelopersjournal.com


Features for the EnterpriseOne of the biggest problems Iface when deploying an applicationto my clients is ensuring that itdoesn’t <strong>con</strong>flict with any otherapplications on the client’smachine. With the introduction ofthe new Enterprise Edition, Wisehas brought a full set of installationmanagement tools directly into theVisual Studio .NET IDE. Using theWise Software Repository you canstore details of the components andshared resources of your applicationsin a central database, which isthen accessible by all developersrunning Wise for Visual Studio .NET.Wise for Visual Studio .NET usesthe Wise Software Repository tocompare the components andresources for your applicationagainst applications stored in therepository. Using this data, Wisehighlights any possible <strong>con</strong>flictsthat may occur, allowing you to fixthem before you release your application.An important feature of WiseSoftware Repository is the ability togroup your applications so that testingtakes place against a specificgroup of applications as opposed toevery application in the repository.In my company we have groupedour applications by client, but youmay choose to group them bydepartment in your own enterprise.To allow for compatibility withapplications across the enterprise,Wise can import the setup.exe filefor any application and have it analyzedand included in the repository.I use this functionality all the time,importing my clients’ commonlyused applications into the repositoryso I can test for compatibilitybefore I deploy.With Software Manager, I caneasily manage and organize theapplication data stored within theWise Software Repository. SoftwareManager, which launches fromdirectly within Visual Studio .NET,allows me to import and deleteapplications within the WiseSoftware Repository, as well as createand manage application groupings.This process takes very littletime, but has saved me countlesshours during deployment.Using Software Manager you cangenerate reports about the shareddotnetdevelopersjournal.com • September <strong>2003</strong>files and registry entries across yourenterprise or on an application-byapplicationbasis. These reports areinvaluable to developers, as theycan be made fully aware of the target<strong>sys</strong>tem layout before they startcoding, thereby saving time andmoney on expensive recodingefforts at a later date. I have evenstarted to use these reports to placatewary administrators at theclient site who are worried aboutapplication compatibility.ConclusionWise for Visual Studio .NET ispacked with features to help youbuild robust, reliable installationroutines for your applications. Thefocus is definitely on simplicity, butwith a full MSI database editorincluded, this application is notwithout features for the power user.Using this product benefits not onlythose wishing to distribute traditionaldesktop applications, but alsothose wishing to deploy distributedapplications based on technologiessuch as ASP.NET and Web <strong>services</strong>.You can create installations forSQL Server database, Web applications,Windows clients, and evenmobile clients running on WindowsCE or Palm OS. With 90% of theinformation needed for yourinstaller being drawn directly fromyour development environment,creating a set of installers like thistakes no more than an hour. Whatmakes it so much better is that, ifyour Wise Software Repository is upto date, then testing your applicationfor compatibility is simple.Wise also offers an Enterpriseversion of Wise for WindowsInstaller, which is nonintegrated andcan be used by .NET developers whoare not using Microsoft Visual Studio.NET for their development.Rob Harrop is lead software architect for UK-basedsoftware house Cake Solutions Limited. CakeSolutions Limited specializes in creating large-scaleapplications in both Microsoft .NET and J2EE, andhas high-profile clients in both the UK and the U.S.rob@cakesolutions.net41


Installer ShootoutInstallShield Developer 8.0EVERYWHERECompany InfoInstallShield SoftwareCorp.900 National ParkwaySuite 125Schaumburg, IL60173-5108Phone: 847.466.4000Web:www.installshield.comE-mail: sales@installshield.comTest EnvironmentVisual Studio .NET<strong>2003</strong>Windows XPProfessionalDell Latitude 640PricingFull product: $1,199Upgrade from existingDeveloper orProfessional: $599Upgrade fromExpress: $899BY DEREKFERGUSONHOMECLIENTSERVER42Easy-to-use product supports a mind-boggling range of featuresiam in love! Of all theproducts I have had thepleasure to review as editor-in-chiefof .NETDevelopers Journal, InstallShieldDeveloper has gone the furthesttoward reaffirming my faith in thesoftware development industry.Installing the product was a snap,learning to use it was a breeze, andthe range of features it supports isabsolutely mind-boggling.My experience began with a 10-minute download of the evaluationversion of the product from theInstallShield Web site www.installshield.com/downloads/e.asp?prod=wind&pver=wind800e&lan=english&xmlUse=. The file was about159MB in size and I am on a relativelyslow ADSL <strong>con</strong>nection, so this seemedabout right. Once the file was downloadedI was able to complete theinstallation in just a few minutes byrunning through the installer andaccepting all of the defaults.Before accepting the defaults, I investigatedsome of the other installationoptions and was a little disappointedwith the old version numbers of some ofthe technologies that were bundledalong with the installer. For example,MDAC 2.6 was on the list and Jet(Microsoft’s Access database engine) wason the list, but MSDE was nowhere to befound. Immediately after finishing myinstallation, however, the automatic softwareupdate feature found that MDAC2.7 and MSDE 2000 were both availableas freely downloadable updates for theapplication, so my enthusiasm returnedat once to its previous level!This support for automatic updatesis, perhaps, one of InstallShieldDeveloper’s most appealing features.With just a few clicks of the mouse,administrators and developers can addfeatures to their installers that willallow them to automatically remain upto date by having them query a predeterminedInternet location at regularintervals for software updates andpatches. For organizations that don’twish to add the complexity of maintainingthese Internet update sites,InstallShield offers a service that willdo this for them. The choice is leftpurely up to the administrator ordeveloper building the installer.The first way that I tried usingInstallShield Developer was via itsintegration with Visual Studio .NET<strong>2003</strong>. As shown in Figure 1,InstallShield Developer adds an“InstallShield Developer Projects”entry to the Visual Studio ProjectTypes list. Within this list there areseveral specific types of projects thatcan be created. Given my personalfocus on mobility technologies, thefirst type I played around with wasthe “Smart Device Setup Project.”Developers familiar with theprocess of manually hacking togetherCAB files to distribute their .NETCompact Framework applications willfind InstallShield Developer’s GUI supportfor these same features tremendouslyappealing. I particularly liked theproduct’s out-of-the-box abilities to:• Bundle the .NET CompactFramework• Create shortcuts• Add entries to the Windows CEregistryOnce I was finished playingaround with the .NET CompactFramework support, I exited VisualStudio .NET and started up thestand-alone instance of Install-Shield Developer. Probably thebest way for a novice InstallShielduser to become familiar with theproduct is by using the ProjectWizard, and this is exactly what Idid. In less than 15 minutes, Ihad created a fully functionalf 2installer for a fairly sophisticatedstand-alone .NET executableusing just this tool. ItFigurewas exceptionally easy to use.f 1Figure 1: InstallShield Developer adds an“InstallShield Developer Projects” entryto the Visual Studio Project Types listWhen the Project Wizard finishes,you are dropped into the full IDE forInstallShield Developer, with yournewly created project already open.It was at this point that I beganfamiliarizing myself with the vast listof options and settings that can be<strong>con</strong>figured, as shown in Figure 2. Inaddition to the desktop and serverequivalents of the options describedabove, a developer can use these settingsto <strong>con</strong>figure such things as:• ODBC drivers and settings• INI file entries• Environment variables• IIS settingsAfter spending acouple of days creatingand tweaking afew sampleinstallers, I was leftwith a single,extremely positiveoverall impression ofInstallShieldDeveloper’s capabilities:If you can’t dosomething withInstallShieldDeveloper 8.0, you’reprobably doing itwrong!2: InstallShield Developer offersa vast list of options and settings thatcan be <strong>con</strong>figuredSeptember <strong>2003</strong> • dotnetdevelopersjournal.com


DELIVERING .NET, JAVA, XML, AND MAC OS X TECHNOLOGIESOwned and Produced by:International Web Services Conference & ExpoWeb Services Edgeg• Take in tutorialscovering .NET &Web <strong>services</strong>• Listen tosuccess stories• Evaluate casestudies & bestpractices• Experiencehands-on labsSEPT. 30 -- OCT.2, <strong>2003</strong><strong>2003</strong> WESTSanta Clara, CaliforniaEvent Sponsors:Media Sponsors:VermeulenCTO3rd AnnualREGISTERTODAY!CALL 201-802-3058www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong>SAVERegister by September 5th andUpToMageeVP, Oracle 9i$200KEYNOTE SPEAKERSEducation Sponsors:LitwackSenior VPSchmidtVP, Systems IntegrationSPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>


SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>FEATURES & ATTRACTIONS3 Days Packed with Education and TrainingKeynotes & Panel Discussions from Industry Leaders60 Hard-hitting and Informative SeminarsFREE Web Services Workshop Presented by OracleFREE .NET Tutorial with Microsoft’s Russ’ Tool ShedJava University Certification TrainingIndustry-Leading Certification ProgramsFREE IBM Web Services Tutorial“Birds of a Feather” DiscussionsRound Table DiscussionsOpening Day Welcome ReceptionSAMS Meet the Authors Hot Topics LoungeCompelling Case Studies & Best PracticesHands-On LabsFeatured Product DemonstrationsExhibit Floor featuring more than 40 companiesand hundreds of productsReal-time SYS-CON Radio InterviewsSEPT. 30 ---OCT. 2, <strong>2003</strong>Santa Clara Convention CenterFor more information visitwww.<strong>sys</strong>-<strong>con</strong>.comor call201802-3069Java and Java-based marks are trademarks or registered trademarks of Sun Micro<strong>sys</strong>tems, Inc., in the United States and other countries. SYS-CON Publications, Inc., isindependent of Sun Micro<strong>sys</strong>tems, Inc. All brand and product names used on these pages are trade names, service marks or trademarks of their respective companies.CEOCTOCIOIT DirectorProject ManagerWHOSHOULDATTENDSoftware DeveloperSoftware EngineerDevelopment ManagerApplication DeveloperTechnical DirectorAnalyst/ProgrammerIT ManagerTechnical ArchitectTeam LeaderSoftware Consultant


SPECIALDISCOUNTSAVAILABLEKEYNOTES & HIGHLIGHTED SPEAKERSAllan VermeulenCTO, Amazon.comSept. 30 10:00 a.m.“Web Services Foundations”Allan Vermeulen, CTO and vice presidentat Amazon.com, directly overseesthe Platform Technologies group. Thisgroup is responsible for guidingAmazon.<strong>com's</strong> technology architecture,including building and acquiring foundationalcomponents. Prior to his moveto Amazon.com, Vermeulen was CTOand vice president of development atRogue Wave Software. He holds a PhDin <strong>sys</strong>tems design engineering from theUniversity of Waterloo.Jon BosakDistinguished Engineer, SunMicro<strong>sys</strong>temsJon Bosak organized and led theW3C working group that createdthe XML specification and thenserved for two years as chair ofthe W3C XML CoordinationGroup. At Sun, where he holdsthe title of DistinguishedEngineer, Mr. Bosaksponsors projects intended toadvance XML technology. He iscurrently chair of the UniversalBusiness Language (UBL)Technical Committee of OASIS.Hotel & TravelReserve Your Hotel Room NowAt The Westin Santa Clara!The Official Conference Hotel ofWeb Services Edge West <strong>2003</strong>The Westin Santa Clara5101 Great America ParkwaySanta Clara, CA 95054Arrangements have been made with theWestin Santa Clara, which is <strong>con</strong>venientlylocated at The Santa ClaraConvention Center. Specially reducedrates have been secured at this luxury,full-service hotel.Single Occupancy Room: $165.00Double Occupancy Room: $165.00John MageeVice President,Oracle9i Application Server, OracleOct. 1 10:00 a.m.“J2EE Development on the Grid”John Magee is vice president of Oracle9iApplication Server and Oracle9i DeveloperSuite at Oracle. Mr. Magee has over 14 yearsof experience in the enterprise softwareindustry and has held positions in productdevelopment, product management, andproduct marketing. In his current role, hemanages technical product marketing forOracle’s application server and developmenttools products, and is responsible for evangelizingOracle technology initiatives aroundJ2EE, XML, and Web <strong>services</strong>.Dave ChappellVP, Chief Technology Evangelist,Sonic SoftwareDave Chappell is the vice presidentand chief technology evangelistfor Sonic Software. He hasmore than 18 years of industryexperience building softwaretools and infrastructure forapplication developers, spanningall aspects of R&D, sales, marketing,and support <strong>services</strong>. Davehas also been published innumerous technical journals,and is currently writing a seriesof <strong>con</strong>tributed articles for JavaDeveloper’s Journal.All rooms are quoted exclusive of applicablestate and local taxes which arecurrently 9.5% as well as the CaliforniaState Tourism Tax of 0.045%. The aboverates are group rates and are availablefor Web Services Edge <strong>2003</strong> delegates,over the show dates of September 28 –October 3, <strong>2003</strong>, only.To learn more about The Westin SantaClara you can <strong>con</strong>tact the hotel directlyor you can make your reservations bycalling Expo Travel International at(800) 829-2281 or (201) 444-0060(direct). Fax reservations to (201) 444-0062. Credit card information isrequired to guarantee reservations andexpedite <strong>con</strong>firmation. Confirmationswill be mailed directly from the hotel,David LitwackSenior Vice President,WebApplication DevelopmentProducts, NovellSept. 30 2:00 p.m.“Business Integrationand IT” Keynote PanelDavid A. Litwack is senior vice president ofWeb Application Development Products,responsible for the development andadvancement of Novellís secure Web <strong>services</strong>strategy. Mr. Litwack assumed his currentposition in July 2002 following Novellísacquisition of SilverStream Software, a companyfor which Litwack had served as presidentand CEO since 1997.Anne ThomasManesResearch Director, Burton GroupAnne Thomas Manes is a researchdirector at Burton Group, aresearch, <strong>con</strong>sulting, and advisoryfirm. Anne leads researchfor the Application PlatformStrategies service. Named one ofNetworkWorld's “50 Most PowerfulPeople in Networking” in 2002, andone of Enterprise Systems Journal's“Power 100 IT Leaders” in 2001,Anne is a renowned technologist inthe Web <strong>services</strong> space. Anne participatesin standards developmentat W3C and OASIS.time permitting. All changes and cancellationsshould be made directly throughExpo Travel International.To make online reservations:www.expotravel.com by September 12,<strong>2003</strong>.Reservations received after September12, <strong>2003</strong>, will be accepted on a spaceavailablebasis only, at the special rate,if available.Contact Information:The Westin Santa Clara Reservations:Tel: 408 986-0700Fax: 408 980-3990Take advantage of the Early Bird and Preregistration values available right now, orsave even more with a group of 5 or more. For special group discounts <strong>con</strong>tactMichael Lynch at mike@<strong>sys</strong>-<strong>con</strong>.com, or by phone at (201) 802-3058.John SchmidtLeader of Systems Integrationand Middleware, Best Buy Co.Sept. 30 2:00 p.m.“Business Integrationand IT” Keynote PanelJohn Schmidt is the chairman of theMethodology Committee for the EAIIndustry Consortium and leader of <strong>sys</strong>temsintegration and middleware at BestBuy Co., a leading specialty retailer of<strong>con</strong>sumer electronics, personal computers,entertainment software, and appliances.Marc FleuryPresident, JBossMarc Fleury, PhD, is chief technicalofficer for Telkel, Inc. He isthe leader of the JBoss project(www.jboss.org), which is anopen source EJB server. Marc isbased out of Sili<strong>con</strong> Valley andfounded the project upon leavingSun Micro<strong>sys</strong>tems. He wasone of the main developersbehind JBoss 1.0 and 2.0. Marcis the “keeper” of the project. Hefounded the Jboss Group, acompany regrouping the elitedevelopers of Jboss to <strong>con</strong>sultaround Jboss.Hotel Arrangements Are EasierThan Ever! You have your choice –<strong>con</strong>tact the hotel directly or call us.The Official Conference travel agent,Expo Travel International.Official Conference Travel Agent:Expo Travel InternationalToll Free: (800) 829-2281Tel: (201) 444-0060Fax reservations to (201) 444-0062Driving Directions to Westin SantaClara from San Jose Airport:Highway 101 North. Exit at GreatAmerica Parkway/Bowers. Turn Rightonto Great America Parkway; hotel isabout 1.5 miles down on the right side.PRODUCED BYSPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>


SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>Conference at-a-GlanceTUESDAY, SEPTEMBER 30WEDNESDAY, OCTOBER 1THURSDAY, OCTOBER 28:00AM – 4:00PM9:00AM – 9:50AM10:00AM – 10:50AM11:00AM – 6:00PM2:00PM – 2:50PM3:00PM – 3:50PM4:00PM – 4:50PM5:00PM8:00AM – 4:00PM9:00AM – 9:50AM10:00AM – 10:50AM11:00AM – 4:00PM2:00PM – 2:50PM3:00PM – 3:50PM4:00PM – 4:50PM5:00PM – 6:00PM8:00AM – 4:00PM9:00AM – 9:50AM10:00AM – 10:50AM11:00AM – 11:50AM12:00PM1:00PM – 1:50PM2:00PM – 2:50PM3:00PM – 3:50PM4:00PM – 5:00PMREGISTRATIONJAVAThe Next Phase in Evolution of J2EEDeveloping Applicationswith SWTUsing WSE 2.0.NETKeynote - “Web Services Foundations” - Allen Vermeulen, CTO and Vice President, Amazon.comEXPO OPENKeynote Panel Discussion - Business Integration and i-TechnologyAnt Applied in “Real World”Web ServicesOPENING NIGHT RECEPTIONREGISTRATIONEmpowering Java and RSS for BloggingUsing the Mobile Internet ToolkitIntroduction to ROTORMorning Keynote - “J2EE Development on the Grid” - John Magee, Vice President, Oracle9i, OracleEXPO OPENJUnit: Testing Your Java with JUnit Using Portable .NET WS-BPELWEB SERVICESWeb Services ManagementWeb Services OrchestrationID, Please. The Case for Giving WebServices an IdentityJDK1.5: The Tiger ASP.NET with Mono UDDI: Dead or Alive?Squeezing Java Using WSE with IBM’s Web Services Tool Kit Web Services Choreography, Management, andSecurity - Can They Dance Together?REGISTRATIONLeveraging AOP in JBossTechnical KeynoteLUNCHSmart Devices in the EnterpriseKeynote Panel Discussion - Interoperability: Is Web Services Delivering?Success Story: Eiffel, .NET, and Design byContract for the Financial IndustryBuilding Interoperable Web Services UsingWS-I Basic ProfileStrategies for Securing Web ServicesApache Axis .NET IDE’s Web Services Progress ReportMeeting the Challenges of J2MEDevelopmentWindows SharePoint ServicesKeynote Panel Discussion - Summit on Web Services StandardsThe Seven Habits of Highly EffectiveEnterprise Service Buses (ESBs)Simplifying J2EE Applications BizTalk 2004 See www.<strong>sys</strong>-<strong>con</strong>.com for more informationIntegrating Java + .NET See www.<strong>sys</strong>-<strong>con</strong>.com for more information See www.<strong>sys</strong>-<strong>con</strong>.com for more information4REGISTER BY SEPTEMBER 5th—SAVE UP TO $200


XMLIntroduction to XformsSecuring Your XML andWeb Services InfrastructureUBL - The Universal BusinessLanguageStandards-Based EnterpriseMiddleware Using XML/WebServicesXML and EnterpriseArchitecture: TechnologyTrendsUsing XML SchemasEffectively in WSDL DesignCanonical Documents forYour Business: DesignStrategiesXML and the Fortune 500XML at Work in ‘Fortune500’ CompaniesXML Schema Best PracticesSee www.<strong>sys</strong>-<strong>con</strong>.com formore informationSee www.<strong>sys</strong>-<strong>con</strong>.com formore informationMAC OS XIntroducing OS X(Panther) What's New?Programming Rich UserInterfaces Using CocoaQuick ApplicationsUsing AppleScriptJava and OS X: A Perfect MarriageEnterprise Java and OS XDeveloping Web Services Using WebObjectsCocoa, Carbon, Java: Application Frameworksfor OS X (When to Use What)Securing OS X ApplicationsXserve: Ease of OS Xand Power of UnixOS X for the Unix DeveloperIntroducing Quartz: 2DGraphics for AppleSee www.<strong>sys</strong>-<strong>con</strong>.com formore informationPROGRAM SUBJECT TO CHANGEFREEwww.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> • 201-802-3058Web Services Workshoppresented bySHARPENYOURSKILLS,DEVELOPYOURCAREEROctober 1, <strong>2003</strong>Web <strong>services</strong>? You’ve read all the ins and outsabout it. You think you have the <strong>con</strong>ceptspretty well figured out. Now you are not surewhere and how to start developing your firstWeb service. Get the answer at this free Web<strong>services</strong> workshop offered by Oracle as part ofits Oracle Developer Days roadshow!Oracle’s workshop is specifically designed to getyou started with your first Web service project,with a combination of presentations andhands-on labs that take you deep into thetechnology and let you put in action whatyou’ve learned. Oracle’s experts will be availablethroughout the workshop to answer all yourquestions and assist you while you are goingthrough the labs.The workshop gives tips and techniques on how best to develop and deployWeb <strong>services</strong> and addresses topics such as RPC and Document Style Web<strong>services</strong>, static and dynamic invocation, stateless Web <strong>services</strong> and more.The se<strong>con</strong>d part of the workshop is dedicated to the new J2EE API for Web<strong>services</strong> available as part of J2EE 1.4.Going through the hands-on labs at your own pace, you will learn how topublish a Java class as a J2EE stateless or stateful Web service, publish a sessionEJB as a J2EE Web service, and publish a J2EE Web service using JAX-RPC.Space is LIMITED to the first 100 attendees. Register now for this FREEworkshop. Computers will be provided by the Oracle Developer Days teamwith all the necessary software, so there’s no need to bring your own computer.AGENDA7:30-8:00 am – Registration8:00-9:00 am – Session #1 – Best Practices for Web Services Development &Deployment9:00-10:00 am – Lab #1 – Publish a Java Class as a J2EE Stateless or StatefulWeb Service10:00-10:50 am – John Magee, VP, Oracle – Keynote (BREAK)11:00 am-12:00 pm – Expo Floor Time12:00-1:00 pm – Session #2 (WORKING LUNCH) – J2EE APIs for Web Services1:00-2:00 pm – Lab #2- Publish a Session EJB as a J2EE Web Service2:00-2:30 pm – Expo Floor Time (BREAK)2:30-3:00 pm – Lab #3- Publish a J2EE Web Service Using JAX-RPCPRESENTERSArun Srinivasan, Director of Product Management, Java Tools,OracleRob Clark, Director of Product Management, J2EE, OracleMike Lehmann, Product Manager, Web Services, Oracle9iAS and Oracle9iJDeveloper, OracleFREE Oracle Tutorial when you register for a VIP PassGuarantee your seat when you register for a Full Conference PassRegister Online atwww.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong>5SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>


SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>.NET Track.NET TrackPresentations will explorethe Microsoft .NET platform forWeb <strong>services</strong>. To theaverage developer, it represents an entirely new approachto creating software for the Microsoft platform. What’smore, .NET development products – such as Visual Studio.NET – now bring the power of drag-and-drop, GUI-basedprogramming to such diverse platforms as the Web andmobile devices.Sessions will focus on:ASP.NETSecurityVB.NET.NET and XMLSmart Device Extensions for VS.NETBest PracticesShared Source CLI.NET RemotingSmart Devices in Health Care SettingsMobile Internet ToolkitROTORPortable .NETASP.NET Using MonoUsing WSE with IBM’s WSTKGUI Applications Using MonoPortals – Windows SharePoint Services/SharePointPortal ServerWindows Server <strong>2003</strong> and IIS 6.NET and Java InteroperabilityDistributed .NET for Financial ApplicationsDeveloping C# with Eclipse(NT1) Using WSE 2.0JOHN BRISTOWE, EMPOWERED SOFTWARE SOLUTIONSTuesday, September 30, 9:00 a.m. - 9:50 a.m.Web Services Enhancements for Microsoft .NET (WSE) v2.0 is a class library that augmentsthe .NET Framework to provide an implementation of advanced Web <strong>services</strong>pecifications such as WS-Addressing, WS-Policy, WS-Security, WS-SecurityPolicy, WS-SecureConversation, and WS-Trust. This session highlights support for these specificationswhile examining many new features, which include an extensible framework forpolicy enforcement and SOAP messaging. Take advantage of the future by learning howto incorporate WSE v2.0 in your applications quickly and easily.BIO: John Bristowe is a senior solution developer architect with EmpoweredSoftware Solutions (ESS), a .NET <strong>con</strong>sulting firm based in Burr Ridge, Illinois.An active speaker and author of several .NET and XML Web service–relatedarticles, John is also a volunteer for the International .NET Association (INETA)Infrastructure Committee and various GotDotNet workspaces. John is presently focusedon the .NET Framework and XML Web service plumbing and protocols.(NT2) Smart Devices in Health CareSettingsBRAD MCCABE, INFRAGISTICSTuesday, September 30, 3:00 p.m. - 3:50 p.m.Mobile devices are gaining popularity and functionality every day in the enterprise.When you combine this with .NET s unparalleled support for mobile computing, viaTablets, PDAs, and phones, you know that this is a topic not to be missed. In this session,Infragistics’ Brad McCabe will discuss all of these .NET mobility technologies andhow they are being used in organizations around the globe today and how you canapply these technologies to your enterprise.BIO: Prior to joining Infragistics, Brad McCabe served as <strong>sys</strong>tems architectfor the network solutions development team at Verizon Communications.Concurrently, Brad held the position of lead .NET evangelist within AjilonConsulting responsible for <strong>con</strong>tent and delivery of material for the national Inside .NETtour. Brad has been working as a senior developer and a software engineer, and his currentresponsibilities include developing reference applications and working with enterprisecustomers on project implementation.(NT3) Using the Mobile Internet ToolkitJON BOX, QUILOGYTuesday, September 30, 4:00 p.m. - 4:50 p.m.The Microsoft Mobile Internet Controls Runtime (previously known as the MicrosoftMobile Internet Toolkit) is one of the most exciting technologies in mobile computingtoday. By adapting to the unique characteristics of a mobile Web client at runtime, thistool provides unparalleled flexibility for the creation of mobile Web applications. In thissession, Quilogy’s Jon Box will guide you through the fundamentals of using this technologyto create your own .NET applications.BIO: Jon Box, a solutions architect at Quilogy (www.quilogy.com), hasadvanced experience in multiple technologies with a solid background ininfrastructure, application development, data access, and a host of other technologies.He has served in diverse roles as an architect, trainer, author project managerand general manager at Quilogy, where he is currently a part of Quilogy’s Atomic team.His current activities include authoring and developing advanced .NET training coursesand technical <strong>con</strong>tent for the Atomic Web site. Jon is a Microsoft regional director forMemphis and serves on the MSDN Customer Council. He is a noted speaker onMicrosoft emerging technologies, an active participant in the Memphis technologycommunity, and founded the Memphis .NET User Group (www.memphisdot.net). Inaddition, Box has served as a technical editor on several books, including AnIntroduction to Object-Oriented Programming with Visual Basic .NET.(NT4) Introduction to ROTORTED NEWARD, DEVELOPMENTORWednesday, October 1, 9:00 a.m. - 9:50 a.m.Microsoft’s Shared Source CLI (also known as ROTOR) is the only officially supportedCLI from Microsoft that will run on non-Windows platforms. For those interested in trulyunderstanding the inner workings of the .NET platform, DevelopMentor’s Ted Newardwill present this introduction to the technology that lets you “look under the hood.”BIO: Ted Neward is an independent software development architect andmentor in the Sacramento, California area. He is the author of a number ofbooks, including Server-Based Java Programming and the forthcomingEffective Enterprise Java and SSCLI Essentials, and coauthor of C# In a Nutshell withPeter Drayton and Ben Albahari. He is also an instructor with DevelopMentor, where heteaches and authors both the Java and .NET curriculum. He speaks frequently for technologyuser groups, and is the writer of technical papers for www.javageeks.com andwww.clrgeeks.com. He currently labors on behalf of the University of California, Davis,architecting a rebuild of the Davis Accounting and Financial Information Services software<strong>sys</strong>tem.(NT5) Using Portable.NETADAM BALLAI, DOTGNU DEVELOPERWednesday, October 1, 3:00 p.m. - 3:50 p.m.DotGNU Portable.NET forms the basic .NET compatibility support in the DotGNUframework. The goal of the project is to allow existing .NET developers to smoothlymigrate to DotGNU and still remain compatible. The platform includes compilers, a runtimeengine, and class libraries. Portable.NET has a number of extras to offer, likeTreeCC, Web <strong>services</strong> support, generic unrollers, and so on. The compiler suite currentlysupports C#, C, Java, and VB.NET. A JScript interpreter, portable WinForms, <strong>sys</strong>tem.Drawing, and ADO.NET are in usable stages. And all this is portable to a variety ofhardware and operating <strong>sys</strong>tems.(NT6) ASP.NET with MonoDEREK FERGUSON, EXPAND BEYONDWednesday, October 1, 4:00 p.m. - 4:50 p.m.One of Mono’s most compelling features is its ability to run ASP.NET Web sites on platformsother than Windows and IIS. In this session, you’ll learn how to create and hostsuch sites, as well as the unique advantages that Mono offers in this space.6REGISTER BY SEPTEMBER 5th—SAVE UP TO $ 200


International .NET Developer Conference & ExpoBIO: Derek Ferguson is chief technology evangelist for Expand BeyondCorporation (www.xb.com), the worldwide leader in mobile software forenterprise management. He is also editor-in-chief of .NET Developer’s Journaland author of the book Mobile .NET (Apress).(NT7) Using WSE with IBM’s WSTKDAVID WHITE, MICROSOFTWednesday, October 1, 5:00 p.m. - 6:00 p.m.Achieving WS-I style interoperability between Java and .NET is not yet as easy as itshould be. Standards that have only recently been ratified have not been completelyimplemented and documented by all vendors. In this session, you will learn how tocreate .NET clients that can communicate securely with Java Web <strong>services</strong> and viceversa.BIO: David White is the architectural evangelist for the Great Lakes District for theAutomotive Vertical. He has more than 13 years’ enterprise experience across manydisparate platforms. After spending time working on enterprise mainframe applicationson MVS he moved to the Unix/VAX arena and then on to the Microsoft arena.He has used almost all the major development paradigms over time (J2EE, DNA,CORBA, etc.) and because of this advises customers on technology decisions relatedto development and architecture with regards to Microsoft products and how they fitinto the customers overall architecture. He has been with Microsoft now for over 5years.(NT8) Success Story: Eiffel, .NET, andDesign by Contract for the FinancialIndustryBERTRAND MEYER, EIFFEL SOFTWARE & ETH ZURICHThursday, October 2, 9:00 a.m. - 9:50 a.m.The financial industry requires ever higher guarantees of quality and productivity to producethe applications that the business demands, and deliver them on time. Using acombination of leading-<strong>edge</strong> technologies, AXA Rosenberg was able to capitalize on thebest of software engineering to satisfy demanding market needs. A combination of .NET,the Eiffel language and method, and the techniques of Design by Contract enables thecompany to stay ahead of its user needs. This presentation discusses the challengesencountered and how the retained technical solutions enable the company to meetthem; it <strong>con</strong>cludes with an outlook of the most promising avenues for future development.BIO: Bertrand Meyer is founder and CTO of Eiffel Software (SantaBarbara), professor of software engineering at the Swiss Federal Institute ofTechnology (ETH), and an adjunct professor at Monash University inAustralia. He is one of the pioneers of object technology and author of several awardwinningbooks, including Object-Oriented Software Construction, one of the best sellersin the field.(NT9) .NET IDEsThursday, October 2, 11:00 a.m. - 11:50 a.m.Visual Studio .NET is, by far, the best-known IDE for creating .NET-based software. Thereare, however, several alternatives out there for .NET developers looking to keep theiroptions open. In this session, .NET Developer’s Journal editor-in-chief Derek Fergusonwill guide you through the many choices you can make. See www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> forfurther details on this session.(NT10) Windows SharePoint ServicesThursday, October 2, 1:00 p.m. - 1:50 p.m.SharePoint <strong>services</strong> allow a new level of collaboration for workers in informationfocusedpursuits. The ne<strong>west</strong> version of the SharePoint Portal server is, in fact, actuallybuilt 100% in managed .NET code. In this session, you will learn how to create sitesusing SharePoint Services and C#. See www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> for further details on thissession.(NT11) BizTalk 2004Thursday, October 2, 3:00 p.m. - 3:50 p.m.BizTalk 2004 is the key Microsoft solution for business orchestration. If your organizationhas a multitude of processes that must be coordinated, and/or if you have manyautomated processes that you share with your business partners, then you must attendthis session to learn what BizTalk can do for you! See www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> for furtherdetails on this session.Join Russ as he shows youhow to use Visual Studio .NETwww.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> • 201-802-3058FREETutorialSeptember 30, <strong>2003</strong>INTRO TO WEB SERVICES USING VS.NETOne of the key ideas behind the .NET strategy is the <strong>con</strong>cept of software as a service,or in short, Web <strong>services</strong>. This session will explain what a Web service is and providean overview of its related technologies like XML, SOAP, and UDDI. We will demonstratehow the .NET Framework makes it easy to implement them for new and existingapplications. This session will also provide <strong>con</strong>crete best practices for buildingXML Web <strong>services</strong> using Visual Studio .NET. We’ll answer many common questionslike: How will my Web service scale? How can my XML Web <strong>services</strong> enable interoperabilitywith Web <strong>services</strong> from other vendors as well as within my own organization?We’ll delve into building highly reliable and secure Web <strong>services</strong>. Also, we willdiscuss issues such as dealing with complex data types using WSDL (Web ServicesDescription Language), as well as securing SOAP messages using encryption. We’llsee how developers can use enterprise-level XML Web <strong>services</strong> to simplify customersolutions.ADVANCED WEB SERVICES USING ASP.NETThis session will explore some of the more advanced areas of SOAP in ASP.NET’s supportfor Web <strong>services</strong>. ASP.NET Web <strong>services</strong> are the preferred way for Web developersto expose Web <strong>services</strong> on the Internet. The goal is quick, easy, and high-performingSOAP <strong>services</strong>. We will look at how to use the SOAP extension classes to createsome very interesting applications on top of the core SOAP architecture found withinthe .NET Framework. For instance, you can implement an encryption algorithm orscreen scraping on top of the Web service call. We’ll dig into more advanced topics,explore the SOAP headers, and see ways to ensure security in our Web <strong>services</strong>..NET REMOTING ESSENTIALSMicrosoft .NET Remoting is the .NET technology that allows you to easily and quicklybuild distributed applications. All of the application components can be on onecomputer, or they can be on multiple computers around the world. .NET Remotingallows client applications to use objects in other processes on the same computer oron any other computer to which it can <strong>con</strong>nect over its network. During this presentationwe will discuss what you need to know to get started with .NET Remoting. Wewill talk about how .NET Remoting compares with DCOM, how to host remotedobjects in a variety of applications, how to call remoted objects from a client application,how to <strong>con</strong>trol the lifetime of remoted objects, and how to secure remotingapplications.FREE Microsoft Tutorial when you register for a VIP PassGuarantee your seat when you register for a Full Conference PassRegister Online atwww.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong>7SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>


SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>Web Services TrackWeb Services TrackPresentations will includediscussions of security,interoperability, the role of UDDI,progress of the standards-making bodies, SOAP,and BPM. Case studies cover the design and deploymentof Web <strong>services</strong> in the marketplace.Sessions will focus on:InteroperabilityEnterprise NetworksWeb Services ManagementWeb Services StandardsWeb Services OrchestrationSecurity (WS-Security, SAML)BPEL4WSUDDI: Dead or Alive?ebXML & Web ServicesEAI & Web ServicesRPC vs Documents: Usesand DifferencesUser Interfaces for Web ServicesWeb Services Best PracticesService-Oriented Architecture(WS1) Web Services Management:Managing the Impact of ChangeJAMES PHILLIPS, ACTIONALTuesday, September 30, 9:00 a.m. - 9:50 a.m.Adoption of Web <strong>services</strong> technology is well underway in the Global 2000. It is impossibleto ignore the numerous articles and speeches from CIOs declaring their adoptionof Web <strong>services</strong> as high-priority strategic IT initiatives. Whereas the service-orientedapproach to application architecture was meant to accelerate the responsiveness of theIT organization, the impact of the changes to the service network and the ripple effectsthat ensue can lead to precisely the opposite result. Change is easy and affordable, butthe impact of change can be unmanageable and expensive. To truly reap the benefits ofthe service-oriented approach to application architecture, customers must have a way tomanage the impact of change in their enterprise service network.BIO: James Phillips has worldwide responsibility for Actional’s product andmarket strategy and market execution. Prior to joining Actional, James servedas chief strategy officer and vice president of product marketing and businessdevelopment with Ensim Corporation, and has held senior marketing management,software engineering, and business development roles with Intel, Intuit, Synop<strong>sys</strong>, andCentral Point Software.(WS2) Building Interoperable WebServices Using WS-I Basic ProfileKEVIN LIU, SAP LABS, LLCTuesday, September 30, 3:00 p.m. - 3:50 p.m.The promise of Web <strong>services</strong> interoperability is based on a set of standards, includingXSD, SOAP, WSDL, and UDDI. However, early interoperability experiments such as theSOAP Builder activity have proven that making these technologies seamlessly worktogether, inter- or intra-enterprises, is a bigger challenge than most of us expected. Mostof the Web <strong>services</strong> technologies are still in the standardization process, and Web <strong>services</strong>platforms have to be based on prestandard draft specifications. The in<strong>con</strong>sistenciesand ambiguities left in these initial drafts can easily lead to different interpretations for thesame feature and substantially compromise the promised interoperability.The presentation explains how WS-I Basic Profile addresses these challenges, andwhat the key techniques are that you can get from the profile that can make your Web<strong>services</strong> interoperable. It explains why the profile disallows SOAP encoding and whyRPC style should give way to document style.BIO: Kevin Liu is an architect of XML Web <strong>services</strong> technologies at SAP Labs inCalifornia. Kevin helps drive the adoption of Web <strong>services</strong> technologies in SAP’s strategicproducts, and represents SAP in various standard bodies. Kevin has over 10 years ofexperience in software engineering and the financial industry. He holds multiple master’sdegrees in information management, finance, and e<strong>con</strong>omics.(WS3) Web Services OrchestrationCHRIS PELTZ, HPTuesday, September 30, 4:00 p.m. - 4:50 p.m.The real value of Web <strong>services</strong> will come as we start finding standard ways to <strong>con</strong>nectthese distributed components in a more reliable fashion. One of the key enablers to thiswill be <strong>web</strong> <strong>services</strong> orchestration. This session introduces <strong>web</strong> <strong>services</strong> explains someof the requirements for <strong>con</strong>necting we <strong>services</strong> together. A history of key standards willbe provided, including XLANG, and WSFL. A comparison will be drawn between WSCIand BPEL4WS, and where each might be appropriate in an architecture. The presentationwill <strong>con</strong>clude with a case study demonstrating the use of orchestration technologiesto <strong>con</strong>nect <strong>web</strong> <strong>services</strong> together.BIO: Chris Peltz is a senior software <strong>con</strong>sultant within HP's DeveloperResources Organization. He provides technical and architectural <strong>con</strong>sulting toenterprise customers in the areas of J2EE, <strong>web</strong> <strong>services</strong>, and mobile development.Chris has over 10 years of software experience in object-oriented technologies,4GL development, GIS, and <strong>web</strong> applications design.(WS4) ID, Please. The Case for GivingWeb Services an IdentityASHISH LARIVEE, NOVELLWednesday, October 1, 9:00 a.m. - 9:50 a.m.Without identity management, Web <strong>services</strong> can be <strong>con</strong>sumed by anyone. The challengefor Web <strong>services</strong> developers is to provide appropriate access based on the user’sidentity. As identity management moves into the forefront of technology, directory<strong>services</strong> will evolve from simple LDAP repositories used for authentication and storageto robust engines that provide identity integration, access management, and policyenforcement. This presentation will discuss how identity management and directory<strong>services</strong> provide a robust solution for Web <strong>services</strong> authentication, authorization, andsingle sign-on.BIO: With more than nine years of experience in the software industry, Ashish Lariveehas designed and developed many enterprise applications across a variety of platformsincluding Microsoft, Lotus Notes/Domino, and the J2EE platform. In 1999, Ashish joinedSilverStream Software, acquired by Novell in July 2002, and has served in various rolesin <strong>con</strong>sulting, development, and technical marketing. In her current role, she helpsdefine the strategy and product direction across Novell’s Web application developmentproducts.(WS5) WS-BPELJOHN EVDEMON, MICROSOFTWednesday, October 1, 3:00 p.m. - 3:50 p.m.BIO: John Evdemon is program manager, industry standards, industry solutionsenablement, for Microsoft, and is cochair of OASIS’ Business ProcessExecution Language TC. He is an XML and e-business expert, having servedas CTO/director of XML-related products for both a large integration platform vendorand a small XML-centric start-up, and has been designing and deploying enterprise <strong>sys</strong>temson a wide variety of platforms for over 15 years. He is an invited expert with theW3C XML Core Syntax Working Group and has chaired several industry-specific XML initiatives.An associate editor of XML-Journal, John is also a regular <strong>con</strong>tributor to journals,books, and online forums and is writing a book on XML. See www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> forfurther details on this session.(WS6) UDDI: Dead or Alive?ANNE THOMAS MANES, THE BURTON GROUPWednesday, October 1, 4:00 p.m. - 4:50 p.m.When UDDI was first announced in September 2000, IBM and Microsoft predicted thatit would be a fundamental component of the Web <strong>services</strong> infrastructure. Three yearslater, UDDI has still seen only very modest adoption. So what is the future of UDDI? Willit ever live up to the early predictions? Will it enable dynamic discovery and utilization ofWeb <strong>services</strong>? Why should you even <strong>con</strong>sider using it? Although it’s had a slow start,UDDI is, in fact, a core component of the Web <strong>services</strong> infrastructure. This sessionexplores the Web <strong>services</strong> registry specification and examines user guidelines and bestpractices.8REGISTER BY SEPTEMBER 5th—SAVE UP TO $200


International Web Services Developer Conference & ExpoBIO: Anne Thomas Manes is a research director at Burton Group, aresearch, <strong>con</strong>sulting, and advisory firm. Anne leads research for theApplication Platform Strategies service. Named one of NetworkWorld’s “50Most Powerful People in Networking,” in 2002 and one of Enterprise Systems Journal’s“Power 100 IT Leaders,” in 2001, Anne is a renowned technologist in the Web <strong>services</strong>space. Anne participates in standards development at W3C and OASIS. She is a frequentspeaker at trade shows and author of numerous articles and the book Web Services: AManager’s Guide.(WS7) Web Services Choreography,Management, and Security – Can TheyDance Together?PAUL LIPTON, COMPUTER ASSOCIATESWednesday, October 1, 5:00 p.m. - 6:00 p.m.Web <strong>services</strong> choreography, management, and security are among the principal challengesimplementers of service-oriented architectures face in their efforts to create amore cost-effective and agile IT infrastructure, despite the fact that significant progresshas been made in various standards organizations such as the W3C and OASIS. Thereis still much <strong>con</strong>fusion in the IT community about the standards, which are at variousstages of maturity. Also, their relevance to enterprise IT and how they might worktogether is often unclear.This session begins with a useful overview of standards in these three critical areas ofWeb <strong>services</strong>: choreography, management, and security. We will then discuss the roleof each in the enterprise, and <strong>con</strong>clude with an examination of how these three areasmight work together to solve the real challenges facing IT in its efforts to bring greaterutility, flexibility, and agility to the enterprise.BIO: Paul Lipton is Computer Associates’ Web <strong>services</strong> technology leader forthe field <strong>services</strong> organization and a technology strategist in the office of theCTO. He has been an architect and developer of enterprise <strong>sys</strong>tems for morethan 20 years, and has worked closely with key CA customers to architect distributedsolutions using J2EE, .NET, wireless, and Web <strong>services</strong> technology. Paul has representedCA in various standards organizations, and has participated in the Java CommunityProcess. He has published magazine articles on many technologies including Web <strong>services</strong>,Java, .NET, EAI, wireless technology, and distributed <strong>sys</strong>tems.(WS8) Strategies for SecuringWeb ServicesMARCK SECRIST, HPThursday, October 2, 9:00 a.m. - 9:50 a.m.Web <strong>services</strong> standards for security are just beginning to emerge and stabilize, yet lackof security standards is listed as the top barrier to Web <strong>services</strong> adoption. Many projectteams are reluctant to adopt Web <strong>services</strong> due to the risk associated with immature andchanging standards. This session will look at the issues associated with securing Web<strong>services</strong>, and cover the important standards for Web <strong>services</strong> security. It will <strong>con</strong>clude byexploring strategies for securing Web <strong>services</strong> in ways that allow developers to get startedwith Web <strong>services</strong> while isolating themselves from standards that are still in a stateof flux.BIO: Mark Secrist is a senior <strong>con</strong>sultant for the HP Developer ResourceOrganization with more than 10+ years of experience involving distributedobject technologies and building N-tier, Web-based applications. He currently<strong>con</strong>sults with enterprise customers on J2EE and Web <strong>services</strong> development. Mark hasalso published technical white papers on J2EE, mobile, and Web <strong>services</strong> development.(WS9) Web Services Progress ReportMICHAEL CHAMPION, SOFTWARE AGThursday, October 2, 11:00 a.m. - 11:50 a.m.Web <strong>services</strong> have been the buzz for the last couple of years, but the <strong>con</strong>cept remains<strong>con</strong>fusing to many. New “standards” are proposed on a regular basis, but they overlapand seem to form the same fault lines as previous industry politico-strategic <strong>con</strong>troversies.Now analysts and writers are talking about “service-oriented architectures,” furtherbewildering most nonspecialists. Throughout all this, a small but passionate group hasbeen arguing that many of the ideas coming from the Web <strong>services</strong> community are antitheticalto the principles of the Web and are unlikely to ever work on an Internet scale.The W3C Web Services Architecture Working Group is trying to determine a <strong>con</strong>sensusposition on key architectural issues <strong>con</strong>cerning Web <strong>services</strong> and their relationship toXML and the Web. This presentation provides a progress report after an approximately18-month effort to distinguish the Web <strong>services</strong> architectural principles from the marketingagenda of individual companies.FREEBIO: Michael Champion is a research and development specialist atSoftware AG, working out of Ann Arbor, Michigan. He has been a softwaredeveloper for 20 years, working primarily in the area of middleware forclient/server document and image management <strong>sys</strong>tems. He has been active in theWorld Wide Web Consortium’s Document Object Model (DOM) Working Group formore than three years and was an editor of the core XML portion of the DOM Level 1Recommendation. Michael is now cochair of the Web Services Architecture WorkingGroup.(WS10) The Seven Habits of HighlyEffective Enterprise Service Buses (ESBs)DAVE CHAPPELL, SONIC SOFTWAREThursday, October 2, 1:00 p.m. - 1:50 p.m.Gartner, Inc., has defined a new class of application integration infrastructure called anenterprise service bus (ESB). An ESB is a standards-based integration product that reliably<strong>con</strong>nects and orchestrates the interaction of hundreds of application endpointsspanning a global organization. Because of their significant differences from applicationserver products and proprietary integration brokers, ESBs represent a compelling thirdoption for businesses in the market for integration technology.What is an ESB? How can you properly distinguish this new product category and compareit with other offerings on the market? Dave Chappell, chief technology evangelistfor Sonic Software, will examine the seven key characteristics of an ESB in depth.BIO: Dave Chappell is vice president and chief technology evangelist forSonic Software, the leading provider of integration products and <strong>services</strong> forthe real-time enterprise. Dave is coauthor of Java Web Services, ProfessionalebXML Foundations, and The Java Message Service, and a frequent <strong>con</strong>tributor to WebServices Journal.www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> • 201-802-3058How to Develop, Deploy,and Manage Web ServicesUSING IBM TOOLSAre you a developer, product manager, or software architect interested inlearning how to develop, deploy, and manage Web <strong>services</strong>? If so, thistechnical seminar – where IBM experts will review the standards initiativesbehind some of these technologies, the latest developments, and theirfuture roadmap – is for you!What you will discover by attending this technical seminar• How to develop and deploy Web <strong>services</strong> using IBM tools• How to use IBM WebSphere Studio Application Developer to extend Javacomponents as Web <strong>services</strong> using WSDL• How to implement Web Services Hosting Technology to provision and meter Web<strong>services</strong> without changing code or the actual service implementation• Each attendee will receive IBM software products that support Web <strong>services</strong>,development tools, helpful tutorials, and insightful articles.SEPTEMBER 30Course highlights• Real-world implementation• Developing and deploying SOAP-enabled Web <strong>services</strong>• Registry operations and programming with UDDI4J Version 2• IBM WebSphere Studio Application Developer• RAS and Web <strong>services</strong>• Web <strong>services</strong> stack and WebSphere Application Server Version 5.0• Emerging Web <strong>services</strong> technologies – WSFL, WSIL, WSUI, etc.• Developer support – IBM Web Services Toolkit Version 3.0, resources, tools, products,Web sites, Business Partner support, education, etc.PresenterWilly Farrell, Sr. Software Engineer, IBMWilly Farrell is a senior software engineer in the IBM Developer Skills Program. As part ofthe developerWorks team, he provides relevant technical information and insight to developerson the latest e-business and industry trends through Web <strong>con</strong>tent, articles, speakingengagements and <strong>con</strong>sulting to faculty at IBM Scholars Program member universities.FREE IBM Tutorial when you register for a VIP PassGuarantee your seat when you register for a Full Conference Pass9SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>


SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>Java Technology TrackJava Technology TrackThe Java Track featurespresentations aimed at thebeginner, as well as theseasoned Java developer.Sessions will explore the whole spectrum of Java, focusingon J2EE, application architecture, EJB, and J2ME. Inaddition the track will cover the latest in SWT, Ant, JUnit,open source frameworks, as well as an in-depth look intothe vital role that Java is playing in building and deployingWeb <strong>services</strong>.Sessions will focus on:Enterprise Java 1.4Ant Applied in “Real World” Web ServicesDeveloping Application Frameworks with SWTEmpowering Java and RSS for BloggingJUnit: Testing Your Java with JUnitJDK1.5: The TigerSimplifying J2EE ApplicationsUsing IBM’s Emerging Technologies Toolkit (ETTK)Apache AxisMeeting the Challenges of J2ME DevelopmentIntegrating Java + .NETSqueezing Java(JV1) The Next Phase in theEvolution of J2EEBILL ROTH, SUN MICROSYSTEMSTuesday, September 30, 9:00 a.m. - 9:50 a.m.Did you know that J2EE has developed to the point where companies can bring in millionsof dollars a year selling J2EE-based application <strong>sys</strong>tems? This session will discussthe original plans for the evolution of the J2EE marketplace, and the companies that arecapitalizing on completing one of the final stages of this process.BIO: Bill Roth is currently technology evangelist for E.piphany. He previouslywas group marketing manager for J2EE at Sun Micro<strong>sys</strong>tems, and is a memberof the Java Developer’s Journal editorial board.(JV2) Ant Applied in “Real World”Web ServicesKYLE GABHART, GABHART CONSULTINGTuesday, September 30, 3:00 p.m. - 3:50 p.m.A defined and easily repeatable process is one of the most necessary but often leastused aspects of good software development. A defined build process ensures that yourproject’s software is built, deployed, and tested identically every time. Without this typeof <strong>con</strong>trol and predictability, valuable time is often lost chasing down bugs that don’texist or rejecting solutions that were only partially implemented.Apache’s Ant is a powerful scripting tool that enables developers to define and executeroutine software development tasks using the simplicity and extensibility of XML. Antprovides a comprehensive mechanism for managing software development projects,including compilation, deployment, testing, and execution. In addition, it is compatiblewith any IDE or operating <strong>sys</strong>tem.BIO: Kyle Gabhart is an independent <strong>con</strong>sultant, mentor, and publishedauthor, specializing in J2EE, XML, and Web <strong>services</strong> technologies. He is a prolificwriter, with his most recent work displayed on IBM’s developerWorks Website in the ‘J2EE Pathfinder’ column. Kyle is highly regarded as a dynamic and enthusiasticpublic speaker with an innovative perspective on technology.(JV3) Developing Applicationswith SWTTuesday, September 30, 4:00 p.m. - 4:50 p.m.The Standard Widget Toolkit (SWT) provides a common, OS-independent, Java-basedAPI for widgets and graphics implemented in a way that allows tight integration with theunderlying native window <strong>sys</strong>tem. The Eclipse project and the various tools that plug into it use SWT for presenting information to the user. This session will provide a generaloverview of SWT and introduce its basic <strong>con</strong>cepts and classes. See www.<strong>sys</strong><strong>con</strong>.com/<strong>edge</strong>for further details on this session.(JV4) Empowering Java and RSSfor BloggingJASON BELL, IT DEVELOPMENT MANAGERWednesday, October 1, 9:00 a.m. - 9:50 a.m.One of the fastest growing areas over the last few years is the blogging community. Theease with which you can post and publish information has enabled everyone to becomehis or her own publisher. One of the powers of blogs has been the syndication of datavia the RSS (XML) protocol. Discover how you can easily produce and <strong>con</strong>sume RSSfeeds within your Java applications for wider appeal and hook into JavaBlogs.BIO: Jason Bell is Java developer and IT development manager for a B2Bportal in the UK. He also <strong>con</strong>tributed to a number of open source projects andis an advocate of everyone reading the API docs.(JV5) JUnit: Testing Your Java with JUnitWednesday, October 1, 3:00 p.m. - 3:50 p.m.A critical measure of the success of software can be found in whether or not it executessuccessfully. Equally important, however, is whether or not that software does what it wasintended to do. JUnit is an open source testing framework that provides a simple meansfor developers to define their intentions for how their software should work. JUnit thenprovides test runners that process your intentions and verify that your code performs asintended. The result is software that not only works, but works in the correct way. Seewww.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> for further details on this session.(JV6) JDK 1.5: The TigerCALVIN AUSTIN, SUN MICROSYSTEMSWednesday, October 1, 4:00 p.m. - 4:50 p.m.Java 1.5 is the next major release of Java and with it comes a whole host of new enhancmentsand additions to the language. 1.5 promises a lot. Attend this session and discoverthe wonders that await the Java community.BIO: Calvin Austin is the lead engineer on Sun Micro<strong>sys</strong>tems’ port of the Java 2Platform, Standard Edition (J2SE) to the Linux OS. He has been with Java Software sinceits inception six years ago. Calvin is the specification lead for JSR-176, which defines theJ2SE 1.5 (“Tiger”) release <strong>con</strong>tents.(JV7) Squeezing JavaALAN WILLIAMSON, JAVA DEVELOPER'S JOURNALWednesday, October 1, 5:00 p.m. - 6:00 p.m.Java is a very powerful language, and while it offers the developer a rich array of tools,the fundamentals mustn’t be overlooked. Improving your code at the core layer willresult in great improvements in efficiency and produce (hopefully) fewer bugs. We’lllook at the “do’s and don’ts” of programming and learn lots of hints and tips that willaccelerate your Java coding.BIO: Alan Williamson is editor-in-chief of Java Developer’s Journal. In hisspare time he holds the post of chief technical officer @ n-ary (<strong>con</strong>sulting)Ltd, one of the first companies in the UK to specialize in Java at the server side.Reach him at alan@n-ary.com (www.n-ary.com) and rumor has it he welcomes all suggestionsand comments!(JV8) Leveraging AOP in JBossMARC FLEURY, PH.D., JBOSSWednesday, October 1, 5:00 p.m. - 6:00 p.m.This session will explore the JBoss Aspect Oriented Programming (AOP) framework. Itwill define AOP and discuss its implementation in the JBoss application server, showing10REGISTER BY SEPTEMBER 5th—SAVE UP TO $200


International Java Developer Conference & Expohow a microkernel combined with simple AOP technology can enable thecreation of generalized <strong>con</strong>tainers. From small single purpose embedded<strong>con</strong>trols to large enterprise <strong>sys</strong>tems, JBoss middleware enables easy <strong>sys</strong>temassembly by AOP and aspects. This session will focus on the aspectsthemselves, moving beyond the logging examples to cover all the standardaspect technology that has been present in JBoss for the past 3 years,including persistence, caching, invocations, transactions and acidity asaspectized components that can be reused in applications.BIO: Marc Fleury, PhD. is chief technical officer for Telkel, Inc.He is the leader of the JBoss project (www.jboss.org/), which isan open source EJB server. Marc is based out of Sili<strong>con</strong> Valleyand founded the project upon leaving Sun Micro<strong>sys</strong>tems. He was one ofthe main developers behind JBoss 1.0 and 2.0., and is the “keeper” of theproject. Marc is a graduate of the French Ecole Polytechnique with adegree in mathematics and holds a PhD in physics for work done at MITas a visiting scientist.(JV9) Apache AxisCHRIS HADDAD, COBIA COMMUNICATIONSThursday, October 2, 11:00 a.m. - 11:50 a.m.Apache Axis is the very popular SOAP engine that includes everything youneed to start producing Web <strong>services</strong>. Discover just what Axis is, and howyou can utilize the power of this free engine to kick start your Web <strong>services</strong>.(JV10) Meeting the Challenges ofJ2ME DevelopmentThursday, October 2, 1:00 p.m. - 1:50 p.m.Synchronization is an important component in building mobile applicationsthat can operate offline to review, capture, or change data that willlater be re<strong>con</strong>ciled with enterprise data on a central server. Today, distributedclients with limited memory and intermittent <strong>con</strong>nectivity, such ascellular phones and PDAs, are increasingly used to access multiple serversideenterprise applications and data. This presentation will demonstrate aflexible yet powerful framework for managing data and synchronization inthe Java environment (J2EE, J2ME/pJava). See www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> forfurther details on this session.(JV11) Integrating Java + .NETDEREK FERGUSON, .NET DEVELOPER’S JOURNALThursday, October 2, 3:00 p.m. - 3:50 p.m.Contrary to popular belief, you can still use Java (J#) on Microsoft’s .NETplatform. While the flavor may not be the latest JDK we know and love,J# offers other goodies and trinkets to accelerate your .NET solution. Findout what they are.BIO: Derek Ferguson is chief technology evangelist for ExpandBeyond Corporation (www.xb.com), the worldwide leader inmobile software for enterprise management. He is also editorin-chiefof .NET Developer’s Journal and author of the book Mobile .NET(Apress).(JV12) Simplifying J2EEApplicationsThursday, October 2, 4:00 p.m. - 4:50 p.m.TODD LAUINGER, BEST BUY CO., INC.J2EE is a large, complex specification for server-side, Web-enabled applicationdevelopment. Over the past few years, I have led many teamsthrough the J2EE jungle, trying to steer them away from the hype andkeep them focused on delivering rock-solid end user applications. Thepurpose of this tutorial is to discuss a variety of tips, tricks, and lessons Ihave learned so you and your teams can develop J2EE applications better,faster, and simpler than before.BIO: Todd Lauinger is currently employed as a software <strong>con</strong>structionfellow at Best Buy Co., Inc. He has over 10 years ofexperience developing large, mission-critical software <strong>sys</strong>temsfor engineering and business organizations. Todd is also an experiencedinstructor, mentor, <strong><strong>con</strong>ference</strong> speaker, and published author, and has amaster’s degree in software engineering.JavaUniversityProgram October 1October 2SUN MICROSYSTEMSArchitecting Web Services with Java 2Platform, Enterprise Edition (J2EE)Wednesday, October 1, <strong>2003</strong>Who Should AttendDevelopers and software architects with experience using the Java programming language, andsome knowl<strong>edge</strong> of XML who are interested in discovering how Java technology can deliverWeb <strong>services</strong> for multi-tier applications.OverviewWeb <strong>services</strong> provide an excellent mechanism to create integrated architectures for B2B solutions.The Java 2 Platform, Enterprise Edition (J2EE) is an excellent API for creating and deployingWeb <strong>services</strong>. When used in <strong>con</strong>junction with the Java technology APIs for XML (JAX familyof APIs), powerful and adaptable architectures can be created that offer all the advantagesof J2EE technology including portability, scalability and interoperability. The core of this seminardeals with investigating the JAX family of APIs and how they can be used to createWeb <strong>services</strong>.Benefits• Understand Web <strong>services</strong> and their use in the enterprise• Identify how servlets and JavaServer Pages (JSP) can be used with Web <strong>services</strong>• Recognize the use of the Simple Object Access Protocol (SOAP)• Be able to utilize the Java technology API for XML Messaging (JAXM) with SOAP• Recognize the Java technology API for XML Binding (JAXB) and its use in the middle tier• Learn about the Java technology API for XML Registries (JAXR)• Investigate the Java technology API for XML-based Remote Procedure Calls (JAX-RPC)Java 2 Platform: Architect Certification Fast PathThursday, October 2, <strong>2003</strong>Who Should AttendThis session is designed for enterprise application architects, <strong>sys</strong>tem analysts, experienced technologistsand developers using Java technology seeking certification as an architect for the Java2 Platform, Enterprise Edition (J2EE).OverviewMany of the solutions in today's “Net e<strong>con</strong>omy” are, or soon will be, developed using the Java2 Platform, Enterprise Edition (J2EE) architecture. Gaining recognized competency architectingJ2EE platform-based solutions is vital to your success as an architect, reaffirms your value andincreases your career opportunities.Benefits• Receive an intensive review of the topics covered on the Sun Certified Enterprise Architect forthe Java 2 Platform, Enterprise Edition Exam.• Increase your understanding and knowl<strong>edge</strong> of successfully architecting solutions using J2EEtechnology.• Understand the <strong>sys</strong>tem qualities: scalability, availability, extensibility, performance andsecurity.• Understand trade-offs of different architectural choices as they pertain to <strong>sys</strong>tem qualities.• Describe the benefits and weaknesses of potential J2EE technology-based architectures.• State benefits and costs of persistence management strategies.• Review real-world case studies of J2EE technology-based architecture.• Prepare for the exam by reviewing practice tests and questions.Go to www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> for moredetails about the Java University ProgramRegister Online at www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong>www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> • 201-802-3058SM11SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>


SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>XML TrackXML Technology TrackPresentations will focus onthe various facets of XMLtechnologies as they areapplied to solving business computing problems. Sessionswill include emerging standards in XML Schemas, XMLrepositories, industry applications of XML, applying XMLfor building Web <strong>services</strong> applications, XML/XSLT/ XQuerybasedprogramming using Java/.NET, XML databases, XMLtools and servers, XML-based messaging, and the issuesrelated to applying XML in B2B/EAI applications. The XMLTrack is geared for audiences ranging from beginners to<strong>sys</strong>tem architects and advanced developers.Sessions will focus on:XML Standards and VocabulariesIntroduction to XFormsSecuring Your XML and Web Services InfrastructureXQuery Fundamentals: Key Ingredients to EnterpriseInformation IntegrationXML and Enterprise Architecture: Technology TrendsStandards-Based Enterprise Middleware UsingXML/Web ServicesXML and Financial ServicesCanonical Documents for Your Business: DesignStrategiesXPath/XSLT 2.0: What’s New?XML Schema Best PracticesXML in EAI, Enterprise Portals, Content Management(XM1) Introduction to XFormsT.V. RAMAN, IBM RESEARCHTuesday, September 30, 9:00 a.m. - 9:50 a.m.This presentation will introduce W3C XForms, including details about how XFormsenables the last mile of <strong>con</strong>necting the end user to Web <strong>services</strong>. XForms user agentsprovide an easy-to-use, browser-based interface that enables the end user to interactwith information technologies that have been published as Web <strong>services</strong>. As the Webmoves from being a desktop-only phenomenon to a means of ubiquitous electronicaccess, Web transactions need to be available from a variety of end-user access devicesranging from desktop computers to smart phones. The XForms authored interface iswell suited for delivery to a variety of interaction modalities and end-user devices, thusassuring <strong>con</strong>tent developers of the widest audience for their transaction-based applications.From the user's perspective, XForms revolutionizes the way business-critical informationis collected and published on the Web, enabling information technologists to<strong>con</strong>tinue to model business data using abstract structures that are amenable to machineprocessing. XForms binds a user-friendly Web browser interface to such abstract XMLmodels, thereby empowering the end user to edit and update these abstract structures.In this sense, XForms enables a standard Web browser to associate editable views to theunderlying XML models. This ability to view and edit XML documents from within a standardWeb browser is likely to prove a key empowering technology.BIO: T.V. Raman works in IBM Research on multimodal user interfaces andis the author of Auditory User Interfaces. He is the editor of the user interfacechapter of the XForms 1.0 specification and is an active participant in a numberof W3C working groups including XForms, voice browser, and XHTML. His researchinterests are primarily auditory user interfaces and structured electronic documents, andhis previous work includes AsTeR – Audio System For Technical Readings, Aural CSS,and Emacspeak – the complete audio desktop.(XM2) Securing XML and Web ServicesApplicationsPHIL STEITZ, AMERICAN EXPRESSTuesday, September 30, 3:00 p.m. - 3:50 p.m.Securing Web <strong>services</strong> is a big challenge for companies moving toward service-orientedarchitectures. We will discuss some practical strategies for meeting this challengeusing standards and technologies available today. Key technical tradeoffs in the areasof performance, scalability, manageability, availability, and integration cost will be <strong>con</strong>sideredas we work through the details of a typical integration use case. We will also discussbusiness and organizational issues related to trust and identity management. Thesession will <strong>con</strong>clude with a brief survey of the standards and technology landscape andsome strategies for ensuring that investments made today will <strong>con</strong>tinue to pay benefitsinto the future.BIO: Phil Steitz is vice president of e-commerce applications development at AmericanExpress. Phil has more than 20 years of experience as a developer, architect, and technologyleader involved in distributed <strong>sys</strong>tems development. Before joining AmericanExpress, Phil served as a middleware architecture <strong>con</strong>sultant, designing large-scale distributed<strong>sys</strong>tems for enterprise customers. Phil holds a PhD in mathematics from theUniversity of Maryland.(XM3) UBL: The Universal BusinessLanguageJON BOSAK, SUN MICROSYSTEMSTuesday, September 30, 4:00 p.m. - 4:50 p.m.Web <strong>services</strong> technologies promise to revolutionize electronic business, but globalinteroperability of business processes cannot occur without the semantic standardizationof the messages exchanged in business transactions. This presentation will describethe OASIS UBL project to create standard XML Schemas for basic business documents,explore the relationship of UBL-based business to traditional EDI, and note the explosivepotential of standard markup combined with reliable XML messaging.BIO: Jon Bosak organized and led the W3C working group that created theXML specification and then served for two years as chair of the W3C XMLCoordination Group. At Sun, where he holds the title of distinguished engineer,Jon sponsors projects intended to advance XML technology. He is currently chairof the Universal Business Language (UBL) Technical Committee of the Organization forthe Advancement of Structured Information Standards (OASIS).12REGISTER BY SEPTEMBER 5th—SAVE UP TO $200


International XML Developer Conference & Expo(XM4) Standards-Based EnterpriseMiddleware Using XML/Web ServicesANDY ASTOR, WEBMETHODSWednesday, October 1, 9:00 a.m. - 9:50 a.m.Some say that standards-based enterprise middleware is not yet mature enough forindustrial-strength usage, and that proprietary vendor products are the only practicalalternative. Others insist that standards-based middleware is "ready for prime-time,"and that proprietary vendors will be out of business within a year. The truth is that eachof these extremes <strong>con</strong>tain dubious hype, and the truth falls somewhere between theseschools of thought. This session seeks to separate fact from fiction, and to offer a modelfor understanding both the current and future states of standards-based middleware.BIO: Andy Astor joined <strong>web</strong>Methods in 2002 as vice president of enterpriseWeb <strong>services</strong>. In this role, he is responsible for driving the company’s Web<strong>services</strong> strategy and execution. Prior to joining <strong>web</strong>Methods, Andy was a vicepresident at D&B, where he led worldwide customer-facing products, including all WebandInternet-based applications. His work at D&B also included the development andlaunch of one of the earliest commercial Web <strong>services</strong>. Prior to his tenure at D&B, Andyheld leadership positions at American Management Systems and Ernst & Young, bothlarge <strong>sys</strong>tems integration and <strong>con</strong>sulting firms.(XM5) XML and EnterpriseArchitecture: Technology TrendsHITESH SETH, IKIGOWednesday, October 1, 3:00 p.m. - 3:50 p.m.XML is a key ingredient of a number of technology solutions. Whether it's serving upenterprise portals, integrating diverse <strong>sys</strong>tems (EAI), serving Web <strong>services</strong>, or driving<strong>con</strong>tent management, support for XML has been a key trend in major off-the-shelf packagedapplications. With Web <strong>services</strong>, XML support has been extended to mission-criticalERP and CRM <strong>sys</strong>tems. This presentation takes a look at some of the key trends inusing XML in these applications.BIO: Hitesh Seth, editor-in-chief of XML-Journal, is the chief technology officerof ikigo, Inc., a provider of XML-based Web <strong>services</strong> monitoring and managementsoftware. A freelance author and known speaker, he regularly writesfor technology publications on VoiceXML, Web <strong>services</strong>, J2EE and Microsoft .NET, wirelesscomputing, and enterprise/B2B integration.(XM6) Using XML Schema Effectivelyin WSDL DesignCHRIS PELTZ, HPWednesday, October 1, 4:00 p.m. - 4:50 p.m.Developers building Web <strong>services</strong> today are beginning to see the value of using the document-styleapproach over RPC. Recent experience shows that taking full advantage ofdocument-style Web <strong>services</strong> requires a strong knowl<strong>edge</strong> of XML Schemas and relatedXML standards. This session will present a number of important tips and techniques forproperly using XML Schemas in the design of a Web <strong>services</strong> interface, including theimportance of XML-based development tools, <strong>con</strong>siderations for binding between XMLand underlying objects, WSDL reusability through XML Schemas, and XML Schemanaming best practices.BIO: Chris Peltz is a senior software <strong>con</strong>sultant within HP’s DeveloperResources Organization. He provides technical and architectural <strong>con</strong>sulting toenterprise customers in the areas of J2EE, Web <strong>services</strong>, and mobile development.Chris has more than 10 years of software experience in object-oriented technologies,4GL development, GIS, and Web application design.(XM7) Canonical Documents for YourBusiness: Design StrategiesDAVID CONNELLY, OPEN APPLICATIONS GROUP, INC.Wednesday, October 1, 5:00 p.m. - 6:00 p.m.The ability to change rapidly when business processes change is key for successfulenterprises in today’s world. A factor critical to enabling this change is the integration ofall of an organization's business software applications in a way that is much faster andless expensive than current methods. Many organizations are taking advantage of theopen standards–based protocols underlying Web <strong>services</strong> to integrate <strong>sys</strong>tems quicklyand inexpensively. But before Web <strong>services</strong> can achieve its full potential, it needs a richand mature business language that can be used for both e-business and applicationintegration. The OAGIS XML language is the technology-neutral, horizontal business languagethat enables enterprises to fully leverage Web <strong>services</strong> protocols. This presentationwill discuss the OAGIS CANONCIAL Model, why and how it can make a difference,and strategies for using the OAGIS XML documents within the CANONICAL Model inyour business environment.BIO: David Connelly is president and CEO of the Open Applications Group,Inc. Before joining the OAGI, David worked in various capacities at customerorganizations and software vendors. He graduated from George Tech in 1975with a BS in industrial engineering.(XM8) XQuery Fundamentals: KeyIngredients of Enterprise InformationPAUL COTTON, MICROSOFTThursday, October 2, 9:00 a.m. - 9:50 a.m.The W3C XML Query Working Group was chartered in September 1999 to develop aquery language for XML documents. The goal of the XML Query Working Group is toproduce a formal data model for XML documents with namespaces based on the XMLInfoset and XML Schemas, a set of query operators on that data model, and then anXQuery language with a <strong>con</strong>crete canonical syntax based on the proposed operators.In May 2002 the XML Query WG and XSL WGs published a complete new set of XQuery1.0/XPath 2.0/XSLT 2.0 documents. This presentation will provide an overview of theXQuery and XPath languages and their current status. It will also outline the relationshipof the work of the XML Query WG to other W3C XML standards, especially XML Schema.The status of the WG’s efforts to add support to XQuery for full-text retrieval and anupdate language will also be discussed.BIO: Paul Cotton is program manager of XML standards with MicrosoftCanada. Paul has been active within the W3C XML activity since 1998 and hasbeen the chairman of the W3C XML Query WG since it was formed in 1999.Paul was elected to the first W3C Technical Architecture Group (TAG) in December 2001and re-elected in December 2002. The W3C TAG is responsible for defining the W3C'sview of the architecture for the Web. Paul is also a member of the WS-I Board ofDirectors and chair of the WS-I Basic Security Profile Working Group. Paul has more than30 years of experience in the IT industry.(XM9) XML at Work in the Fortune 500Thursday, October 2, 11:00 p.m. - 11:50 p.m.The objective of this session is to understand how XML has been a strategic investmentwith a Fortune 500 company. This session highlights the process of how support forXML was cultivated within the company and its partners and how XML was transformedfrom a cool technology trend to a necessity and a corporate standard. See www.<strong>sys</strong><strong>con</strong>.com/<strong>edge</strong>for further details on this session.(XM10) Designing XML Schema BestPracticesAYESHA MALIK, OBJECT MACHINESThursday, October 2, 1:00 p.m. - 1:50 p.m.XML Schemas <strong>con</strong>strain and formalize the vocabulary and grammar of XML documents.As XML is fast becoming the data transport format of the future, organizing the structureof the XML, as outlined by schemas, is becoming key to successful interoperability andimplementation. Developers experienced in object-oriented design know that a flexiblearchitecture ensures <strong>con</strong>sistency throughout the <strong>sys</strong>tem and helps to accommodategrowth and change. This presentation uses an object-oriented framework to show youhow to design XML Schemas that are extensible, flexible, and modular. Three principlesof object-oriented design – encapsulation, inheritance, and polymorphism – are discussedin light of XML Schemas.BIO: Ayesha Malik is a senior <strong>con</strong>sultant at Object Machines, a softwareengineering firm providing Java technology and XML solutions to businesses.Ayesha has worked extensively on large XML and messaging <strong>sys</strong>tems for companiessuch as Deutsche Bank and American International Group (AIG). Most recently,she has been researching new ways to make schemas extensible and object-oriented.www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong> • 201-802-305813SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>


SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>14OS X TrackOS X TrackOS X represents a new wave of operating <strong>sys</strong>tems. Itcombines the ease of use of a Mac with the power of Unix.Sessions in this track will highlight the use of the Mac OS Xplatform in applications and Web <strong>services</strong> development,deployment, and management.Sessions will focus on:Introducing OS X Panther: What's New?Quick Applications Using AppleScriptEnterprise Java and OS XDeveloping Web Services Using WebObjectsXserve: Ease of OS X and Power of UnixIntroducing Quartz: 2D Graphics for AppleOS X for the Unix DeveloperSecuring OS X ApplicationsJava and OS X: A Perfect MarriageProgramming Rich User Interfaces Using Cocoa(OS1) Introducing OS XPanther: What’s New?Tuesday, September 30, 9:00 a.m. - 9:50 a.m.The recently announced Mac OS X version 10.3, commonly known as Panther, boasts anumber of key enhancements to the features and technologies introduced by OS X. Thispresentation looks at some of these new and exciting features and how they can benefitindividuals and businesses <strong>con</strong>sidering deploying OS X.(OS2) Programming Rich UserInterfaces Using CocoaTuesday, September 30, 3:00 p.m. - 3:50 p.m.An evolution from NeXTStep APIs, Cocoa is a collection of advanced, object-orientedAPIs for the development of OS X applications using Objective C and Java. Included inOS X is a set of Java classes that allows Java developers to build enriched multimediaapplications based on the Cocoa framework. This presentation highlights the key benefitsof the Cocoa application development model w.r.t. It also points out some areaswhere the Cocoa framework can provide the much-needed <strong>edge</strong>.(OS3) Quick Applications UsingAppleScriptTuesday, September 30, 4:00 p.m. - 4:50 p.m.A peer to the Aqua GUI, AppleScript is the language interface for Mac OS X. It can <strong>con</strong>troland communicate between applications, databases, networks, and even remoteWeb <strong>services</strong>. AppleScript provides the technology needed for applications to automateworkflow processes and extend the life of off-the-shelf products. Learn to build crossapplicationsusing AppleScript Studio in this fast-paced introduction to AppleScript…scripting like you’ve never seen before.(OS4) Java and OS X:A Perfect MarriageWednesday, October 1, 9:00 a.m. - 9:50 a.m.Mac OS X sports a new look – not just a new look-and-feel on the outside, but also anew look on the inside. Mac OS is built on top of a BSD Unix–based core. An excitingaspect of the Mac OS X release is the integration of the Java 2 Platform with OS X. Thispresentation introduces OS X to users, focusing on Apple’s Java implementation, platformsupport, Web browser support, and the tools that are available to help developersbuild great-looking Java applications for OS X.(OS5) Enterprise Java and OS XWednesday, October 1, 3:00 p.m. - 3:50 p.m.With built-in support for the Java 2 Platform in OS X operating <strong>sys</strong>tems and the evolutionof the OS X Server platform, OS X will be <strong>con</strong>sidered a platform for not only developingand deploying rich-client applications but also for server-side applications. A numberof options exist in this area. First and foremost is Apple’s own WebObjects platform.In addition, OS X Server introduced bundling Apache Tomcat Server with the OS XServer and it was recently announced that Apple will bundle the JBoss ApplicationServer with the new version of OS X Server. In addition to these “bundled” choices, anumber of third parties have announced support for their own application servers forthe OS X platform. This session previews some of the supported enterprise Java–basedserver-side technologies for the OS X platform.(OS6) Developing Web ServicesUsing WebObjectsWednesday, October 1, 4:00 p.m. - 4:50 p.m.WebObjects is Apple’s framework and tools for rapid application development anddeployment of server-side Java applications. Version 5.2 brings support for standardsbasedWeb <strong>services</strong>. It allows developers to build or use standards-based Web <strong>services</strong>without getting into the details of writing low-level SOAP, XML, or WSDL. The environmentincludes a set of tools that enable code-free generation, <strong>con</strong>figuration, and testingof Web <strong>services</strong> from existing data assets. This session previews some of these changesand walks attendees through the “really rapid” Web <strong>services</strong> development environment– WebObjects.(OS7) Cocoa, Carbon, Java: ApplicationFrameworks for OS XWednesday, October 1, 5:00 p.m. - 6:00 p.m.From a development perspective, OS X provides multiple application frameworks. Choice isgood, but it’s important to know when to choose what. This presentation will provide guidelineson when to use which framework. Carbon is the traditional Mac OS API and emphasizescomplete backward compatibility. Cocoa is a development environment for OS X“native” applications and represents a new framework for the development of OS X applications.Another key <strong>con</strong>sideration is Apple’s support for the latest version of the Java platform.Java is treated as a first-class citizen in OS X, and developers are expected to build anddeploy cross-platform applications on this key framework.(OS8) Securing OS X ApplicationsThursday, October 2, 9:00 a.m. - 9:50 a.m.Whether you’re developing a banking application or just a graphics-based engineering application,security is an integral aspect of design and development. When applications are availablebeyond the firewalls, you must <strong>con</strong>sider the additional challenges of securing yourenterprise and customer data. Internally, you have to worry about potential misuse of rights.When it comes to OS X development, securing applications is no different. The operating <strong>sys</strong>temprovides built-in support for LDAP directory <strong>services</strong>, making it easier to maintain <strong>con</strong>sistentuser profiles, and provides security APIs to a broad set of applications. This presentationprovides a technology overview and a security checklist.(OS9) Xserve: Ease of OS X andPower of UnixThursday, October 2, 11:00 a.m. - 11:50 a.m.Xserve combines the ease of Mac OS X, the power of Unix, and the reliability of a servergradesolution. A one-of-a-kind deployment environment, Xserve promises to do for theproduction server’s landscape what iBooks, iMacs, Power Macs, and PowerBooks havedone for the desktop landscape – make it simple to use and easier to deploy. This presentationhighlights the various platform-level capabilities of Xserve, including OS X Server.(OS10) OS X for the Unix DeveloperThursday, October 2, 1:00 p.m. - 1:50 p.m.The heart of a great-looking OS X operating <strong>sys</strong>tem is a Unix Core. Unix developersshould find themselves at home with the OS X platform. The same command-line utilitiesstill work; however, you get ease-of-use as well. While you’ll always have the flexibilityof reverting to scripts and command-line tools, in a number of cases you won’tneed to. And even if you do, you can then make it simple for others by making the scriptavailable as a tool to others. This session looks at OS X from a Unix developer’s perspective,highlighting key similarities and differences between the two environments.(OS11) Introducing Quartz: 2D for AppleThursday, October 2, 3:00 p.m. - 3:50 p.m.A key highlight of OS X architecture is Quartz, the lightweight window server and PDFbased2D graphics-rendering library. Quartz provides crisp graphics, and anti-aliasedfonts, and blends 2D, 3D, and QuickTime <strong>con</strong>tent together with transparency and dropshadows. Quartz Extreme boosts the performance of the Quartz rendering <strong>sys</strong>tem withhardware-accelerated graphics. Developers get access to the rich functionalities availablein Quartz through the Quartz 2D Core Graphics API for the Carbon framework andNSView, NSImage, and NSBezierPath classes for Cocoa developers. This session providesa technical introduction to Quartz and highlights application scenarios in whichdevelopers can utilize these rich capabilities.REGISTER BY SEPTEMBER 5th—SAVE UP TO $200


REGISTRATION FORM123CONFERENCE: Sept. 30 – Oct. 2, <strong>2003</strong> EXPO: Sept. 30 – Oct. 1, <strong>2003</strong>Santa Clara Convention Center • Santa Clara, CATHREE WAYS TO REGISTER FOR CONFERENCE1) On the Web: Credit Cards or “Bill Me.” Please make checks payable to SYS-CON Events.2) By Fax: Credit Cards or “Bill Me” 201-782-96513) By Mail: 135 Chestnut Ridge Road, Montvale, New Jersey 07645, Attention: RegistrationPlease note: Registrations are not <strong>con</strong>firmed until payment is received.Please complete sections 1, 2, 3 and 4YOUR INFORMATION (Please Print) Mr. Ms.First Name ________________________________Last Name __________________________________________Title __________________________________________________________________________________________Company ______________________________________________________________________________________Street ________________________________________________________________________________________Mail Stop ______________________________________________________________________________________City __________________________________________________________________________________________State________________________________Zip ____________________Country __________________________Phone ________________________________________________________________________________________Fax ____________________________________________E-Mail ________________________________________PAYMENT METHOD: (Payment in full due with registration)Check or Money Order Enclosed (Registration <strong>con</strong>firmed upon receipt of payment)Check #_______________________________________ Amount of Check $ ______________Charge my Visa MasterCard American Express DiscoverName on card_________________________________________________________________Card #______________________________________________ Exp. Date______________Signature_____________________________________________________________________Billing Address (if different from mailing address)_______________________________________________________________________PLEASE INDICATETotal Registration fee $____________YOUR CONFERENCE CHOICE By 9/5/03 Before 9/26/03 Onsite❑ GP Gold Passport Good for all three days of the .NET, $1,295.00 $1,395.00 $1,495.00Web Services, XML, Java, and Mac OS X Tracks, includingpreferred seating for the Oracle, IBM and Microsoft Russ’Toolshed Tutorials, Keynotes, Panel Discussions, and yourchoice of One Sun Micro<strong>sys</strong>tems Java University SM ClassSelect one: ❑ Architecting Web Services Using J2EE (Oct. 1)❑ Java 2 Platform: Architect Certification Fast Path (Oct. 2)❑ 3D Three Day Conference $1,195.00 $1,295.00 $1,395.00(Does not include Sun Java Education)❑ 2D Two Day Conference (Does not include Sun Java $1095.00 $1,195.00 $1,295.00Education) (select any two days: ❑ Tue. ❑ Wed. ❑ Thurs.)❑ 1D One Day Conference (Does not include Sun Java Education) $595.00 $595.00 $695.00(select any one day: ❑ Tue. ❑ Wed. ❑ Thurs.)❑ JU1 Sun Java University Class $695.00 $695.00 $795.00Select one:❑ Architecting Web Services Using J2EE (Oct. 1)❑ Java 2 Platform: Architect Certification Fast Path (Oct. 2 )❑ JU2 Sun Java University Class $1,195.00 $1,295.00 $1,395.00Attend both Architecting Web Services Using J2EE (Oct. 1)and Java 2 Platform: Architect Certification Fast Path (Oct. 2)❑ VIP PASS FREE FREE $50.00Good for access to the Exhibit Floor, Keynotes and PanelDiscussions, Product Demonstrations, and your choice of(Select one): ❑ Microsoft Russ' Tool Shed (Sept. 30)❑ How to Develop, Deploy, and Manage WebServices Using IBM Tools (Sept. 30)❑ Web Services Workshop presented by Oracle (Oct. 1)❑ EO Expo Only FREE FREE $50.00If you require special assistance coveredunder the Americans with Disabilities Act,please call 201-802-3058 bySeptember 16, <strong>2003</strong>.CANCELLATIONS,SUBSTITUTIONS, REFUNDSFax written request to SYS-CON Registration201-782-9651. Requests for refunds receivedprior to August 29, <strong>2003</strong>, will be honored, less a10% handling charge; requests received afterAugust 29, <strong>2003</strong>, and before September 12,<strong>2003</strong>, will be honored less a 20% handlingcharge. No requests for refunds will be honoredafter September 12, <strong>2003</strong>. Requests for substitutionsmust be made in writing prior toSeptember 26, <strong>2003</strong>. No one under 18 ispermitted to attend. No warranties are maderegarding the <strong>con</strong>tent of sessions or materials.4A. Your Job Title❑ CTO, CIO, VP, Chief Architect❑ Software Development Director/Manager/Evangelist❑ IT Director/Manager❑ Project Manager/Project Leader/Group Leader❑ Software Architect/Systems Analyst❑ Application Programmer/Evangelist❑ Database Administrator/Programmer❑ Software Developer/Systems Integrator/Consultant❑ Web Programmer❑ CEO/COO/President/Chairman/Owner/Partner❑ VP/Director/Manager Marketing, Sales❑ VP/Director/Manager of Product Development❑ General Division Manager/Department Manager❑ Other (please specify)____________________________B. Business/Industry❑ Computer Software❑ Government/Military/Aerospace❑ Computer Hardware and ❑ Health Care/MedicalElectronics❑ Insurance/Legal❑ Computer Networking & ❑ EducationTelecommunications❑ Utilities❑ Internet/Web/E-commerce ❑ Architecture/Construction/Real❑ Consulting & Systems Integrator Estate❑ Financial Services❑ Agriculture❑ Manufacturing❑ Nonprofit/Religious❑ Wholesale/Retail/Distribution ❑ Other (please specify)❑ Transportation_______________________❑ Travel/HospitalityC. Total number of employees at your location andentire organization (check all that apply):Location Company10,000 or more 01 ❑ 01 ❑5,000 – 9,999 02 ❑ 02 ❑1,000 – 4,999 03 ❑ 03 ❑500 – 999 04 ❑ 04 ❑100 – 499 05 ❑ 05 ❑100 or less 06 ❑ 06 ❑D. Please indicate the value of communications andcomputer products and <strong>services</strong> that you recommend,buy, specify, or approve over the course of one year:❑ $10 million or more❑ $1 million – $9.9 million❑ $500,000 – $999,999❑ $100,000 – $499,999E. What is your company’s gross annual revenue?❑ $10 billion or more❑ $1 billion – $9.9 billion❑ $100 million – $999 million❑ $10 million – $99.9 million❑ $10,000 – $99,999❑ Less than $10,000❑ Don’t know❑ $1 million – $9.9 million❑ Less than $1 million❑ Don’t knowF. Do you recommend, specify, evaluate, approve or purchasewireless products or <strong>services</strong> for your organization?01 ❑ Yes 02 ❑ NoG. Which of the following products, <strong>services</strong>, and/or technologiesdo you currently approve, specify or recommendthe purchase of?❑ Application Servers❑ Web Servers❑ Server Side Hardware❑ Client Side Hardware❑ Wireless Device Hardware❑ Databases❑ Java IDEs❑ Class Libraries❑ Software Testing Tools❑ Web Testing Tools❑ Modeling Tools❑ Team Development Tools❑ Installation Tools❑ Frameworks❑ Database Access Tools / JDBC Devices❑ Application Integration Tools❑ Enterprise Development Tool Suites❑ Messaging Tools❑ Reporting Tools❑ Debugging Tools❑ Virtual Machines❑ Wireless Development Tools❑ XML Tools❑ Web Services Development Toolkits❑ Professional Training Services❑ Other [Please Specify]___________________________________________________SYS-CON Events, Inc., and SYS-CON Media make no warrantiesregarding <strong>con</strong>tent, speakers, or attendance. The opinions of speakers,exhibitors, and sponsors do not reflect the opinion of SYS-CON Eventsand SYS-CON Media and no endorsement of speakers, exhibitors,companies, products, or sponsors is implied.Speakers, sessions, and schedule are subject tochange without prior notice.No solicitation by anyone other thanofficial exhibitors, sponsors or marketingpartners is permitted. Such behavior iscause for expulsion without refund.SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>


SPECIAL INSERT:Web Services Edge West Conference & Expo Sept. 30 - Oct. 2, <strong>2003</strong>Register by September 5th and SAVE up toSEPT. 30--OCT. 2, <strong>2003</strong>Santa Clara, CA$200VISIT US ATSYS-CON.COM/EDGEWEB SERVICES EDGE CONFERENCE PAST SPONSORS & EXHIBITORSJava and Java-based marks are trademarks or registered trademarks of Sun Micro<strong>sys</strong>tems, Inc., in the United States and other countries. SYS-CON Publications, Inc., isindependent of Sun Micro<strong>sys</strong>tems, Inc. All brand and product names used on these pages are trade names, service marks or trademarks of their respective companies.


Call for Authors.NETDeveloper’s Journalis the independent source for the in-depthinformation you need to succeed as a.NET developer. Who better to help usprovide that than you, our readers – theones in the trenches writing .NET codeevery day?If you want to share your expertise, tips,and tricks with other .NET developers, go tohttp://grids.<strong>sys</strong>-<strong>con</strong>.com/proposal andsubmit a proposal for anarticle in .NETDJ. Wewant to hearfrom you!Advertiser IndexADVERTISER URL PHONE PGBorCon www.borland.com/<strong>con</strong>f<strong>2003</strong>s 23Borland go.borland.com/c6 2Comdex www.comdex.com 25Crystal Decisions www.crystaldecisions.com/cr9/220 800-877-2340 67CrystalTech Web Hosting, Inc. www.crystaltech.com 877-323-HOST 9Edge Web Hosting www.<strong>edge</strong><strong>web</strong>hosting.net 866-EDGEWEB 11ektron www.ektron.com/net 4.NET Developer's Journal www.<strong>sys</strong>-<strong>con</strong>.com/netdj 888-303-5282 33Parasoft www.parasoft.com/net8 888-305-0041 68SoftwareFX www.softwarefx.com 7SpeechTEK www.speechtek.com 877-993-9767 27SYS-CON Media www.<strong>sys</strong>-<strong>con</strong>.com 888-303-5282 63SYS-CON Media www.<strong>sys</strong>-<strong>con</strong>.com/2001/sub.cfm 888-303-5282 37Transcender www.transcender.com/netdj 615-726-8779 3Web Services Edge <strong>2003</strong> www.<strong>sys</strong>-<strong>con</strong>.com 201-802-3055 43Web Services Journal www.wsj2.com 888-303-5282 35General Conditions: The Publisher reserves the right to refuse any advertising not meeting the standards that are set to protect the high editorialquality of .Net Developer’s Journal.All advertising is subject to approval by the Publisher.The Publisher assumes no liability for any costsor damages incurred if for any reason the Publisher fails to publish an advertisement. In no event shall the Publisher be liable for any costs ordamages in excess of the cost of the advertisement as a result of a mistake in the advertisement or for any other reason.The Advertiser is fullyresponsible for all financial liability and terms of the <strong>con</strong>tract executed by the agents or agencies who are acting on behalf of the Advertiser.Conditions set in this document (except the rates) are subject to change by the Publisher without notice. No <strong>con</strong>ditions other than those set forthin this “General Conditions Document” shall be binding upon the Publisher.Advertisers (and their agencies) are fully responsible for the <strong>con</strong>tentof their advertisements printed in .Net Developer’s Journal. Advertisements are to be printed at the discretion of the Publisher. This discretionincludes the positioning of the advertisement, except for “preferred positions” described in the rate table. Cancellations and changes to advertisementsmust be made in writing before the closing date. “Publisher” in this “General Conditions Document” refers to SYS-CON Publications,Inc. This index is provided as an additional service to our readers. The publisher does not assume any liability for errors or omissions.Coming Next MonthInterview with Juval Lowy,Microsoft RD for Sili<strong>con</strong>ValleyAn MS “Software Legend” discusses <strong>sys</strong>tem architects,component-oriented development, and .NETinterviewed by Derek FergusonSecuring Enterprise DataTransfer with SQL Server CEKeeping your data secure while allowing access from“out in the wild”by Chris D. Mayo and Jon RauschenbergerTop Three Security Mistakes.NET Developers MakeClosing the doors to attackby Caleb SimaProduct Review:Chart FX for .NETby Doug Hollanddotnetdevelopersjournal.com • September <strong>2003</strong>59


Product ReviewIBM Rational XDEDeveloper Plus EditionPutting the VS.NET environment on steroidsHOMECompany InfoRational softwarefrom IBM18880 Homestead Rd.Cupertino, CA95014Phone: 800.728.1212Web: www.rational.comE-mail:www.rational.com/<strong>con</strong>tact/request.jspTest EnvironmentSony RX-755, 512MBRAM, Windows XPProfessional ServicePack 1aBY DOUG HOLLANDCLIENTSERVEREVERYWHEREmicrosoft Visual Studio.NET <strong>2003</strong> is arguably themost advanced integrateddevelopment environment(IDE) available today. Prepareto see your Visual Studio .NET environmenton steroids!IBM Rational XDE DeveloperPlus Edition (v<strong>2003</strong>) provides aneXtended DevelopmentEnvironment that builds uponVisual Studio .NET 2002 or <strong>2003</strong>,providing seamless integration ofadvanced UML modeling andassisted coding features for allaspects of .NET development.Software development with the.NET Framework has made our livesas software developers a little lesscomplicated when compared withthe previous generation of Microsoftdevelopment tools and languages;however, applications are becomingmore complicated and the timeframes to develop them are everdecreasing.If you’re a software developerand you’d like to be able to makethat barbecue tonight instead ofworking late trying to meet a criticaldeadline, then I would strongly suggestyou take a good look at acceleratingyour .NET development usingIBM Rational XDE Developer PlusEdition.Why Should .NET DevelopersCare about UML?The Unified Modeling Languageis the de facto standard for visuallydescribing the requirements, specification,and design of a software<strong>sys</strong>tem. It is a combination of thevery best of three previous notationsby Grady Booch (Booch), IvarJacobson (Objectory), and JamesRumbaugh (OMT), all of whomhave since joined IBM RationalSoftware.It probably isn’t surprising thenthat the best UML tools have comeout of Rational Software and thatRational XDE is no exception; infact it has taken UML modeling toan all-new level with the <strong>2003</strong>release.In addition to supporting bothVisual Studio .NET and several JavaIDEs, IBM Rational XDE DeveloperPlus Edition also includes a licensefor Rational Software’s runtimeanalysis tool, known as IBMRational PurifyPlus (v<strong>2003</strong>).Dynamic Sequence DiagramsUsing Visual TraceRational PurifyPlus enablesRational XDE’s Visual Trace tool toautomatically generate UMLsequence diagrams (see Figure 1),enabling the developer to see thesequence of calls through the codeas they actually occur rather than asequence diagram of how the callsshould occur.This is an important distinction,as handcrafted sequence diagramswill normally show only the intendedsequence of calls rather than theactual sequence of calls. Aside fromsaving you time and money in producingthis level of documentationfor your software, dynamicsequence diagrams provide developerswith a real advantage whendebugging code.Initially the diagram generated isnot technically <strong>con</strong>sidered a UMLsequence diagram, as it also <strong>con</strong>tainssome tracing information notnormally part of UML sequence diagrams.You might also want to suppresssome of the messages for thepurposes of this sequence diagram;you can do this before telling XDEto generate the final sequence diagramfor you.Before the addition of VisualTrace, Rational XDE was withoutdoubt the best UML modeling toolavailable – and one of the only onessupporting .NET developers nativelywithin the Visual Studio .NET environment.With the addition of VisualTrace and the dynamic <strong>con</strong>structionof sequence diagrams, Rational XDEsimply blows competing productsaway!Round-Trip EngineeringAnother advantage of usingRational XDE in software developmentis its ability to generate UMLdiagrams from source code in eitherC# or VB.NET and then maintainthese diagrams with code synchronization,enabling you to changeeither the code or the model andhave those changes synchronizedback – generating either code fornew UML model elements or UMLmodel elements for new code.Often software engineers useexisting code in their projects forwhich there may be little or noexisting documentation.Since installing the latest versionof IBM Rational XDE Developer PlusEdition I have used it very successfullyto reverse engineer two piecesof code that you may be familiarwith; the CLR Profiler sample project(see Figure 2) and the ExceptionManager application block, both ofwhich are freely available on theMSDN Web site.Using Rational XDE to reverseengineer the CLR profiler – which isa <strong>con</strong>siderable project <strong>con</strong>taining inexcess of 40 classes implemented inC# – I was able to rapidly understandthe design of the profiler andsee the relationships between variousclasses.60September <strong>2003</strong> • dotnetdevelopersjournal.com


Using the UML class diagramsthat I was able to rapidly produceenabled me to quickly feel comfortableenough to make changes to theCLR profiler code without the worrythat I would introduce defectsbecause of a lack of understandingof the design.Rational XDE also provides youwith a good view of the application’sdesign, enabling you to easily seeareas of the design that could beimproved using refactoring techniques.Gang-of-Four Design PatternsRational XDE provides an excellentmechanism for implementingthe 23 design patterns that werepopularized by the now famousDesign Patterns by Erich Gamma etal., known as the Gang of Four. Eachpattern is defined in the form of awizard that creates the UML modelelements necessary to integrate thedesign pattern into your application.Creating any of the design patternsis simply a matter of clickingthrough the wizard and selectingthe appropriate existing classes thepattern should interact with.Few software developers realizethe power in these patterns andeven fewer know how to implementmore than a couple of them in severallanguages.Using Rational XDE you can now<strong>con</strong>centrate on selecting the appropriatedesign pattern for your particularproblem and not <strong>con</strong>cernyourself with how to actually implementthat pattern in your languageof choice; Rational XDE will <strong>con</strong>structthe code for you using a technologyknown as code templates.Reusable Asset SpecificationAnother awesome feature inRational XDE is its support for theReusable Asset Specification, whichenables you to package and shareUML model elements and associatedcode templates that you can thendistribute throughout your organizationor even the entire Internetusing an ASP.NET Web service thatis included with Rational XDE.Imagine you need to implementa typed collection in C#, but youneed to search either MSDN ordotnetdevelopersjournal.com • September <strong>2003</strong>yahoo.com to find the bestway to implement thetyped collection.As mentioned before,Rational XDE provides anASP.NET Web serviceto enable you to shareand search the Internet forRAS assets that can helpsolve your developmentneeds. You can simplyincorporate an asset intoyour design and RationalXDE will provide you withthe UML model and associateddocumentation forthe solution, along withthe associated code templatesto enable the implementationto be automaticallygenerated in yourchosen language.Although typed collectionsare not all that complicatedto implement inany CLS-compliant .NETlanguage, they are a goodexample of <strong>con</strong>tenders forimplementation as areusable asset. However,the sky is the limit as far asthe power and complexityof reusable assets that youcould package and distribute.f 1Exchanging UMLModels Using XMIAnother great benefitf 2of IBM Rational XDEDeveloper Plus Edition isFigureits support for version 1.2of the XML MetadataInterchange Specification (XMI),which allows you to import andexport UML models between othertools that support the XMI standard.In the same way that the UMLstandard is a published standard ofthe Object Management Group, theOMG has also produced the standardsfor XMI, which is gainingindustry acceptance and beingactively implemented by severaltool vendorsConclusionEssentially, you now have a decisionto make. Like Neo in the movieThe Matrix, you are being presentedFigure 1: UML sequence diagram dynamically generated by Rational XDE2: UML class diagram showing the Microsoft CLR Profiler Samplewith two options: you can take theblue pill and <strong>con</strong>tinue to work onyour .NET development the sameway you have been until today –probably missing that barbecue Imentioned earlier – or you can takethe red pill and dive into .NETdevelopment on steroids using thelatest in model-driven developmenttools.If you’ve decided to take the redpill, then I can recommend RationalXDE without reservation as the premierUML modeling solution for the.NET developer. Buckle up! Your lifeas a software engineer is not goingto be the same again!Doug Holland, a professional .NET<strong>con</strong>sultant based in Roseville, CA,has over eight years of experiencein designing and developing software.Doug currently works with the.NET Framework and specializes in<strong>con</strong>sulting for companies using IBMRational XDE for .NETdevelopment.doug.holland@precisionobjects.com61


.NETDJ Book WatchEssential .NET, Volume I:The Common Language RuntimeHOMEAuthors: Don Boxwith Chris SellsPublisher: AddisonWesleyISBN: 0201734117List Price: $49.99Rating:Reviewer: Dan MaharryReviewer bio: Dan Maharry is afreelance technical writer andreviewer based in the UK.CLIENTSERVEREVERYWHEREin a world where developersare baying for theattention of customers,very few people can claimto command that of the developer.Their blogs may be the only clue tothe higher level of thinking at whichthey operate, creating the answers towhen and why code works – in additionto the perennial how. Whetherhe likes it or not, Don Box is onesuch <strong>sys</strong>tem-meister. He may dislikewriting books, but when one of hiscomes out, people pay attention andread. His first foray into the field,Essential COM, was the book thatexplained how COM worked, and hislatest, Essential .NET, does exactlythe same for the .NET Framework’sCommon Language Runtime (CLR).After the first chapter’s history ofthe evolution from COM to the CLR,the book takes a bottom-up approachto the CLR, starting with a deep anddetailed six-chapter look into the coreelements of the platform. Chapter 2begins with assemblies – the programmaticunits of the CLR – and theimplications of their <strong>con</strong>struction. Welearn how they are versioned, loaded,and built; and why, therefore, theymay be written in as many .NET languagesas required. There’s real depthto the material here – you really dotouch the bottom of the abyss, so tospeak – but it’s countered with occasionallevity that keeps it a readablebook instead of a dense referencemanual. The same is true of all thetext. To whit, there’s even some irony:“to allow old dogs to avoid learningnew tricks, there is finalization,” hedeclares in the section on theCommon Type System.It’s here that we discover how differenttypes and interfaces are distinguishedfrom themselves andfrom one another, and how theirvariations and relationships are keptseparate by the CLR. It’s refreshingto note that the proverbial big pictureis never very far away from thecommentary. After taking time toexplore the avenues for types andinterfaces, Box notes that typesthemselves aren’t very interestinguntil you start working withinstances of those types, and we’reoff again working through another30 pages on how object instancespreserve a sense of identity, howthey are cast into other types, andhow they incorporate themselvesinto the <strong>con</strong>cepts of reflection andmetadata. Only then do we look atthe actual life cycle of an object, itscreation, modification, and disposal.The attention to detail is great, andthere’s pretty much no ambiguity inthe text at all, but with that comes aslowness to this section that mayhave readers floundering in its wash.One recurring theme of the bookis the idea that while there is a set ofrules for doing things, there willalways be circumstances in applicationdevelopment that call forexceptions to be made to thoserules. This is true at a small scaleand – as Chapters 6 and 7 prove – ata large one too, covering as they dohow the CLR calls and runs methodsfirst on a single machine andthen over a wire. How does the runtimetreat methods called explicitly,implicitly through a delegate, asynchronously,or as a combination ofthe three? How do remote calls andtypes bridge whatever gaps theymust cross and activate the remoteobjects and methods they’re targeting?The answers are here.Essential .NET reflects Box’s pridein .NET and also his slight dissatisfactionwith it. You can sense thatwhile he knows .NET version 1 is animprovement over COM, it’s not asgood as it could be, and things arestill to be done in v2 and beyond.Chapter 8’s look at AppDomains –and in particular its discourse onthreading within and throughAppDomains – is a good example ofthis. Meanwhile, we finally come fullcircle in our investigation of the CLR,seeing how the assemblies we builtin Chapter 2 are resolved and executedwithin AppDomains. Exceptionsto rules included, we also see howobject references are marshaledacross AppDomains for interapplicationcommunication if required.The last two chapters look atwider topics around the CLR in asmuch detail as they can for topics thathave entire books dedicated to them.Chapter 9 covers code-access securityand Chapter 10 covers topics that arenot of the CLR but which can beaddressed from within a .NET application:explicit memory management,using p/invoke to import COMmethods from DLLs, and so on. Bothare <strong>con</strong>cisely written and to the point,but unsurprisingly leave you feelinglike there’s more to these topics thanis covered here. Chapter 9 is a greatand clear introduction to code-levelsecurity, for example, but you’ll get alot more out of Michael Howard’sbook, Writing Secure Code, if youwant to know more.Essential .NET isn’t an easy read,but everyone should try to read it atleast once. Focusing on the CLR itselfand how it deals with the componentsof an application means that ittruly is aimed at .NET developers as awhole (including those building andusing alternate implementations ofthe CLR). What code examples thereare, are given in C#, but this is incidentalreally and won’t stop VB.NET,J#, or any other developers from gettinga great deal out of this book.It’s a dense, complex volume thatrequires a fair amount of effort tounderstand and use, and to someextent this may put people off. Onthe other hand, it is so packed withgreat nuggets of information thatthey may be inspired to keep reading.Of course, there is the questionof whether this book will actuallyimprove your .NET developmentskills, but in riposte, you can honestlysay that no volume details the CLRand the potential so well – and thatalone is worth its cover price .62September <strong>2003</strong> • dotnetdevelopersjournal.com


304,187 of the World’s Foremost IT ProfessionalsDIRECT MAIL, EMAIL OR MULTI-CHANNELTarget CTOs, CIOs and CXO-level IT professionals and developerswho subscribe to SYS-CON Media’s industry leading publicationsJava Developer's Journal...The leading publication aimedspecifically at corporate andindependent java developmentprofessionalsLinuxWorld Magazine...Thepremier weekly resource of linuxnews for executives with keybuying influencesWeb Services Journal...Theonly Web Services magazine forCIOs, tech, marketing & productmanagers, VARs/ISVs, enterprise/app architects & developersXML Journal...The world's #1leading XML resource for CEOs,CTOs, technology solutionarchitects, product managers,programmers and developersPowerBuilder Developer’sJournal…The only PowerBuilderresource for corporate andindependent enterpriseclient/server and<strong>web</strong> developersWebSphere Developer’sJournal...The premier publicationfor those who design, build,customize, deploy, or administerIBM’s WebSphere suite of WebServices softwareColdFusion Developer'sJournal...The only publicationdedicated to coldfusion <strong>web</strong>developmentWebLogic Developer’sJournal…The official magazinefor BEA WebLogic applicationserver software developers, ITmanagement & usersRecommended for a variety of offers including Java, Internet, enterprise computing, e-business applications, training, software, hardware,data back up and storage, business applications, subscriptions, financial <strong>services</strong>, high ticket gifts and much more.For email information:<strong>con</strong>tact Frank at 845-731-3832frank.cipolla@epostdirect.comepostdirect.com 800-409-4443 fax845-620-9035NOW AVAILABLE!The SYS-CONMedia Database304,187 postaladdresses.NET Developer’s Journal…The must read iTechnologypublication for Windowsdevelopers & CXO managementprofessionalsFor postal information:<strong>con</strong>tact Kevin at 845-731-2684kevin.collopy@edithroman.comedithroman.com 800-223-2194 fax845-620-9035Wireless Business &Technology... The wirelessmagazine for key corporate &engineering managers, and otherexecutives who purchasecommunications products/<strong>services</strong>


.NET WorldJon Box Takes Reins as.NETDJ Mobility EditorA national thought leader andMicrosoft Regional Director, JonBox, a founding editorial member of.NET Developer’s Journal and asolution architect at Quilogy, haskindly accepted the newly createdposition of mobility editor for thisjournal, with immediate effect.Services and .NET Conference &Expo (www.<strong>sys</strong>-<strong>con</strong>.com/<strong>edge</strong>). Hissession, “Using the ASP.NET MobileControls Runtime,” is on Day One –Tuesday, September 30, <strong>2003</strong>. Hewill endeavor to show how theMicrosoft mobile <strong>con</strong>trols runtimeis one of the most excitingtechnologies inmobile computingtoday and will guidethose attendingthrough the fundamentalsof using this technology to createtheir own .NET apps.The .NET world seems to spinfaster wherever Jon Box is <strong>con</strong>cerned,and we are honored to havehim as the first major section editorof .NETDJ. Next appointment: anyonefor gaming editor?Iron Speed Releases Enhanced Code GeneratorHOMECLIENTSERVEREVERYWHEREJon was recently named to thehighly regarded International .NETAssociation (INETA) SpeakersBureau. As a Microsoft RegionalDirector for Memphis and a memberof Quilogy’s “Atomic” team, heserves as a .NET evangelist focusedon helping developers plan, build,and deploy .NET technologies andapplications. His suitability for themobility editor role is beyond dispute,as anyone familiar with themobility column he’s been co-writingfor us already knows.What they may not know, however,is that Jon’s current work emphasizesmobile solutions using the.NET Compact Framework andASP.NET Mobile Controls and that,most recently, he presented two sessionsat Tech-Ed <strong>2003</strong>.Just for good measure Jon’s alsoco-author (with Dan Fox) ofBuilding Solutions with theMicrosoft .NET CompactFramework: Architecture and BestPractices for Mobile Development, tobe published this fall by Addison-Wesley Professional.Submissions for article ideas youwould like Jon to <strong>con</strong>sider should<strong>con</strong>tinue to be sent via the normalchannel, i.e., http://grids.<strong>sys</strong><strong>con</strong>.com/proposal.Last but not least, Jon will also bea speaker at the end of this monthat Web Services Edge <strong>2003</strong> (West) –International XML, Java, WebSoftware development tools-maker Iron Speed has released anenhanced version of its popular application generator. Version 1.4helps IT departments accelerate the development of Web applications.In a few hours, Iron Speed Designer generates up to 80% of.NET Web applications in a three-tier architecture that includes complexfeatures ranging from a sophisticated Web-based user interfaceto advanced data grids to transaction management.The announcementalso includes a promotionalpricing discount,with software licensesstarting at just $495 forpurchases beforeSeptember 19, <strong>2003</strong>.Full details are availableat www.ironspeed.com.The promotion reflects aminimum 40% discount,according to the company.Iron Speed Designerv1.4 is available fordownload and free evaluation.“Setting a new barfor application generation,the v1.4 release ofIron Speed Designerhelps developers easily tackle the complexitiesof Webapplication development,significantlyreducing developmenttime and ensuringhigher code quality,” says Alan S.Fisher, chairman of Iron Speed. “This is code generation for developers.The software approaches Web application development the waydevelopers do, giving them enormous flexibility and complete <strong>con</strong>trolover the generated code.”www.ironspeed.com64September <strong>2003</strong> • dotnetdevelopersjournal.com


ComponentOne Studio forMobile Devices Beta AvailableComponentOne LLC has madeavailable through a public beta programat www.componentone.comNovell Acquires Ximian toExpand Linux SolutionsProvo, Utah-based Novell, Inc., hasacquired privately held Ximian ofBoston, Mass., the leading provider ofNovell gains, and will carry forward,two key Linux market initiativesthrough Ximian that reinforcethe company’s commitment to theopen source community: GNOME, aproject to provide a full-featuredLinux desktop, and Mono, designedto allow applications developedusing Microsoft .NET to run onLinux, Unix, Windows, and otherplatforms. The combination ofNovell’s network and infrastructure<strong>services</strong> with Ximian’s Linux solutionsprovides compelling newvalue to customers leveraging thepower of open source technologies,according to Novell.www.novell.comtheir ComponentOne Studio forMobile Devices, the latestComponentOne Studio subscriptionfor the Microsoft .NET CompactFramework. The program includesComponentOne FlexGrid for MobileDevices, ComponentOne Chart forMobile Devices, andComponentOne Zip for MobileDevices. ComponentOne Studiofor Mobile Devices allowsdevelopers to create sophisticatedMicrosoft .NETCompact Framework–based applications for mobiledevices.“We’re extremelyexcited about our latesttechnology for theMicrosoft .NETCompact Framework,”said GustavoEydelsteyn, managingdirector ofComponentOne.“ComponentOneStudio for MobileDevices providesdevelopers with the ability to createcustom applications for mobiledevices while taking advantage ofthe power and flexibility theMicrosoft .NET CompactFramework provides.”Once released, ComponentOneStudio for Mobile Devices will beincluded in ComponentOne StudioEnterprise, a complete solution forany Microsoft development environment.www.componentone.comdotnetdevelopersjournal.com • September <strong>2003</strong>desktop and serversolutions that enableenterprise Linux adoption.The acquisition of Ximianexpands Novell’s ability to supportLinux solutions as the companyadds best-of-breed Linux desktop,groupware, and management technologies,and welcomes several ofthe open source community’sleading visionaries – includingXimian cofounder Miguel deIcaza – to the Novell team and astrong core of Linux developersinto the Novell fold.GNU Project DiscoversTrojan AttackIn a message to the free softwarecommunity August 8(http://ftp.gnu.org/MISSING-FILES.README) the GNU projectannounced that its <strong>sys</strong>tem wascompromised in a March attackinvolving a Trojan horse.Although the attack was not discovereduntil the last week of July,after extensive investigation GNUexpressed <strong>con</strong>fidence that theirsource code was not compromised. Itappears the attack was designed toacquire passwords and to help launchattacks against other machines.“It appears that the machine wascracked using a ptrace exploit by alocal user immediately after theexploit was posted,” according tothe GNU message.“The Alpha FTP site atftp://alpha.gnu.org/ has been alower priority for us, but we are followinga similar procedure there.Since alpha.gnu.org is primarily asite for quick release of <strong>con</strong>stantlychanging software, we won’t go togreat pains to restore every file, butwe will restore those files where theintegrity of the file is easy to <strong>con</strong>firm.The CERT Coordination Centerissued an advisory in the matter(www.cert.org/advisories/CA-<strong>2003</strong>-21.html).65


Monkey BusinessGraphics Still the Hot Topicin Open Source .NETWeb <strong>services</strong> also enhancedHOMEDennis Hayes is a seniorsoftware engineer at RaytekCorporation in Santa Cruz, CA,where he writes process <strong>con</strong>trolsoftware. He has been involvedwith the Mono Project for over ayear, and is in charge of theSystem.Windows.Forms andSystem.Drawing namespaces.dennish@raytek.comBY DENNIS HAYESCLIENTSERVEREVERYWHEREgraphics and GUI(System.Drawing,System.Windows.Forms [SWF]) <strong>con</strong>tinue to bea couple of the most worked-on areas inboth Mono and Portable.NET. Otherareas under heavy development includecryptography, Web <strong>services</strong>,coverage and build tools for Mono,dependency charts for Portable.NET,and lots of bug fixes for both.Mono and Portable.NETDo GUI DifferentlyIn a project the size of .NET,choices often need to be madebetween options of nearly equaltechnical merit. Having more thanone project (Portable.NET andMono) can allow more than onechoice to be made. The GUI code(SystemWindows.Forms andSystem.Drawing) is one area wherethe advantages of having multiplechoices are apparent. The mainMono implementation of SWF usesWine/Winelib, but there is also aside project using Gtk# (C# bindingsfor GTK) as the base for SWF (usingGtk# for SWF is separate from Gtk#itself, which is a significant part ofMono). There has also been talkfrom time to time of doing a Macversion of SWF using Cocoa, but nocode has ever been committed.Portable.Net is using X11(XWindows) directly for both SWF andSystem.Drawing. Mono is usingXr: X11, an X11-based graphics libraryfor System.Drawing. It is likely thatMono will also support theWine/Winelib libraries forSystem.Drawing, as they do now forSWF.Independent projects have alsowritten C# wrappers for Qt (Qt#)and SDL (SDL#) for use on .NET.SDL is an open source graphicslibrary for games. Although originallywritten for Windows, it now runson Portable.NET (to see a screenshot, visit www.gnu.org/projects/dotgnu/screenshot8.html), andshould also run on Mono. The projectto write .NET bindings for Qt#has produced some nice screenshots (see http://qtcsharp.sourceforge.net/screenshots.html), butseems to have been idle since April.Finally, Portable.NET is also implementingtheir own extension to.NET, the System.Windows.Forms.Themes namespace.That’s a lot of graphics! I’m gladthat several groups are working toimplement them. In the near futureI expect we will see Mono andPortable.NET running someincreasingly complex applications.It is important to mention thatMono and Portable.NET often docooperate; as noted last month, amajor effort to share many classlibraries (such as the database classes)is under way. Mono andPortable.NET are also starting to worktogether on implementing WSDL(Web Services Description Language).Portable.NETThe DotGNU group is busy workingtoward the 0.1 release, whichshould be out by the time you readthis. As a key part of this, version0.5.10 of Portable.NET has just beenreleased. This is the first release candidatefor the 0.6 version that will beincluded in the DotGNU release.Portable.NET is also likely to have ase<strong>con</strong>d release candidate, version0.5.12. GUIs and bug fixes will be themain thrust for Portable.NET betweennow and the 0.6 release. This is reflectedin the 0.5.10 release, in which themain new features are the 29 SWF<strong>con</strong>trols that are being actively workedon, and the newly impementedthreading classes, which now work.There were also nearly 100 improvementsand fixes in other areas ofPortable.NET, such as compiler optimizationsand changes to make portingto other processors easier. For afull list, see http://dotgnu.org/pipermail/developers/<strong>2003</strong>-July/011079.html. To see a screen shot of a selectionof <strong>con</strong>trols running on a Mac, seewww.gnu.org/projects/dotgnu/screenshot9.html.MonoIn addition to graphics, some areasof Mono that have also seen majorimprovements include cryptographies,Web <strong>services</strong>, the core runtime,and the build <strong>sys</strong>tem. Web <strong>services</strong>now support .asmx files (ASP.NET Webpages meant for XML [SOAP] useinstead of browsing), SOAP headers,and extensions. Web <strong>services</strong> still lackthe ability to make asynchronouscalls, and also a Web <strong>services</strong> documentationpage. The latter is waitingfor WSDL, which is in progress.The core runtime and C# compiler<strong>con</strong>tinue to receive performanceimprovements, bug fixes,and advanced implementations of.NET version 2.0 features like iteratorsand generics. Mono has movedaway from using the Ant build toolon Windows, and now uses makefiles on both Windows and Linux.For developers, builds keep gettingeasier to make, but can still be tricky(especially if the Wine links areincluded for SWF). One of the additionsto the Portable.NET version0.5.10 release is a group of changesto the Portable.NET build <strong>sys</strong>tem tomake it more similar to the Monobuild <strong>sys</strong>tem; this is another exampleof cooperation between Monoand Portable.NET.66September <strong>2003</strong> • dotnetdevelopersjournal.com


Like most developers, you’re tiredof hearing “more productivity.”So we disguised it as a chart.POWERCrystal Reports 9 Advanced Edition Product FeaturesReport Designer –Use intuitive visual interfaces and Wizards to create highly formattedreports without any programmingReport Integration –Integrate reports into <strong>web</strong>, wireless, and windows applicationsusing Java, .NET, and COM SDKs* Data Access –Access virtually any data with native, ODBC, OLE DB, and JDBC<strong>con</strong>nectivity to relational, OLAP, XML, legacy, and enterprise data sourcesWeb Report Viewers –Deploy reports over the <strong>web</strong> with interactive,zero client viewer <strong>con</strong>trols* Custom Report Style Templates –Eliminate redundant formatting by creating andapplying custom templates across multiple reports* Repository –Centrally store key report components in the Repositoryfor sharing across multiple reports and single point updating* Report Parts –Specify existing key report elements, Report Parts, for access viawireless applications and tight integration with <strong>web</strong> applications* Web Deployment –Queue and cache <strong>web</strong> user requestsfor efficient management of variable user loads✔✔✔✔✔✔✔✔FLEXIBILITYEASE OF USE* Custom Data Access –Access user-defined data through JavaBeans andCOM data providersVisual Studio ® .NET Upgrade –Extend reporting beyond the free Crystal Reports included inVisual Studio ® .NETAdvanced Parameters –Deliver reports with pre-defined parameters for processingunique report data views at runtimeXML Support –Integrate reports with your B2B and B2C applicationsvia XML access or export* Unicode Support –Display data stored in virtually any languagein a single report* Formula Workshop –Use Crystal Reports’ extensive formula language for complete<strong>con</strong>trol over report formatting, complex logic, and data selectionGuided Navigation –Establish seamless navigation paths between reportobjects for an improved end user experienceExports –Integrate multiple export options including XML, PDF,DHTML, Excel, Word, RTF, Text & email✔✔✔✔✔✔✔✔* New or updated featuresCrystal Reports is an 11 th generation high-productivity reporting solution for tightlyintegrating dynamic <strong>con</strong>tent into enterprise <strong>web</strong> applications using Java, .NET, and COM.Allowing detailed <strong>con</strong>trol of end user report viewing, interaction, and runtime modification,Crystal Reports is also a fundamental component of the Crystal Enterprise <strong>web</strong>-based informationdelivery <strong>sys</strong>tem. A world leader in reporting, chosen by technology partners including Microsoftand SAP, Crystal Reports is also supported by a full range of online and onsite training andtechnical support.To learn more visit www.crystaldecisions.com/cr9/220 for free online seminars,demos, and evaluation software. To purchase Crystal Reports, Call 1-800-877-2340, visitour online store at www.crystaldecisions.com/store/220, or <strong>con</strong>tact your reseller.© <strong>2003</strong> Crystal Decisions, Inc. All rights reser ved. Cr ystal Decisions, Cr ystalReports,Crystal Enterprise, and the Cr ystal Decisions logo areeither a trademarkorregisteredtrademark of Crystal Decisions, Inc. in the U.S and/or other countries.Allother trademarksorregistered trademarksreferenced arethe propertyoftheirrespective owners.


We make software work ṬMPut .NET-based projects to the .TEST®Introducing NEW Parasoft .TEST® ®Automated unit testing, test case generation& coding guidelines for the .NET framework.Parasoft .TEST is a unit-testing tool that automatically tests classes written onMicrosoft's ® .NET Framework – without requiring developers to write a single testscenario or stub. Parasoft .TEST automatically performs a complete range of staticand dynamic tests on your .NET source code. From traditional to extreme programming,integrating .TEST into the development process automates a vital testingtechnique for any programming process – preventing software errors andensuring that code is structurally sound, maintainable, and portable.Features• Automates real-time unit testing and provides real-time test coverage• Seamlessly incorporates user-defined and automatically generated test cases• Provides complete code diagnosis and failure/error details• Suppresses code elements for customized testing• Automates stub generation, regression testing, and test report generation• Provides <strong>con</strong>fidence metrics ("statistics")• Provides over 210 standard coding rules (".NET Framework Design Guidelines")Benefits• Keeps simple errors from becoming serious problems.• Streamlines the development process for quicker time-to-market.• Ensures that code is structurally sound, maintainable, and portable.• Discovers crash-causing problems and reduces customer aggravation.• For Downloads go to www.parasoft.com/net8. Or call 888-305-0041.Copyright ©<strong>2003</strong> Parasoft Corporation. All rights reserved. All Parasoft product names are trademarks or registered trademarks ofParasoft Corporation in the United States and other countries. All other marks are the property of their respective owners.Platforms:® ®Windows NT/2000/XP. (Fully integrates with Microsoft Visual Studio .NET )Microsoft .NET Framework 1.1.A part of Parasoft AutomatedError Prevention (AEP) Solutions and Services

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!