1、英文翻译 Cutting Edge A Client-side Environment for ASP Pages ASP is a Web technology that relies specifically on capabilities of Microsoft?Internet Information Services (IIS). For this reason, very few commercial products have attempted to provide an ASP-to-HTML converter. The problem with such convert
2、ers is that you must work in conjunction with the Web server to trigger the ASP parser and find the intrinsic objects available. When you double-click on an HTML page from the Explorer shell, you simply ask the browser to retrieve and render the source code of the file. However, when you double-clic
3、k on an ASP file from Explorer, you cannot ask the browser to translate it into HTML. Practical Reasons for an ASP Converter OK, so an ASP-to-HTML converter might not be the tool that thousands of programmers dream of every night. However, I can envision at least a couple of scenarios where such a t
4、ool would be very handy. The first scenario was mentioned by Robert Hess in the April 2000 Web Q&A column. Suppose you have several pages that require some interaction with a database on a frequently visited Web site. Writing them as ASP pages looks like the perfect solution. However, if the databas
5、e is not very volatile and the page output is not highly dependent on the users input, you could easily resort to plain old HTML for better performance. For example, a list of suppliers is probably the kind of data that you would update only a few times a year. Why rebuild that list on the fly each
6、time its requested, when a static HTML page would incur less overhead? An ASP-to-HTML tool could be used as a kind of batch compiler for ASP pages. You write them as server-side resources, and then when you realize they are not particularly dependent on runtime conditions, you can transform them int
7、o static HTML pages with either the .asp or .htm(1) extension. While Im on the subject, let me point out a significant improvement in the management of scriptless ASP pages thats available with IIS 5.0. Until IIS 4.0, all resources with a .asp extension were subject to parsing, whether or not they c
8、ontained script code. With IIS 5.0 this drawback has been eliminated as IIS checks for blocks before loading the ASP parser. An ASP-to-HTML converter would also be handy when you need to view ASP pages offline. For example, a client recently asked me about the possibility of using a single developme
9、nt environment for building both Web sites and CDs. I first considered using static HTML pages that could be viewed over the Web or in a local browser, but the idea was soon dismissed given the complexity and the amount of content involved. Also, my client could not guarantee any particular software
10、 configuration on the users machine, and the only product that could be supplied with the CDs was Microsoft Internet Explorer or a custom Web browser. ASP looked like the natural choice for the Web side of the project, but what about the CD? To make ASP work offline without a Web server, you need co
11、de that extracts all the code blocks from the page and processes them. In addition, this module would have to provide a simulated ASP object model and take care of collecting the portions of plain HTML text. Then it would have to put it all together, combining the static HTML code with the output of
12、 the processed scripts. In this column, I will discuss the architecture of the offline ASP viewer and some implementation details. In particular, Ill show you how to emulate the behavior of the ASP Response object. Next month, Ill finish up the code, covering Request and Server plus some other relat
13、ed topics. This months code shows the potential of this approach and works with typical ASP pages, though it is not comprehensive. I wont cover other ASP objects such as Session or Application because they are rarely needed in local scenarios. The Browsers Role To emulate ASP while working offline,
14、you need a little help from the browser. Basically, the browser must be able to detect whether the page to which its about to navigate is a URL or a local path name and whether it contains the .asp extension. If the user is calling a URL, the browser does what it would normally do. Otherwise, it cal
15、ls a custom module to locally parse the content of the ASP file. Furthermore, the browser is involved when the ASP page that will be emulated contains forms and hyperlinks. (Ill discuss this further next month.) Given these requirements, to deal with ASP pages offline you need a customized version o
16、f the browser. While subclassing Internet Explorer or Netscape Communicator is always possible, I suggest you write a brand new browser from scratch using existing Web browser technology such as the Microsoft WebBrowser control. While Ill use Visual Basic?here, you can also use C+. As a good startin
17、g point in C+, you can try the MFCIE or ATLBrowser samples, both of which come with the latest Platform SDK. In Figure 1 you can see the layout of the browser. For illustration, Ive divided the client area into three blocks: one for the actual HTML rendering, one for the original ASP text, and one f
18、or the expanded HTML text. Figure 2 shows the code for the browser. Figure 1 The Custom ASP Browser? During the forms initialization, a new CAspParser object is created and set to work properly. Once youve clicked the Go button, the browser detects whether youre calling the ASP page locally or over
19、HTTP, and acts accordingly. All the logic is hidden in the CAspParser class, which exposes three public functions: Initialize, SetscriptControl, and ParseTextToFile. Initialize makes sure the scripting environment is properly initialized and ready to work. Through SetscriptControl, the class receive
20、s the working instance of the script environment (more on this later). ParseTextToFile parses the content of the given ASP file and creates an output stream. Basically, the parser reads the whole content of the ASP file into memory and then walks through it. It locates any occurrence of %, then copies the text that precedes % to