Read an Excerpt
Microsoft has had good days and bad in the media, in public opinion and in U.S. Federal Court. Throughout the various sideshows that have marked its growth into the world's largest software company, Microsoft has displayed utter brilliance in one regard: creating technologies for developers. So effective is its approach that even arch rival software vendors use Microsoft tools. One might argue there is no choice, but there are, in fact, plenty of choices. That's what some find so irksome: They despise Microsoft for its arrogance and heavy-handed tactics, yet there is no denying the care and ingenuity the company invests in its server software and the tools it builds to create Windows applications.
Microsoft seized upon the concept of Web-based applications early on. Its browser, Internet Explorer, is so loaded with application-friendly features that it is a platform unto itself. It ships with a pair of powerful scripting languages. Its rich object model exposes every aspect of a Web document for programmatic scrutiny and modification. Microsoft's Web applications model makes more sense to me than any programming interface I've used.
That's not to say that it takes a small effort to turn this model into a finished application. There are plenty of places to stumble along the way. With this book, I have attempted to lay out a roadmap for you, in three parts. First, I'll discuss some approaches to design, development and deployment that make the best use of the technologies in the Microsoft arsenal. Second, I'll introduce you to the component technologies that make Web applications possible. And third, you'll find referencematerial at this book's tail that should make a good companion to any development project you take on.
What you need to know
This book is part technological travelogue, part reference. My intent is to pass along to you those things I had to learn the hard way. Obviously, I can't start from zero, nor would you want me to, so I do presume you know your way around a computer. I also assume you've used the World Wide Web and other Internet services.
I have attempted to write to a broad audience, so you will find quite a mix of material here. If you're a programmer transferring your skills to Web applications, I'll introduce you to HTML (Hypertext Markup Language), Cascading Style Sheets and other key Web technologies. If you're an old hand at Perl and HTML, you will get a crash course in Microsoft tools and technologies.
What you need to have
This is primarily a Windows 2000 book, but I am mindful of the needs of developers targeting Windows NT 4.0. If you're not quite ready to step up to Microsoft's latest OS, this book is still worthwhile. Much of the subject applies equally well to Windows NT 4.0 and Windows 2000. When I approach a subject that is appropriate only for the newer OS, I'll endeavor to make that clear.
The focus here is on Microsoft tools; most of the screenshots and discussion revolve around Visual InterDev 6.0. However, this is not a Visual InterDev book, so any tool (including a simple text editor) that lets you write and alter Web content will suffice. I find that Visual InterDev's adept management of Web projects, its on-line help and its knowledge of the Document Object Model are genuine aids to productivity. While this book doesn't require the use of Visual InterDev, I do recommend it.
The examples assume you're using a Windows 2000 or Windows NT 4.0 server to run your applications. Personal Web Server (PWS), the scaled-down implementation of IIS (Internet Information Services) that runs on Windows 95, Windows 98, Windows NT Workstation 4.0 and Windows 2000 Professional, while suitable for some investigatory work, may not suffice for more functional examples. It is possible to coerce most Web applications to run on PWS. If you choose to do this, I leave the details to you. I would consider it unwise to attempt to run this book cover to cover without a properly-configured server handy.
Chapters that discuss database access were written for Microsoft SQL Server 7.0 or 2000. Active Data Objects and ODBC abstract database access, so you could run many of these examples and exercises under Access, FoxPro or another ODBC-compliant database. I strongly advise against rolling out any commercial solution (in-house or external) based on a single-user database. During development, use of a smaller database is acceptable and sometimes necessary. One desktop database, the MSDE (Microsoft Database Engine), is freely available to developers. It is a single-user database with enterprise roots. It contains enough of SQL Server 7's functionality to be a useful springboard from workstation to server.
Your client development machine can be any 32-bit Windows system. You can develop directly on the server (though working at the console of a production server is ill-advised), or load Visual InterDev on a Windows 95, Windows 98, Windows NT Workstation or Windows 2000 Professional client machine.
You should load the MSDN (Microsoft Developer Network) Library CDs, part of the Visual InterDev/Visual Studio distribution, onto your hard drive. This is a massive, searchable on-line documentation set that covers virtually all Microsoft technologies. You will find it indispensible as a companion reference to the discussions in this book.
The MSDN library that ships with Visual Studio is obsolete by the time you buy the product. It makes a good starting point, but Microsoft distributes invaluable monthly updates of its library. Subscribers to Microsoft Developer Network get these updates delivered to them automatically. Those blessed with high-speed Internet access can also download library updates and other software from Microsoft's Web servers. I rely on an MSDN Universal subscription, which includes all operating system and development products offered by Microsoft. Less costly subscriptions get you the documentation alone.
I maintain a research lab for my magazine and book writing, and for my technology research. This book required updating that facility. The core consists of four systems: a development workstation, a Windows 2000 server, a Windows NT 4.0 server, and a database server. Both Windows servers are dual-processor Intel machines. Removable hard drive cartridges on the workstation and Windows servers allow me to switch personalities on these machines at will. The workstation, for instance, can switch operating systems in seconds. I used this capability to test examples across OS versions.
The database server runs Windows NT 4.0 and Microsoft SQL Server 7.0. It is an otherwise unremarkable machine, save for its use of an innovative RAID (redundant array of inexpensive disks) solution developed by Consensys Corporation. RAIDZONE is a combination of hardware and software that allowed me to affordably equip my database server with over 100 gigabytes of fast, accessible storage. The RAIDZONE-equipped database server ran 24 hours a day, 7 days a week for the months it took to research and write this book, all without a single hiccup. I thank Consensys for its use of this hardware and bid you check RAIDZONE out for yourself.
What's not covered
This topic (Web-based applications for Windows 2000) is so broad that covering all of it, at least in a book that can be hefted without the aid of hydraulics, is unthinkable. I have no affection for 1,200-page books. We (the publishers and I) also recognize the value of getting this volume to market while the information in it is still relevant. I will share with you a couple of the more controversial decisions I made regarding coverage.
With all the energy Microsoft is putting behind Visual Basic (VB), you might well wonder how I could write about Web application technology and not include it. My primary reason is this: Any book using VB necessarily becomes a book about VB. I chose to focus on technologies and the common (i.e., non-VB) programming interfaces to them.
Java is another story. Seldom has a programming language generated such elation, such grandiose dreams of change and of a new world in which everyone is free from the oppressive yoke of Microsoft. As I write this, Java for Windows is a dangerously moving target. Sun, Java's inventor, is hanging on while powerful interests work to convince Sun to give up control. Meanwhile, Java has yet to live up to its promise of effortless cross-platform compatibility; Java is closely tied with UNIX, so much so that Microsoft saw (and seized) the opportunity to create its own Windows-friendly derivative of Java, Visual J++. Under fire from Sun and others, Microsoft is rethinking its Java policy, leaving developers in a quandary: Do you develop for the Sun Java Virtual Machine (JVM) for Windows, dealing with compatibility issues and an outdated look and feel? Or do you bet on Microsoft's Java and hope that it survives?
In a heterogeneous environment, particularly one that includes legacy systems (like IBM's AS/400 and S/390), Java is indispensible. If you color within the lines, you can write a Java application once and run it across platforms. Replacing code written in Cobol, Fortran, RPG and other "dead languages" is always worth the effort. Java effectively blurs the distinctions between minicomputers, mainframes and various flavors of UNIX.
In a Windows-centric environment, Java is markedly less powerful. Were there no worthwhile alternatives to Java (C++ is my choice), I'd happily devote pages to helping you find your way through the Java minefields. As it is, there are plenty of other ways to go. And as with VB, plenty of great Java books.
About Windows NT 4.0
I do not assume you're gung-ho for Windows 2000. Many, though enamored of new technology, are wary to put much stock in it until it has proven itself. Windows 2000 certainly deserves some berth to mature. One need only consider that Windows NT 4.0 has had numerous Service Packs and hot fixes applied to it, all built to repair major flaws in the software. Windows NT 4.0 is still a real force, existing in greater numbers than Windows 2000. As such, this book does not snub this more mature OS in favor of its eventual replacement. You will find references to many facilities that are part of Windows NT 4.0. This book has special relevance to developers attempting to create applications that run identically under Windows NT and Windows 2000.
The weightier matter of choosing an operating system for your solution requires more than preface-level discussion. I have given much of the first chapter to it.
Accessing Source Code
You will find this book's code samples, corrections and other useful material on the Web site. See Appendix E for more information.