264 lines
9.4 KiB
Plaintext
264 lines
9.4 KiB
Plaintext
Multilingual Simple and Power Samples
|
|
=====================================
|
|
|
|
|
|
Table of Contents
|
|
=================
|
|
|
|
Overview
|
|
Developing Components
|
|
C++
|
|
ATL
|
|
Installation
|
|
Directory List
|
|
Usage
|
|
Sample ASP scripts
|
|
Support
|
|
Change Notes
|
|
|
|
|
|
Overview
|
|
========
|
|
|
|
Here, for your edification, are two Active Server Pages components,
|
|
each implemented in two different environments: C++/ATL (Microsoft
|
|
ActiveX Template Library) and Microsoft Visual Basic 5.
|
|
|
|
The implementations are functionally equivalent. Each implementation
|
|
should behave in exactly the same way. Each implementation is written
|
|
in an idiomatic style to demonstrate the best way to implement the
|
|
component in that environment.
|
|
|
|
The Simple component has one method (myMethod) and one property
|
|
(myProperty), which can be both retrieved (get) and modified (set).
|
|
MyMethod converts a string to uppercase; myProperty is a string in the
|
|
object that can be get or set. There is nothing ASP-specific about
|
|
the Simple component and, if desired, it could be used from any OLE
|
|
container.
|
|
|
|
The Power component (found in the \intermediate folder) is a superset
|
|
of the Simple component. In addition to myMethod and myProperty, it
|
|
has myPowerMethod and myPowerProperty (gettable but not settable),
|
|
which demonstrate some ASP-specific features. Two other standard but
|
|
optional ASP methods are also provided: OnStartPage and OnEndPage.
|
|
These methods bracket the lifetime of a page. OnStartPage is needed
|
|
to gain access to the intrinsic ASP objects: Request, Response,
|
|
Server, Application, and Session.
|
|
|
|
MyPowerMethod and myPowerProperty make use of the Request and Response
|
|
objects: Request to gain access to the ServerVariables collection and
|
|
thereby the ScriptName and the HttpUserAgent (user's browser)
|
|
variables; Response to write directly back to the user's browser.
|
|
MyPowerProperty returns the name of the ASP script from which it was
|
|
called. MyPowerMethod writes a browser-dependent message back to the
|
|
user's browser; one for Microsoft Internet Explorer, a different one
|
|
for anything else.
|
|
|
|
|
|
Developing Components
|
|
=====================
|
|
|
|
You can develop ASP components in Visual C++, Visual J++, Visual
|
|
Basic, or any other language that builds ActiveX COM objects.
|
|
|
|
These samples are written for IIS 4.0. You must have the latest
|
|
version of IIS to compile and use these components. You must
|
|
also have installed Microsoft Transaction Server (part of the Windows
|
|
NT 4.0 Option Pack).
|
|
|
|
|
|
C++
|
|
===
|
|
|
|
The C++ samples require Microsoft Visual C++ 5.0 or newer along with
|
|
ATL (which comes with VC5).
|
|
|
|
If you get an error about "don't know how to make asptlb.h" for the
|
|
power samples, you will need to copy
|
|
|
|
<InstallDir>\iissamples\sdk\include
|
|
|
|
to your include directory, \Program Files\DevStudio\VC\include.
|
|
The default installation directory is C:\Inetpub.
|
|
|
|
Finally you must have the lastest version of MS Transaction Server
|
|
installed (part of Windows NT 4.0 Option Pack). Add the include path
|
|
and library path of MTX before any system directories under
|
|
Tools:Options.... So your include path might look like this:
|
|
c:\program files\mts\include;c:program files\devstudio\vc\include;...
|
|
(depending on where you have installed MTX).
|
|
|
|
If you intend to build from the command line, you must edit
|
|
vcvars32.bat accordingly as well.
|
|
|
|
|
|
ATL
|
|
===
|
|
|
|
The ATL samples also requires the latest version of ATL (Microsoft
|
|
Active Template Library). ATL ships with Visual C++ 5.0.
|
|
|
|
ATL is the recommended library for writing ASP and other ActiveX
|
|
components in C++:
|
|
* produces small, fast, industrial-strength components ("lean and mean")
|
|
* supports all COM threading models (single, apartment, free)
|
|
* supports IDispatch interfaces
|
|
* dual interfaces are easy
|
|
* supports the OLE error mechanism
|
|
* methods are called very quickly
|
|
* fine control over COM features ("closer to the metal")
|
|
* many other features
|
|
|
|
For ATL 2.0, in order to add a method or a property to a component, it
|
|
is necessary to modify the .idl, .h, and .cpp files by hand. With ATL
|
|
2.1, the wizards in Visual C++ 5.0 automates much of this for you.
|
|
|
|
To create a new component with ATL:
|
|
* Start a New Project Workspace in Developer Studio
|
|
* Select ATL COM AppWizard
|
|
* Enter the name and location of the project
|
|
* Hit Create.
|
|
* Accept the defaults and hit Finish.
|
|
|
|
Now that you've created the project, it's time to create a COM object
|
|
within the project. In Visual C++ 5.0, you can go to the Insert menu
|
|
where you'll see New ATL Object... or you can right-click on the classes
|
|
in the ClassView pane, where you'll also see New ATL Object....
|
|
|
|
When the ATL Object Wizard pops up, you'll see two panes. In the left
|
|
pane, click on Objects. In the right pane, double-click on Simple Object.
|
|
If you have VC 5.0, you'll see a number of additional objects; click on
|
|
ActiveX Server Component instead.
|
|
|
|
The ATL Object Wizard Properties dialog will appear. On the Names tab,
|
|
type in the short name of your object. The other names will be filled in
|
|
automatically. You can edit them if you wish. It's quite likely that
|
|
you'll want to edit the Prog ID.
|
|
|
|
On the Attributes tab, you may want to change the Threading Model to Both.
|
|
You probably don't need to support Aggregation. You ought to Support
|
|
ISupportErrorInfo. The other attributes should not need to be changed.
|
|
|
|
On the ASP tab, you can enable OnStartPage and OnEndPage methods and select
|
|
which of the ASP intrinsic objects you want to use. However, it is now
|
|
recommended that you use the Object Context (which doesn't require the
|
|
OnStartPage and OnEndPage methods) rather than the Scripting Context (which
|
|
is what OnStartPage supplies you with). This allows you to create more
|
|
powerful application state objects. All the samples that need it use the
|
|
Object Context rather than the scripting context.
|
|
|
|
Note the use of the ATL wrapper classes CComBSTR, CComVariant,
|
|
CComPtr, and CComQIPtr in the ATL samples to simplify management of
|
|
COM data types.
|
|
|
|
|
|
Installation
|
|
============
|
|
|
|
To install these sample components, you must first compile them with
|
|
Microsoft Visual C++. Load the individual project files into VC++
|
|
and build the DLLs. You can also build the DLLs by just typing
|
|
"nmake" in the command line. Running nmake in the top level directory
|
|
(the directory this file is in) will build both the simple and power
|
|
DLLs.
|
|
|
|
These components may not compile correctly unless you have the correct
|
|
header and library files. You may need to copy all the header files
|
|
in ...\iissamples\sdk\include (default is C:\Inetpub\...) to your VC++
|
|
include directory. In addition, you may need to copy the MTS header
|
|
and library files to the VC++ include and library directory. The MTS
|
|
header files are located in ...\MTS\include (default is C:\Program
|
|
Files\...) while the MTS library files are located in ...\MTS\lib.
|
|
|
|
*** NOTE: The MTS header and library files are not installed by
|
|
default. In most cases, you will need to install this using the
|
|
Windows NT 4.0 Option Pack setup.
|
|
|
|
If you intend to run these components on a machine other than the one
|
|
on which they are compiled, you will need to copy the DLLs to the
|
|
target machine and
|
|
regsvr32 /s /c SAMPLE.dll
|
|
(the samples will be registered automatically on the machine they're
|
|
built on).
|
|
|
|
If you have trouble registering components, you may be using the
|
|
wrong version of RegSvr32.exe. Please use the version installed by
|
|
default in the directory \<winnt-directory>\system32\inetsrv.
|
|
|
|
|
|
Directory List
|
|
==============
|
|
|
|
Directory Description
|
|
--------- -----------
|
|
|
|
Simple C++ ATL Simple Sample
|
|
Intermediate C++ ATL Power Sample
|
|
|
|
|
|
Usage
|
|
=====
|
|
|
|
To use the samples, simply call Server.CreateObject("IISSample.XXX")
|
|
to create the object, where "XXX" is one of
|
|
C++ATLSimple C++ATLPower
|
|
Then you may access the object's methods and properties from your ASP
|
|
script. Read any of the sample ASP scripts to discover how to use the
|
|
objects.
|
|
|
|
|
|
Sample ASP scripts
|
|
==================
|
|
|
|
You must copy the sample ASP scripts to a virtual directory (it need
|
|
not be a virtual root) on the IIS Server where you have installed the
|
|
sample components before they will work.
|
|
|
|
|
|
Support
|
|
=======
|
|
|
|
This component is not officially supported by Microsoft Corporation.
|
|
Peer support is available on the Active Server Pages mailing list or on
|
|
the microsoft.public.inetserver.iis.activeserverpages newsgroup.
|
|
|
|
To subscribe to the Active Server Pages mailing list, send mail to
|
|
listserv@listserv.msn.com with
|
|
|
|
subscribe ActiveServerPages [firstname lastname]
|
|
|
|
in the body of the message, and then follow the directions carefully.
|
|
(firstname and lastname are optional.)
|
|
|
|
You can reach the newsgroup through msnews.microsoft.com and other NNTP
|
|
servers.
|
|
|
|
|
|
Change Notes
|
|
============
|
|
|
|
Version 1.0 Beta 1: February 1997
|
|
---------------------------------
|
|
|
|
First release.
|
|
|
|
|
|
Version 1.0 Beta 2: March 1997
|
|
------------------------------
|
|
|
|
* Fixed Developer Studio makefile problems in C++ components.
|
|
* Upgraded to build cleanly with ATL 2.0 (Visual C++ 4.2b) and ATL 2.0 (VC5).
|
|
* Better comments in Power components.
|
|
|
|
|
|
Version 2.0 Beta 3: September 1997
|
|
----------------------------------
|
|
|
|
* Updated for IIS4.0
|
|
* Using IObjectContext instead of IScriptingContext.
|
|
|
|
|
|
Version 2.1: October 1997
|
|
-------------------------
|
|
|
|
* Modified for the IIS4.0 SDK release |