Wayne Berry
April 9, 1998
Contents
Introduction
Design
Development
Summary
Who would bother to generate two sets of Web pages, one dynamic, the other static?
We would. We're 15 Seconds , a free, online resource for developers and administrators working with Microsoft Internet solutions. 15 Seconds is the world's biggest development resource for Internet Information Server (IIS) and Active Server Pages (ASP) technology. In creating our site, we had to reconcile a number of seemingly conflicting goals. And to solve those problems, we evolved what we call fifth-generation Web sites. You may find our solutions helpful to your own problems building a site around IIS and ASP technology.
Here's what we wanted to do with 15 Seconds:
Some of these goals seem to be at odds with one another. For instance, the ability to add content to a database and automatically produce pages requires dynamic page creation. However, Microsoft Index Server doesn't index dynamic pages created in this way.
So we designed a publishing process that helps us meet all our goals.
We decided to produce two sets of pages, looking exactly the same, but serving different purposes. One set consists of dynamic ASP pages that go to the database, get content, and display the content in a fixed format. They are designed so that we can add content to the database and the pages are automatically created, including navigation on related pages and cross-reference links.
The second set of pages is static, and is generated from the first set. These pages, served to readers on our "live" server, are the ones Microsoft Index Server indexes, as well as being the files we check into Visual SourceSafe. We can serve static pages because we want to serve the same page to every reader, unlike the dynamic philosophy of serving a different page to each reader. While static pages limit certain activities -- no upselling, one-to-one marketing, or shopping carts -- these things are not among our goals.
We call this publishing process, which accommodates the process of creating a set of static pages from a separate set of dynamic pages, "fifth-generation publishing."
Consider the typical development cycle for a medium-size company developing a Windows application in C++. Developers design and program the product. Either the developers or a separate build team do the actual building. Once a build is completed, a test team finds the bugs. The developers fix them, and another build is prepared for testing. At some point in time, either the product contains no more bugs or the investors run out of money. The product ships.
Fifth-generation Web sites, which involve Web applications, will be designed the same way. A set of developers will design the sites, probably involving ASP pages, Microsoft SQL Server , client-side scripting, and Dynamic HTML (DHTML). At some point, the site will be built, then tested against the multitude of browsers available. Bugs will be found, which the developers fix, producing a new build. At some point, the Web application (or "Weblication") will be ready to ship and it will be deployed onto a live server.
As with the Windows applications, Web applications have a process issue to solve. What do the developers do when the test team is working? How do you build a Web site so that a tester can test a version of the site that is not being modified while developers are working on bugs?
Wayne Berry
April 9, 1998
Contents
Introduction
Design
Development
Summary
Who would bother to generate two sets of Web pages, one dynamic, the other static?
We would. We're 15 Seconds , a free, online resource for developers and administrators working with Microsoft Internet solutions. 15 Seconds is the world's biggest development resource for Internet Information Server (IIS) and Active Server Pages (ASP) technology. In creating our site, we had to reconcile a number of seemingly conflicting goals. And to solve those problems, we evolved what we call fifth-generation Web sites. You may find our solutions helpful to your own problems building a site around IIS and ASP technology.
Here's what we wanted to do with 15 Seconds:
So we designed a publishing process that helps us meet all our goals.
We decided to produce two sets of pages, looking exactly the same, but serving different purposes. One set consists of dynamic ASP pages that go to the database, get content, and display the content in a fixed format. They are designed so that we can add content to the database and the pages are automatically created, including navigation on related pages and cross-reference links.
The second set of pages is static, and is generated from the first set. These pages, served to readers on our "live" server, are the ones Microsoft Index Server indexes, as well as being the files we check into Visual SourceSafe. We can serve static pages because we want to serve the same page to every reader, unlike the dynamic philosophy of serving a different page to each reader. While static pages limit certain activities -- no upselling, one-to-one marketing, or shopping carts -- these things are not among our goals.
We call this publishing process, which accommodates the process of creating a set of static pages from a separate set of dynamic pages, "fifth-generation publishing."
Consider the typical development cycle for a medium-size company developing a Windows application in C++. Developers design and program the product. Either the developers or a separate build team do the actual building. Once a build is completed, a test team finds the bugs. The developers fix them, and another build is prepared for testing. At some point in time, either the product contains no more bugs or the investors run out of money. The product ships.
Fifth-generation Web sites, which involve Web applications, will be designed the same way. A set of developers will design the sites, probably involving ASP pages, Microsoft SQL Server , client-side scripting, and Dynamic HTML (DHTML). At some point, the site will be built, then tested against the multitude of browsers available. Bugs will be found, which the developers fix, producing a new build. At some point, the Web application (or "Weblication") will be ready to ship and it will be deployed onto a live server.
As with the Windows applications, Web applications have a process issue to solve. What do the developers do when the test team is working? How do you build a Web site so that a tester can test a version of the site that is not being modified while developers are working on bugs?
The dynamic publishing system written by 15 Seconds' in-house development team uses ASP pages to provide context and to retrieve the content from the SQL Server. The paradigm is based on the concept that all content should be placed in a database, and ASP pages should display the information providing the format to the content, but not supply the content itself. By adding to the database, we create additional pages, and links to those pages, without having to write the page itself.
The tool we use to create static pages from dynamic pages is XBuilder from Sign Me Up Marketing . XBuilder creates a project file, containing associations between the static pages and the dynamic pages, much like Microsoft Visual C++. The project file is generated from traversing the dynamic site. Not only can XBuilder build Web sites, it can also build CDs from dynamic pages.
The test team uses the static pages to test the site on a separate internal server. If these pages are correct, they will be the ones to go "live." However, if the pages contain bugs, typos, or broken links, these things are corrected and a new build made. One great advantage of this system is that the test team can test a fixed version of the site while developers are enhancing the dynamic ASP pages. Development is not breaking the page and defeating the testing effort, while a single set of source code can be used, instead of split source trees.
Once the static pages have been tested, they can be checked into Visual SourceSafe. There are many advantages to using source control to save a copy of your Web site. If testing missed a major bug in the site, you can quickly revert to the previous build. You can propagate old builds of the site to an inactive server and compare them against the new site, showing the progress for that period of time. You can also compare the differences between builds according to dates. You can even use previous builds as a legal tool for catching copyright violations, as in the case of articles that you published under copyright last year, but that are not currently on your site.
Without static pages, you cannot take advantage of source control. This is because the actual content that makes up the page is contained in the database and cannot be saved from the file system.
Once the test team has approved the build of the site, it can be deployed to the Web simply by copying the static files to the Web site, either locally or at an off-site host. Because we are using static pages, and no dynamic page-generation occurs, the site can be hosted on any type of platform.
Another benefit of deploying a static build is the ability to have mirror sites in other countries. The main site for 15 Seconds is hosted in Texas, but a mirror site is hosted in Africa. To produce the mirror, once you have the original static pages, all you have to do is send the same set of pages onto a different server via FTP. Since the pages are all relative to the virtual root and do not contain the domain name, they reference off the domain they reside on.
Being able to use Microsoft Index Server is another benefit to having static pages. Index Server does not correctly index ASP pages if their content is stored on a database, but has an easy time with static pages.
Web sites that use this same fifth-generation process include the Microsoft Technical Support Knowledge Base and FreeShop International .
Wayne Berry is a programming consultant, author, and owner of Sign Me Up Marketing, a Seattle-based Internet marketing firm.