Developer Central http://www.adtmag.com/ November 5, 2003 - Vol. 3 #3 ================================================================= THIS ISSUE SPONSORED BY: - Still Hand-Coding ASPX and SQL? Try Code Generation Today http://info.101com.com/default.asp?id=3449 - Free whitepapers on the hottest topics in the IT industry http://info.101com.com/default.asp?id=3448 - Introducing a New E-Newsletter from Syllabus http://info.101com.com/default.asp?id=3453 ================================================================= In this issue : 1) Editorial Chatter 2) Weblinks 3) Improving Software Development: Spontaneous Generation In Action 4) Briefing: RoboHelp X5 5) Briefing: Infravio Ensemble 6) Briefing: Integra Enterprise 7) Briefing: JNetDirect 8) Review: CompuWare DriverStudio 9) Review: eXpress Persistent Objects 10) Review: InstallShield Express 11) Review: RMTrack 12) Review: TextML Server 13) Review: Logidex .NET Library 14) Review: Rational XDE Developer .NET 15) New and Notable 16) Web Resources for Developers 17) Reader Mail ********************************************************************* Sponsor: Download the All New Code Generator: Iron Speed Designer DOWNLOAD the all new code generator Iron Speed Designer for a free evaluation and eliminate hand coding of your application infrastructure. Quickly generate advanced ASP.NET data grids, custom e-forms, application security, and all the SQL in a custom 3-tier application. Easily extend the generated source code. Download your FREE EVAL today! http://info.101com.com/default.asp?id=3449 --------------------------------------------------------------------- Editorial Chatter For a few years now, I've been writing a monthly column for MCPmag.com. From time to time people have asked me how they could get to the past columns, and there really was no easy answer. Well, now there is, with the publication of THE SKILLFUL DEVELOPER from CertCities (CertCities, MCP, and ADT are all part of 101communications, along with many other publications). THE SKILLFUL DEVELOPER is a PDF-only, 150-page book (though of course you *could* get a copy printed and bound, and send it to me to autograph), containing several years worth of those columns. If you've been subscribing to Developer Central for a while, you've seen some of them here in the "Improving Software Development" section. For the collection, I went through the whole batch, updated URLs, and added comments about what I got right -- and wrong. I think it's a pretty nifty collection. Check it out and order your copy at http://store.yahoo.com/certcities/cegutoskde.html . Well, the Microsoft PDC is safely over now, and boy did they announce a lot of software and impress a lot of people. Of course, I have some thoughts about all this too, and this being my soapbox, I'm going to share them with you. I should preface this by noting that I wasn't there. This means that I've been free of the Microsoft reality-distortion field, but also that I'm relying on published stuff to form my opinions. Also, you should know that I think Windows user interface design has been in a steady downhill slide since roughly Windows 3.0. That said, and in no particular order: Avalon - The new presentation subsystem. The important part here is the new Framework classes that give me control over the new user-interface widgets. The unimportant part is XAML. Why are people so excited about writing XAML by hand? Do they write resource files by hand? I'd rather write procedural code than declarative markup any day. Hopefully the designers will write all the XAML I ever need, because frankly, I am quite sick of typing angle brackets. I've seen some people online complaining that Microsoft is reinventing the wheel here by not using XUL, or XSD, or some other existing standard for Avalon's files. That's silly. They're not building a Web UI or an InfoSet, they're building a new desktop UI. It makes sense to come up with a targeted file format that does efficiently just what is required. Oh, and a prediction: Office 2006 will introduce user interface "innovations" that are (a) not part of the standard Aero user interface (b) impossible to do using the Avalon classes (c) annoying. WinFS - The new metadata layer in the file system. No, it's not a new file system, it's stuffed on top of NTFS. Potentially interesting, but if past metadata-oriented tools have taught us anything, it's that metadata is only useful if tools exist to easily create it. Pop quiz: if you turn on the "Comments" column in the Details view in Windows Explorer, how many of your files have comments? Uh-huh. Well, searching is going to be really fast if everything boils down to SELECT WHERE NULL. I expect one pretty hot market for ISVs post-Longhorn is going to be tools that let you quickly and intelligently create metadata for existing files. Indigo - "Unified programming model and communications infrastructure for developing connected systems". Yeah, I'm sure it's the greatest distributed framework ever. But you know what? I've had ways to build distributed applications since DCOM. I can count the number of times I've been paid to do so on the fingers of one hand. Distributed applications are sexy, but I suspect most developers never need this goop. If you do, though, this is the time to get serious about using a service-oriented architecture, if you're not doing so already. Otherwise, your migration to Indigo is likely to be pretty painful. Visual Studio "Whidbey" - Looks like some useful innovations here, and this one will be out in a reasonable time (unlike Longhorn), so I'll be digging in soon. My main interest is in the new stuff in the FCL. I don't feel the need for any language innovation at this point. Of course, some would say I'm not a real developer anyhow, because I never memorized the C++ standard. The refactoring support in the IDE will be useful if Microsoft doesn't botch it; hard to tell yet. ASP.NET 2.0 - There is a TON of interesting new stuff here. If you thought ASP.NET 1.0 was good for building Web applications, wait till you see 2.0. The ASP.NET team set a goal of eliminating 70% of code from applications, and they claim to be making it. Of course, to some extent that's a crock: the removed code is just showing up as additional declarative stuff in the markup. But given that the IDE will write most of that for you, it's a big win. SQL Server "Yukon" - I've been playing with this one for a while. It's nifty. It has so many new capabilities I'll never use them all. Most current DBAs are going to pitch a fit when they discover that all of their familiar tools have been replaced by a version of the VS .NET shell. But this is the no-brainer upgrade of the bunch for me. Visual SourceSafe - There are some changes coming in VSS, though they apparently aren't in the bits that were handed out at the PDC. Support for Web connections will be a welcome relief. However, if they don't do some substantial re-engineering of the repository, it's still going to be hard to recommend VSS for serious projects. MSBuild - So, Microsoft is so paranoid about open source software that they've decided to reinvent Ant and NAnt with their own incompatible syntax. And it's more darned angle brackets. Is there a user interface for this stuff? If not, I'll stick with FinalBuilder. Next Generation Secure Computing Base - I do not want these bits on my computer. No doubt I'm just a paranoid SlashDot-reading Microsoft-basher. Longhorn Help - You realize, I assume, that it will end up being something like eight or ten years between help versions from Microsoft, now that they've killed off HTML Help 2.0. I expect I'll have everything moved over to RoboHelp's formats long before Microsoft gets back into the picture here. Also, is this stuff gonna work on other platforms, or only Longhorn? If the latter, it's not great for anyone trying to maximize sales. ObjectSpaces - Microsoft gets into the object-relational mapping act two years after everyone else. I fully expect to see any innovations here copied in other products before MS manages to release. But of course, just having it in the box will mean that some people use it. Overall: lots of ambitious plans, but count on almost everything changing before it ships. Whidbey and Yukon are probably past the design-change stage, except in minor ways; if you want to concentrate your learning time on stuff with short-term applicability, start there. A few resources so you can read more and make up your own mind: Avalon: http://msdn.microsoft.com/longhorn/default.aspx?pull=/msdnmag/issues/04/01/Avalon/default.aspx WinFS: http://msdn.microsoft.com/longhorn/default.aspx?pull=/msdnmag/issues/04/01/WinFS/default.aspx Indigo: http://msdn.microsoft.com/longhorn/default.aspx?pull=/msdnmag/issues/04/01/Indigo/default.aspx Whidbey: http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx ASP.NET 2.0: http://www.asp.net/whidbey Yukon: http://www.microsoft.com/sql/yukon/productinfo/default.asp Visual SourceSafe: http://blogs.gotdotnet.com/korbyp/permalink.aspx/4d2d405c-1ab7-48b6-8bc0-708582b653e1 MSBuild: http://www.gotdotnet.com/team/PDC/4075/TLS347.ppt NGSCB: http://www.gotdotnet.com/team/PDC/4042/ARC341.ppt Longhorn Help: http://www.gotdotnet.com/team/PDC/4280/CLI309.ppt ObjectSpaces: http://www.gotdotnet.com/team/PDC/4095/DAT410.ppt All PDC sessions, with PowerPoint slides and sample code: http://msdn.microsoft.com/events/pdc/agendaandsessions/sessions/default.aspx And finally, a correction: a couple issues ago, in my review of InstallShield DevStudio 9, I said that the command-line build tool couldn't handle DevStudio files saved in XML format. That's incorrect; in fact, every part of the product works with either the binary or XML formats. ********************************************************************* Sponsor: Global Knowledge offers free tips on the hottest IT topics Global Knowledge offers Free white papers, written by our expert instructors, on the hottest IT topics in the industry. Learn how to improve the performance of your Web Siter, migrate to ASP.NET, or prepare for an upgrade to Window 2003. Global Knowledge is a leader in the IT education with world-class instructors. Download these white papers today and let us make you the expert! http://info.101com.com/default.asp?id=3448 --------------------------------------------------------------------- Beware, as always, of long URLs below. They may well wrap to the next line. You might want to take a look at Chris Sells' UrlRun (http://www.sellsbrothers.com/tools) which can help with this problem. --------------------------------------------------------------------- Weblinks: Fresh Developer Content on 101's Web sites - Eclipse overshadows wildfires and solar flares at OOPSLA http://www.adtmag.com/article.asp?id=8452 - Father of C# grilled at Microsoft PDC http://www.adtmag.com/article.asp?id=8449 - .NET, SQL Server push Merant into Microsoft camp http://www.adtmag.com/article.asp?id=8472 - Microsoft expands 'Shared Sources' http://www.adtmag.com/article.asp?id=8409 - Tools for the new Office system http://www.adtmag.com/article.asp?id=8410 - Borland targets ease of use in next JBuilder IDe http://www.adtmag.com/article.asp?id=8388 - Scripting for MCSEs: Controlling Network Connections http://mcpmag.com/columns/article.asp?EditorialsID=619 - Automating User Mailbox Creation http://mcpmag.com/columns/article.asp?EditorialsID=615 - Introductory Database Access with PHP http://www.certcities.com/editorial/columns/story.asp?EditorialsID=161 - Microsoft Pushes 'Watson' for ISV Apps http://www.entmag.com/news/article.asp?EditorialsID=6015 - IBM Aims "Stinger" at PDC Buzz http://www.entmag.com/news/article.asp?EditorialsID=6011 - Don't Think of Windows SharePoint Services as Free http://www.entmag.com/news/article.asp?EditorialsID=6007 --------------------------------------------------------------------- Improving Software Development: Spontaneous Generation In Action If a soiled shirt is placed in the opening of a vessel containing grains of wheat, the reaction of the leaven in the shirt with fumes from the wheat will, after approximately twenty-one days, transform the wheat into mice. - Jean-Baptiste Van Helmont Oh, would that software were as easy to produce as mice! Well, sometimes it can be. At least, that's a rough summary of Jack Herrington's new book CODE GENERATION IN ACTION (Manning, 2003). Herrington writes about code generators: custom programs that build source code, based on some sort of input file. Although some developers seem to have a "real men don't use code generators" (so they use lots of cut and paste?) attitude, it's very clear that code generators can be essential when you're trying to get a large project done on time and within budget. Considering the usefulness of code generators, it's somewhat surprising that more developers don't depend on them. Do we actually like writing the same series of statements to initiate a database connection, read the results of a stored procedure, and return it as an object property five hundred times? Are we too busy writing repetitive code to learn new tricks? Are we all secretly afraid of making it clear how easy our jobs are? I don't know the answer, but I do know that this book can provoke thought and perhaps change your working habits. And that's a good thing. Getting Active With It Herrington starts with a case study, and then identifies two basic kinds of code generators: active and passive. A passive code generator dumps code into your project and forgets about it. Lots of wizards and other IDE tools work this way. By contrast, an active code generator (and all of the code generators in the book fall into this class) takes responsibility for maintaining the code. When you want to change the classes from an active code generator, you tweak the input file or the code generator itself; you never directly edit the output. He goes on to identify six basic types of active code generation: - The code munger takes an input file, parses it, and creates an output file from some built-in or external template. - The inline-code expander takes source code with some special markup and creates production code from it. Embedded-SQL generators, which allow you to drop SQL statements into C or Java (for example) code work this way. - The mixed-code generator is similar to the inline-code expander, except that the results are written right back to the input file. For example, special comments might specify delegate code that needs to be created and added to the file. - The partial-class generator reads some sort of abstract definition file and builds a base class source code file to implement the definition. The user can then create a derived class to get the final desired functionality. - The tier generator builds an entire tier (typically, a data access tier) from an abstract definition. UML products that integrate with your IDE can fall into this calss. - The full-domain language is a Turing-complete programming language created just for your problem. It gives you a general-purpose way to specify code that should be created. The book contains examples of the first five of these, and some limited discussion of what a full-domain language can look like. Ruby? What's a Ruby? Nope, not the precious stone, the programming language. You'll find Ruby at http://www.ruby-lang.org . You'll also find it at the heart of this book. All of the examples (and there are many!) are written in Ruby. You may not have run across it in the past, but Ruby is a general-purpose object-oriented scripting language with some similarities to Perl or Python. Ruby supports a number of features that are useful for code-generator writers, including built-in support for regular expressions and portable I/O coding constructs. If you've never used Ruby, fear not. The book includes a chapter on setting up Ruby and essential add-ons like an XML parser and a templating package. Herrington also builds a set of classes to parse C, C++, Java, SQL, and PostgreSQL code. And a helpful appendix provides an introduction to Ruby (starting, of course, with the venerable Hello World example). There's More Than Code in This Stew So far, I've been talking about code generation as a simple process that puts together some sort of source code that you can feed into a compiler. And indeed, that's one way to look at it. But if you're looking at it that way, you've got blinders on. Through examples and discussion, Herrington shows how to use the same sort of technology to come up with a variety of end products, only some of which fall into the traditional category of "code". These include: - Database access layers - User interface code, for production or test - Documentation (think about the XML comments in C#, which can be turned into HTML help by NDoc) - Unit tests (if you're going to generate code, why not generate tests for the code as well?) - Web services - Business logic layers - DLL wrappers for legacy code - Firewall configuration files And that just covers some of the possibilities. What it boils down to is this: if you can describe an output that you'd like to get, you can likely build a code generator to take the description to the actual output. (This leaves aside the question as to whether it's more work to write the output or build the generator; making that decision is one of the topics tackled in this book). For example, if you're building a product for Windows, it's quite feasible to think of a code generator that produces all or part of the MSI file that will feed the product to the Windows Installer service. FUD Begone! For a bunch of folks working on the cutting edge of technology, we developers tend to have a surprising fear of the unknown and the new. One of the most valuable features of this book is the straightforward discussion of common concerns that people new to the world of code generation often display. For example, in the chapter on generating data access layers (which is the heart of the book, though Herrington works up to this gradually through increasingly-complex tasks) you'll find answers to all of these issues: - The code is going to be out of control - I'm going to be the only one who knows what's going on - Our application semantics aren't well defined yet - This is going to take all the joy out of coding ("If redundant code writing is what you consider fun, then you may find a generator is not for you.") - The database design is too complex to be generated - The generated SQL statements will be rubbish - The up-front development cost is too high - I don't have all the prerequisite skills - The information here is centered around web applications, what about client/server? - My application doesn't use a database If you work through the book, you'll not only end up with an appreciation of how to build a code generator (and an extensive list of existing ones that you can check out), but also with a road map to selling the concept to the rest of your team and your management. Herrington doesn't recommend misrepresenting code generation, but he does come up with good answers to the most common objections you're likely to run into. Go Forth and Generate Itching to get started with code generation, and impatient for that copy of the book that you ordered to ship? Help is just a URL away. In addition to writing the book, Herrington also maintains the Code Generation Network Web site (http://www.codegeneration.net/). Here you'll find an extensive database of products (both commercial and free), articles on code generation, and interviews with developers who are heavily involved on this programming front. The history of software development has some clear trends. One of them is the development of ever more abstract ("higher level") languages in an effort to save time and enable more complex development. Unless you're writing everything in machine language, you're using code generation at some level. When you spot a repetitive task in what you're typing, don't reach for the Windows clipboard - think code generation instead. It's the logical next step. Got a code generation success story? Or are you lost in a morass of poorly-designed spaghetti code from a bad tool? I'd love to hear about your code generation experiences either way by e-mail to MikeG1@larkfarm.com. I'll use the most interesting comments in a future issue of Developer Central. --------------------------------------------------------------------- Briefing: RoboHelp X5 RoboHelp X5, starting at $499 eHelp San Diego, California (858) 847-7900 http://www.eHelp.com eHelp has put the finishing touches on a new version of its flagship RoboHelp application for flexibly generating and editing help files and related documentation. The new version will be available some time this month, but I've already seen it in action and talked to the product team a bit, so here's a peek at what's coming. The big news here is that RoboHelp has suddenly gotten much more team friendly with the introduction of the RoboSourceControl application. This gives you a fully functional source code control application in the package, and tightly integrated with RoboHelp. You can check files in and out, manage security and permissions, identify and compare versions, and roll back files to earlier versions. And because they're using the standard SCCAPI, you can also use your existing source code control system if you prefer. They've also taken pains to minimize bandwidth use, and to make the process friendly for distributed or occasionally-connected users. On the content side, RoboHelp now has import and export capabilities for both XML and PDF. With XML, you can use DocBook or XHTML, or define your own standard for export. With PDF, there's an intelligent import process that uses the formatting information in the PDF file to determine styles for the help project. You can also export help to PDF, which makes for nice manuals. RoboHelp still supports many help file formats, from Microsoft HTML Help to the newly-added Sun JavaHelp 2.0. And of course eHelp continues to promote their own cross-platform FlashHelp format; I expect to see that gain in prominence now that they've been acquired by Macromedia. RoboHelp has been an impressive help-authoring system for quite a while now. With the new support for multiple-author projects, it's just getting better. --------------------------------------------------------------------- Briefing: Infravio Ensemble 4.0 Ensemble 4.0, starting around $75,000 Infravio Cupertino, California (408) 861-3000 http://www.infravio.com/ Infravio calls themselves the "leading provider of Web services management and integration software." I talked with them recently when they announced the release of Ensemble 4.0, their latest platform. Their goal is to approach Web services from an enterprise application integration (EAI) perspective. They see Web services as supplying business logic, and Ensemble as supplying a host of supporting services around that logic. You'll probably recognize this general vision as matching pretty well to the current buzzword Service-Oriented Architecture (SOA), and indeed, Infravio acts as an architectural partner for their clients. In addition to supplying turnkey software, they'll also review plans, define projects, and even write Java code if there's some place where a bit of extra glue is needed. With their typical customer paying several hundred thousand dollars for a rollout, this sort of holistic approach is expected. Ensemble concentrates on creating a "productivity layer" between Web services clients and servers. Unlike the typical anonymous client approach that most of us think of in connection with Web services, they promote a contractual approach where particular consumers are registered (though they also support anonymous endpoints when it makes sense). Ensemble sits at that contractual level, supplying routing, transactions, transformations, security, and other services. The result is that the Web services themselves are coupled much less tightly to their consumers, and a single Web service can serve many consumers with slightly different needs. In the context of an enterprise, this might amount to, say, an inventory Web service presenting different information to an order entry application and a management rollup report. In this release they've also added some management bits to the productivity layer, to handle monitoring, logging, alerts, and notifications. All of these services are specified at design-time rather than run time. Ensemble maintains its own repository of metadata that contains the contracts between providers and consumers. Developers work with a Web-based configurator to set up these contracts and the software that they call upon. Ensemble also helps turn existing services into Web services. They provide a series of wrappers that can turn low-level Java, C#, C++, or SQL interfaces into WSDL, which of course then play in the Web services world. Infravio also provides their own orchestration engine, or it can be configured to work with existing orchestration software in your enterprise. Right now the Ensemble platform runs on J2EE. They're in the process of porting all of this infrastructure to .NET as well, and expect to have that release by the end of the year. Certainly setting up a SOA backbone is no simple undertaking. If your organization is ready to head down this road, you're probably already thinking about what would be involved in configuring everything yourselves. For a major project, it's worth seeing whether you can buy the infrastructure rather than building it. That's where Ensemble comes in. --------------------------------------------------------------------- Briefing: Integra Enterprise Integra Enterprise 4.0, starting at $50,000 Solstice Software Claymont, Delaware (302) 791-9900 http://www.solsticesoftware.com/ Back in June I wrote about Solstice software and their enterprise-level testing solution. Now they're shipping version 4.0, and it seemed like a good time for a chat about what's up in their world. Integra Enterprise is still composed of three modules: Integra Automate is a workbench for building test cases for distributed software. New in Automate is an "intelligent record" and replay capability. The recording piece, like the rest of Integra, is designed for the enterprise. You can deploy multiple recorders on multiple servers and capture streams of data from multiple middleware protocols into a single test case. A central console coordinates the whole process, and can replay the data on demand. It can also change the speed of replay. For instance, you might capture 24 hours of transactions and then play them back in 2 hours when you need to test a change in some component of the system. Integra Simulate is the piece that simulates unavailable systems so that you can test a distributed application before everything is built. Perhaps an order entry Web service or a particular database is lagging - Simulate can make it appear as if they really exist. Simulate now lets you build up a library of simulators to reuse in your own enterprise. Finally, Validate is the piece that spots where any error is actually occurring. With Validate you can track messges as well as database and file updates and quickly find problems even in large data sets. Integra Enterprise has had some serious deployments lately, and partly as a result of this they've increased their protocol support. You can now test middleware that uses XML, HTTP, HTTPS, SOAP, WSDL, TIBCO, WebSphereMQ, webMethods, JMS/BEA, and others. They're also able to quickly (3 weeks) build new adaptors if your organization needs a different protocol. Some of their reference customers are extremely happy, reporting things like a 20x improvement in test coverage, a 50% reduction in headcount, or a $20 million dollar savings. The other news with this release is that Integra is now a Mercury partner. Mercury's suite of testing tools is probably the most widely-deployed in large organizations; now you can tied the Integra distributed system testing directly into your existing Mercury infrastructure. Integra test cases link into the TestDirector viewer and can be launched from TestDirector, and any defects are fed back to the Mercury pieces. There's a big win here in lower retraining costs if your QA people already use Mercury. If you're working on a large distributed project and don't know how to test it, or suspect that your test suite is inadequate or out of control, a call to Integra might well be in order. --------------------------------------------------------------------- Briefing: JNetDirect JNetDirect Herndon, Virginia (571) 203-7275 http://www.jnetdirect.com/ JNetDirect is the new name for a company you may know as NetDirect, now that they've been acquired by Juldi, Inc. They're in the business of providing JDBC drivers for access to non-Java databases, but based on a talk I recently had with them, they're also starting to move on a broader vision of making it possible to get at your data on both the J2EE and .NET platforms, regardless of where it started. It's a fact of life that most enterprises will have a mix of software from different vendors, so products that build bridges are very important. Two of their products were released a while back: JSQLConnect and JDataConnect. JSQLConnect is a JDBC driver for access to Microsoft SQL Server 6.5, 7.0, or 2000 databases. Though Microsoft has a driver you can download, the JSQLConnect driver offers substantially more features and standards compliance, as well as better performance and scalability. JDataConnect is a more wide-reaching switchboard piece. It's a server that runs on Windows, providing a type 3 JDBC driver so that Java applications can pull data from a wide variety of Windows databases, including Access, FoxPro, Oracle, Informix, Sybase, dBase, and more. There are also a couple of new products in the works. Just announced is JSecureConnect, a JDBC driver that adds security, encryption, authentication, and firewall access features that aren't included in the base JDBC specification. With JSecureConnect, you can open up JDBC access to databases including SQL Server, Oracle, and Access via HTTPS and SSL. This offers you a way to do secure database access over the Internet, a requirement for more and more applications these days. Finally, there's JSQLMapper. Not yet released, but being displayed at the PASS conference this month, JSQLMapper provides a user interface and a processing engine to map XML documents to SQL Server database tables. I'm looking forward to learning more about this one, given the increasing importance of building links between XML and relational databases. Depending on what you purchase, JNetDirect's products are in the $500-$1500 range. For that price, you can get a little protection from being locked into a single vendor, as well as make your data more universally available no matter which platform you use for a particular project. --------------------------------------------------------------------- Review: Compuware DriverStudio DriverStudio 3.0, $2,499 Compuware Corporation Detroit, Michigan (313) 227-7300 http://www.compuware.com It's refreshing in this day and age to open a software box and find that it's actually filled with paper manuals. But then, that's understandable: device driver development is one of the more complex and specialized parts of writing Windows software, and DriverStudio offers a wide breadth of tools to help in this endeavor. Start with the basics: DriverStudio integrates Visual Studio with the DDK so you can actually use a modern IDE to develop device drivers, instead of just writing code in Notepad (or, to be fair, the programmer's editor of your choice). Then you also get class libraries and wizards to generate the shell of your driver quickly, avoiding a lot of manual grunt work. The manuals also include extensive documentation of both the class library and the Windows Driver Module, making it easier to find your way around this area of coding. Then there's DriverWorkbench, a set of testing and debugging tools for device drivers. BoundsChecker catches a host of API errors. TrueTime is a performance analysis tool, and TrueCoverage is a code coverage analysis tool to let yo make sure you've tested everything. There are also various other tools to load, unload, and install drivers, take a system snapshot, display debug output, and so on. Finally, you get not one, but two high-end debuggers as part of this package: SoftICE and Visual SoftICE. SoftICE is a traditional single-machine debugger that seizes control of the entire machine when you activate it (via a hotkey, breakpoint, exception, or crash). Visual SoftICE, in contrast, is a dual-machine debugger. A small core of code runs on the machine with the driver you're debugging, and the Visual SoftICE user interface runs on a second computer, connected by serial port, IP, or IEEE 1394. Each of these debuggers has its own strength (SoftICE, for example, doesn't insert any code that might confound a network driver, while Visual SoftICE lets you see what's happening inside a failing display driver). Between the two of them, you can debug on any system from MS-DOS to Windows XP 64-bit edition. If you have enough hardware, you'll want to install DriverStudio in a distributed setting, with the core monitoring components and drivers on a target machine and the IDE on a host machine. If you're strapped for hardware, you can put everything on one computer. If you're really rich, a single host can connect to multiple targets. Obviously, DriverStudio is not for everyone. But if you're trying to do device driver development, you need to invest in a solid debugger, at the very least. You'll find that here, along with plenty of other components to make your life easier. --------------------------------------------------------------------- Review: eXpress Persistent Objects for .NET eXpress Persistent Objects for .NET, $149.99 ($199.99 with source code) Developer Express Las Vegas, Nevada (702) 262-0609 http://www.devexpress.com/ Here's another product to make the link between objects in your .NET code and a database for persistent storage. The DevExpress folks have done a good job of making the most common case easy. Here, for example, is all the code you need to write to define, create, and save a Customer object: Public class Customer : Inherits XPObject Public Name As String Public CompanyName As String End Class Dim c As Customer = New Customer() With c .Name = "Mike Gunderloy" .CompanyName = "ADT" .Save End With That's it! But where, you may be wondering, is the database code? The answer is that XPO takes its best guess at what you want to do by using the Microsoft Access database provider, using the application name and folder for the database name and folder, and creating the database if it doesn't exist already. If you want to overrride these defaults, you just need to assign your own connection string to the default Session object before you start using any persisted objects. XPO can work with either an Access or a SQL Server database, and in fact none of your application code needs to change if you switch from one to the other. Of course, XPO also supports one-to-many relations between objects. It does this with a simple attribute syntax: Public Class Address : Inherits XPObject _ Public Owner As Person Public City As String Public Street As String End Class Public Class Person : Inherits XPObject _ Public ReadOnly Property Addresses() As XPCollection Get Return GetCollection("Addresses") End Get End Property ... End Class XP also offers some other features, including delayed loading for large properties (again, controlled by attributes), a querying syntax to search for objects in the database, and transaction and optimistic concurrency support. The product installs easily and comes with a full set of help files, tutorials, and sample code to get you started. --------------------------------------------------------------------- Review: InstallShield Express InstallShield Express 5 InstallShield Software Corp. Schaumburg, Illinois (847) 466-4000 http://www.installshield.com A couple of issues ago, I looked at InstallShield's new DevStudio 9, the does-everything setup tool. But what if your needs are somewhat more modest? InstallShield's answer to that question is InstallShield Express 5, a simpler (and less expensive) version of the application. Superficially, Express looks much like its big brother. There's the same excellent Product Assistant to guide you through the steps of building a setup program. This makes creating a setup as simple as filling out a bunch of forms. If you prefer, you can use the Installation Designer which offers a more traditional interface in the form of a bunch of property grids. You can start with a blank project, or with a Wizard that will build a project from a VB6, VB .NET, Visual C++, or C# project. There's also a Smart Device wizard that lets you target Windows CE or SmartPhone devices. Installing technologies such as MDAC, MSDE, or the Scripting runtime is as simple as checking a box. These tasks are handled by merge modules, and InstallShield offers updated merge modules for downloading. Of course, Express can't do everything that DevStudio can. Here are a few of the missing features that might cause you to upgrade to the premium package: - Dialog editing - Conditional inclusion of features - User interface debugging - Merge module creation - InstallScript custom actions - MSI validation Still, I'd guess that at least 60% of the applications out there would do just fine with a setup built with Express rather than DevStudio. InstallShield did a good job of focusing this release on the essentials, while leaving truly high-end features for the high-end package. And upgrading is simple, so you can try Express and then move up to DevStudio if you need to without losing any work. --------------------------------------------------------------------- Review: RMTrack RMTrack 1.2.2, starting at $299 RMTrack Issue Tracking Solutions, Inc. Toronto, Ontario (416) 929-1720 http://www.rmtrack.com/Default.asp RMTrack is a very customizable ASP.NET-based bug-tracking system. How customizable? Well, right down to the level of workflow. If you want to add a new status for a bug ("Waiting for Decision from Mr. Bigg", perhaps), you can just fire up RMTrack's graphical workflow designer (which runs in Internet Explorer, along with the rest of the application), add the new state to the workflow diagram, and dictate who can move bugs there and from which other states. So, with a bit of work you can fit the bug-tracking system to your organization rather than the other way around. You can customize pretty much everything else, too: user groups, priority codes, resolution codes, you name it (and of course the usual stuff like which projects you have active and what builds you're planning to make). Even the layout of the main bug form can be changed by manipulating controls on another ASP.NET page. Despite this power, there's a good set of defaults right out of the box. To get going, you just install the application (which went without a hitch on my Windows 2000 test server), set up your users, projects, and builds, and away you go. The user interface is reasonably intuitive, and anyone with a bit of bug-tracking experience shouldn't have any trouble using it. Other nice touches include a way to set up "public users" who can enter bugs but not read reports, a good set of graphical tracking reports, and flexible e-mail notifications. If you'd like to try it out, you can download a 30-day trial version, as well as all of the relevant manuals (there's also excellent help available within the product). You might also like to know that all licenses are discounted 30% through December 20. --------------------------------------------------------------------- Review: TextML Server TextML Server 3.0 Beta, starting at $10,000 Ixiasoft Montreal, Quebec (514) 279-4942 http://www.ixiasoft.com/home.asp TextML server is an XML document server -- that is, it's a specialized database engine designed to hold XML documents. It's been around since 1999, but with their version 3.0 imminent (it should release this month, and the beta is available on their Web site), I thought it was time to take a fresh look. There are three basic parts to the product. First, there's a repository that holds all the XML documents that you put into it (as well as other things like index definitions). Then there's an indexing engine that builds indexes based on the documents, and a search engine so that users can find documents later. Though you can buy this all as a standalone system, their focus is on serving the ISV market with a solid XML infrastructure for commercial products. The key difference between TextML server and databases like SQL Server or Oracle that store XML is that the XML here is not just a blob. Rather, you can pick and choose exactly which tags (using XPath expressions) in the XML document should be indexed. There's an MMC-based tool that lets developers dictate these indexes, and a full XML syntax for submitting queries. The result is something that feels a much more natural XML tool than a database with XML bolted on to the side. There are COM+, ASP.NET, and Java APIs for all of this, and the product comes with clear documentation for both administrators and developers as well as some code samples. Cruise around Ixiasoft's Web site and you'll find pieces to integrate TextML with many other tools. For example, you can download a chunk that links Altova's XMLSPY and TextML together seamlessly. Version 3.0 adds several interesting new features. For starters, there's support for distributed applications via replication (with a publish and subscribe architecture). You can also set up a load-balancing query scheme to distribute the incoming queries across multiple servers, and the whole is cluster-aware for running under Windows Cluster Services. A new hierarchical repository scheme lets you organize documents into nested collections, and to set security and access levels on a per-collection basis. You can also set a versioning policy, specifying how many revisions of a document to keep; this allows you to look at document histories or revert to a previous version. If lots of XML documents are in your future development plans, grab the beta and see how TextML might fit into the picture. There are discounted licenses available for OEMs and ISVs who build applications atop the TextML core. --------------------------------------------------------------------- Review: Logidex .NET Library Logidex .NET Library http://lab.msdn.microsoft.com/logiclibrary/logiclibrary.aspx LogicLibrary Pittsburgh, Pennsylvania (412) 471-4688 http://lab.msdn.microsoft.com/logiclibrary/logiclibrary.aspx I've written about LogicLibrary and their Logidex product before. Now LogicLibrary has teamed up with MSDN to give you a free version of the Software Development Asset management tool running as an integrated Visual Studio .NET add-in. After a 10MB or so download and a trouble-free setup, you'll find a bunch of new windows in your Visual Studio .NET. Start with the main Logidex Explorer window and connect over the Internet back to the repository of information at MSDN. Now go to the Search Result window and start a new asset search. Trying the search string "log*", for example, brought back 176 assets, including namespaces, patterns, and other information. The Exception Management Application Block looks interesting, so I double-click to retrieve its details into the Information window. In the Information window, I can read about the asset, and then click over to a list of its artifacts. These include a list of requirements, a usage guide, and sample code. I can easily download any of these artifacts to my machine to explore further. The final piece is the Reference Models window. A reference model provides a sort of clickable picture of a group of assets - for example, the major Framework classes, or patterns based on tiers. Drilling into the picture with your mouse ultimately results in an asset search. The initial implementation of Logidex .NET for MSDN includes the major Framework namespaces, the Pet Shop reference application, and stuff from the Patterns & Practices site. Overall, I'd rate this a good start, but not yet essential. For this to be really useful to the working developer, the metadata needs to be more fine-grained; ideally, right down to the class level (at the moment, there is no asset finer than a namespace from the FCL, and the information window simply takes you to the appropriate URL in the help). LogicLibrary is using this as a way to get people interested in classifying their own assets for re-use, but I hope they've got an ongoing commitment to work with MSDN as well. --------------------------------------------------------------------- Review: Rational XDE Developer .NET IBM Rational XDE Developer .NET Edition v2003.06 IBM Corporation Somers, New York http://www.ibm.com/rational Visual Studio .NET is itself a complex and far-reaching design environment. But it focuses just on helping you build code effectively. Rational XDE Developer makes the development environment even more complex by bringing modeling into the picture. With Rational XDE installed, you continue to develop software inside the Visual Studio .NET shell. But now, in addition to writing code, you can also design code with UML diagrams (or with more abstract models, for that matter). Key to making all this work is forward and reverse engineering support, as well as model to code synchronization. What that means is that you can make a change to your code, and XDE will update your model -- or vice versa. If you've already got a project full of code, bringing it into the XDE world is as simple as loading your project and telling it to generate the model. Databases, too, can be engineered in both directions, thanks to data modeling support in this version. In addition to bringing modeling into your toolset, XDE opens up the development process in two other significant ways. First, by tying in with other IBM Rational products, it's designed to be a part of an overall software process running from requirements management to build and change management. Second, thanks to support for your own pattern repositories (new in this version), you can create reusable software assets and share them across the enterprise. Repositories can be accessed locally or over the Web. Also new in this version is support for trace sequence diagrams. Basically, you tell it that you want it to graphically monitor what's going on, and XDE builds a sequence diagram as the classes in your application interact in real time. It's very cool to watch this process in action as your classes talk to one another. The sequence diagrams can easily be filtered to let you concentrate on the interactions you're interested in, making them a good debugging tool as well as a documentation tool. Of course, all this power comes at the cost of some complexity. You'll really want to know UML before you dive into trying to use XDE, and you should allow sufficient time to explore the XDE features -- a couple of weeks would not be out of the question (though you can get started pretty quickly, you'll miss the fine points if you don't read the extensive documentation). And of course for small projects this approach is probably overkill. But once you get to the point where you can't hold all the classes in your application and their interactions in your head at once, some sort of symbolic documentation tool is a necessity. XDE can easily fill that spot, and grow with you into an overall development helper for complex projects. --------------------------------------------------------------------- New and Notable - Altova has added C# and C++ code generation to their XMLSPY and MAPFORCE products. They've also launched their own line of training products. More details at http://www.altova.com . - AQTime .NET Edition 2.0 is shipping. This profiler and memory/resource debugger now has a ton of new features including VS .NET integration and the ability to profile into unmanaged code. http://www.automatedqa.com/products/aqnet.asp - DBEncrypt for Oracle version 2 offers row- and column-level encryption for Oracle databases. http://www.appsecinc.com - DBVisualizer 4.0 bills itself as "the universal database tool". It now supports 17 different databases, multiple SQL editors, BLOB management, table and index creation, and lots more. http://www.minq.se/products/dbvis/dbvis40.html - GenX.NET 3.0 is a transformation product that lets you save datasets to formats such as XLS or CVS. http://www.interscapeusa.com/Products/GenX/ - intraVnews is an RSS aggregator for Outlook XP and Outlook 2003. http://www.intravnews.com - Log Explorer 4.0 is the latest version of Lumigent's utility for spelunking in your SQL Server logs. The new version features alerting on deadlocks and rollbacks, extended undo and redo, and easy recovery of tables from backups. http://www.lumigent.com - Merant has announced Merant Dimensions for .NET. Due out near the end of 2003, this integrated VS .NET solution promises to deliver "complete process control, versioning, baseline management, issue management, release management, next-generation build management, and workflow management" - just the sort of thing you need to manage large development teams in the enterprise. http://www.merant.com - nxslt 1.3 is out. Now this command-line XSLT/EXSLT processor supports XInclude 1.0. http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=f63837a2-161e-4f4a-8d3e-310ba9bd774d - OutlookPanes is a native .NET implementation of the sliding panes component used in Outlook 2003. $49-$139 shareware. http://www.developedcomponents.net/index.php?doc=outlookpanes - The Regulator is a new regex tool from Roy Osherove. Features include syntax highlighting, snippets, ties to Web sites, tray minimization, and more. http://www.gotdotnet.com/community/workspaces/workspace.aspx?ID=24289454-7EC7-45B6-82AE-F6A636DC5FEA - SourceGear is out with a single user edition of the excellent Vault source code control program for a mere $49. This is great news for developers working alone. https://store.sourcegear.com/Sales/catalog.asp - Spices.Net is a combination obfuscator and decompiler for .NET. First one I've seen that can decompile to Delphi.NET code. Pricing starts at $192.95, evaluation download available. http://www.9rays.net/cgi-bin/components.cgi?act=1&cid=86 - Watch Your Back! 4.3 is out. This multiple-purpose tool for Outlook lets you manage read receipts, HTML blocking, and attachment saving better than Outlook does. The new version supports Outlook 2003. http://www.grinningshark.com - XmlEdit.NET is a syntax highlighting XML editor control for .NET applications. $19.99 shareware. http://www16.brinkster.com/keith818/SmartComponents/XmlEdit/XmlEdit.htm --------------------------------------------------------------------- Web Resources for Developers - The .NET Compact Framework FAQ provides all sorts of info in one handy collection. http://msdn.microsoft.com/mobility/prodtechinfo/devtools/netcf/FAQ/default.aspx - Browsio is a Visual Studio .NET Add-in that provides a treeview variables cross-reference window, showing you all definitions and references in your projects. C/C++ projects only. $50 shareware. http://www.browsio.com/ - "Cargo Cult Software Engineering" is an essay from Steve McConnell about the bad use of process in some software development organizations. I know I've been in some of those shops myself. http://www.stevemcconnell.com/ieeesoftware/eic10.htm - CLR Profiler 2.0 is a freebie from Microsoft that lets you monitor type allocations, call graphs, garbage collections, and other info in .NET applications. http://www.microsoft.com/downloads/details.aspx?familyid=86ce6052-d7f4-4aeb-9b7a-94635beebdda&displaylang=en - The Edsac Simulator - Just in case you'd like to work with some really classic hardware. http://www.dcs.warwick.ac.uk/~edsac/ - The Enterprise Information Framework, which was MSDN subscriber-only, is now freely downloadable. http://www.microsoft.com/downloads/details.aspx?familyid=80df04bc-267d-4919-8bb4-1f84b7eb1368&displaylang=en - "Filling Your Toolbox" is Cory Smith's list of essential .NET development tools. http://addressof.com/blog/posts/240.aspx - Literate Programming is an interesting portal site for one of the backwaters of software design. In literate programming, you concentrate on writing good documentation with code interweaved, and let tools worry about turning that into an application. The goal is to make things comprehensible for human beings rather than compilers. Note that there's a big difference between this approach and putting formatted-for-machines XML comments in your code. http://www.literateprogramming.com/ - "How Offshore Outsourcing Failed Us" is an in-the-trenches tale of an outsourcing project gone sour.Encouraging reading for those worried about all the local programming jobs moving overseas. http://www.nwc.com/showitem.jhtml?docid=1421f3 - The Logging Application Block is the latest big chunk of code from the Microsoft Patterns and Practices group. http://msdn.microsoft.com/architecture/default.aspx?pull=/library/en-us/dnpag/html/Logging.asp - The Microsoft Office Developer Center is newly overhauled for Office 2003, of course. http://msdn.microsoft.com/office/ - MSDE 2000 Release A is a version of the redistributable SQL Server bits with the "Slammer" worm fixes and other security bits pre-applied. http://www.microsoft.com/downloads/details.aspx?familyid=413744d1-a0bc-479f-bafa-e4b278eb9147&displaylang=en - The OpenNETCF.org WinAPI Library Open-Source Project provides managed code wrappers for a bunch of stuff (like CreateProcess) that got left out of the .NET Compact Framework. This one saved me a bunch of time. http://www.opennetcf.org/winapi.asp - OpinionatedGeek XmlTools is a set of command-line tools for manipulating XML files. http://www.opinionatedgeek.com/DotNet/Products/XmlTools/ - [OT] .NET development - Extra tools - Chris Burrows collected a bunch of .NET tools suggestions from the Win-Tech-OT list and posted them here, along with links to vendor and download sites. I think it's a great list but then, I made many of the suggestions myself. http://madtechnology.net/blog/posts/261.aspx - PE Resource Editor is a free application for in-place editing of resources in PE files. http://www.wilsonc.demon.co.uk/d6peresourceeditor.htm - John Lam has launched Practical Eye for the .NET Guy, a newsletter dedicated to practical advice for working .NET developers. The first issue has some thoughts on build processes and an excellent NAnt tutorial. Good stuff. Subscribe from the sidebar at http://www.iunknown.com/ - Registry Explorer lets you view your registry in Windows Explorer, with full read/write support. http://www.regxplor.com/index.html - The SharePoint Products and Technologies 2003 SDK provides various useful information for the SharePoint developer. http://www.microsoft.com/downloads/details.aspx?familyid=aa3e7fe5-daee-4d10-980f-789b827967b0&displaylang=en - Shell Extensions for .NET Assemblies adds .NET-specific icons and columns to files in Windows Explorer. http://www.codeproject.com/tools/asmshell.asp - SmarterStats is a Web log analysis tool written in ASP.NET/C#. Free for single site use. http://www.smartertools.com/Products/SmarterStats/Pro/Default.htm - SQL Spy is another freeware SQL Server monitoring and management tool. http://www.hybridx.com/sql_spy.asp - TestRunner enables NUnit integration for Visual Studio .NET. http://www.mailframe.net/Products/TestRunner.htm - TrackerV3 is an Explorer-like application that integrates file information, multimedia preview, reporting features, ASCII./binary file views, and lots more. Free for private, educational, or non-profit use. http://www.trackerv3.com/product.htm - TrooBloo RSS feeds - Feeds from a site that tracks tutorials, code examples, and articles for all sorts of technologies. http://www.troobloo.com/content/rss.shtml - TurboVBLite V3 gives you a batch of free add-ins for VB6. http://www.turbovb.com/TurboVBLite.php - UpdateVersion 1.2 is a new version of this command-line tool for changing the version information in a .NET AssemblyInfo file. I find this to be a small but essential bit of my build process. http://code.mattgriffith.net/UpdateVersion/ - "Understanding WSDL" - Aaron Skonnard walks through the basics in a nice clear article. http://msdn.microsoft.com/webservices/understanding/webservicebasics/default.aspx?pull=/library/en-us/dnwebsrv/html/understandwsdl.asp - VBdocman .NET is a help-file generation add-in for Visual Studio .NET, for generating documentation from VB .NET source files. http://www.vbdocman.com/net/ --------------------------------------------------------------------- Reader Mail Mary Chipman writes: "Just read your latest developer e-rag -- One thing InfoPath is good for is an XML-based electronic forms system. We're doing a project (or more correctly -- about to do a project) where its used for entering bills of lading and tracking outbound freight costs, which is integrated wtih a web service. The data store for the shipping data will be SQL Server, and Access will be used for reporting. It's certainly a cut up from Data Access Pages." Mark Arnott writes: "Your editorial chatter made me envious. I dream of some day living way outside the city limits. And I have a question about how you accomplish number 9 (get your own domain routed to your house) in a rural setting. I assume you are too remote for DSL and cable. So how do you get a pipe big enough to host anything from home?" Ah yes, telecommunications - bane of my existence. Nope, no DSL or cable here; not even ISDN. But there's a nice little rural phone company that serves a thousand or so customers. I worked with them to put in a pair of 56K frame relay lines as my connection to the outside world. This is good enough to handle e-mail and my outgoing stuff, as well as some light Web serving. For heavier-duty connections (like larkware.com), I've got a server colocated a 3 1/2 hour drive away with my ISP. I've got a standing order in to move my home office service up to a T1, but unfortunately the local telco is out of bandwidth to Qwest, and Qwest doesn't believe there's actually demand in this area. One thing I'm not using is satellite. I've looked into satellite Internet a few times, and between the lack of bandwidth guarantee and the pitifully slow uplink, it's just not worth the bother until you can afford Inmarsat. At $10,000 or so a month, that's a BIT out of reach for the time being. Brian Cantoni writes: "Regarding mirroring of drives, I was considering doing that with RAID (which my new system will support). I think this is RAID level 1 where you'd have two drives, each of which containing an exact copy of the data. If one fails, you still have the other as backup. Is this how you've implemented it? If a drive does fail, do you need to replace it with the exact same model? What are you using for a hardware firewall?" Yes, mirrored drives are RAID 1, and that's what I've gone with. Under the server versions of Windows, replacement drives don't have to be the same model - in fact, they don't even have to be the same size; you can mirror chunks of drives. As for the hardware firewall, I'm using a SonicWall SOHO3. I started with a SOHO2 a few years back, and I've been quite happy with their products. I can't claim to have made an exhaustive evaluation of the market, though. Eric Brunsen was one of several readers to write about using Ghost (or a similar utility) to make machine rebuilds easier: "I still find that Installing and configuring the OS, Office, SQL Server, VS .NET, standard utilities, SPs, and Hotfixes, and then ghosting makes the repave faster. What I will do from time to time (between repaves) is create a new Ghost image of my OS and Apps (not data) so that when I do the next repave, I have a newer image to work from. When it is time to repave, I use gdisk to completely wipe the drives that contain apps and data, and then lay the image down. Next step is to go to Windows Update and get any missing SPs and/or hotfixes. This saves me lots of time. The last "real" install I did took the better part of 2 days to install and configure everything (most of the time was spent waiting on installs). The Ghost re-install usually takes 2-3 hours max (depends on the number of CDs or if I am getting the image off of a network disk)." Personally, I find that my set of Windows and application bits changes faster than I need to repave, so I'm not using this strategy any longer. But it's definitely something to think about. ********************************************************************* Sponsor: CMS Review: A Resource on E-Learning and Course Management Systems CMS Review, a new bi-monthly newsletter from Syllabus provides information, analysis, case studies and technical tips on course management systems in higher education. Stay on top of what's happening in this demanding and increasingly universal technology. To subscribe, go to: http://info.101com.com/default.asp?id=3453 ================================================================= News in this newsletter is written and compiled by Mike Gunderloy, mailto:MikeG1@larkfarm.com. I'd love to hear from you. Or for between-issue rants and reviews, visit me at http://www.larkware.com . To find out how you can sponsor this newsletter, contact Abraham Langer at mailto:alanger@101com.com Application Development Trends Magazine 101communications LLC 600 Worcester Road Suite 301 Framingham, MA 01702 Phone (508) 875-6644 Fax (508) 875-6622