2.95 Changes |
Change Log |
Topics |
Version 2.90 ------------ * IMPORTANT: WC 2.90 changes the log file format! Due to a conflict of the Request field in the log format the Request field has been renamed to QueryStr. The Request field name was causing very difficult to track naming conflicts with the Request object used by Web Connection. To update, either rename your CGILOG field or simply delete the file altogether and let WC rebuild the file. * New HTML Help File included. The Help file built with West Wind HTML Help Builder is a skeleton help file that has imported the Web Connection class header information into a searchable reference. Documentation is not complete - the help file only reflects what it's in the class and method headers, but it should make it much easier to find functionality and get a quick function prototype for method calls. * A new switch in wc.dll allows running COM objects outside of the COM pool. With this optional request specific switch servers run once and immediately unload. Use this for extensive long-running requests that would otherwise tie up the pool. Format is: wc.dll/single?wwDemo~Testpage using the /single extra path. * A new switch in wc.ini allows Automation servers to stay alive instead of timing out after 8 minutes. The KeepAlive=1 flag will keep an extra reference to the COM object to force it to always stay active. Greatly stabilizes COM operation. * There has been a partial re-write of the COM management code in wc.dll. The new code relies more heavily on ATL components for COM interface calls greatly reducing the code complexity. The result has been much improved stability at the Surplus sites under ever increasing loads - exceptions have been virtually eliminated and server reload code is more reliable. In combination with the KeepAlive setting above servers have not crashed in 1 month of high load operation at Surplus... * The wc.dll Show Status Administration screen has been greatly improved. The form now provides a number of maintaince links directly on the status page. All load/unload and the configuration links all return back to this central page as well. * All wc.dll maintainence operations now run under the SYSTEM account so access permissions copying files and shutting down processes becomes more reliable. The SYSTEM account should have rights to to perform most security tasks without causing security holes. * Functions in wwMaint now look at the AdminAccount key in wc.ini for user verification rather than another setting in wcmain.ini. This makes the Web Connection Admin security settings localized in a single file. * wwIPStuff::SendMail and SendMailAsync now properly support Mime type attachments. You can attach any file and send it along with your email message. This fixes the problems in older versions that only sent UUEncoded attachments which were not automatically decoded. Messages are now fully Mime and Base64 compliant. * wwHTMLForm now supports rendering forms with no data or using script tags (<%= Guest.Name %>) embedding the controlsource into the form instead of values. This should facilitate using the VFP form editor to build Dynamic HTML forms as a WYSIWYG editor. Check docs for wwHTMLForm for updated information on the nValueType property. wwForm has also been updated to support this display mechanism. * New features for wwIPStuff::HTTPGetEx now includes the ability to retrieve the HTTP headers and a new OnHTTPBufferUpdate() event that fires when data is received. The lHTTPCancelRequest flag can be set in this event to cancel an HTTP download. This allows for building a status display while downloading HTTP Requests as well as providing support for simple UI operations like a Cancel button. * New wwMaint function to display the Web Connection DLL Error log in wwcgierr.txt. The function is accessed via the maintainence page using the wwMaint::wcErrorFile method. This link can also clear the error log. * Fixed several issues in wwHTMLForm: Spinners can now be rendered correctly as textboxes. MultiSelect listbox selections now render properly. However, updating multiple listbox selections must be performed manually. SetValues() will only update the first selections by setting the value. Version 2.85 ------------ * Support for a plain CGI connector has been added. The new CGI connector replaces the old Windows CGI connector for better compatibility with the ISAPI version and broader Web Server support - CGI should allow running Web Connection on just about any Windows based Web server. The new CGI executable is wc.exe. Additional Auto installation options for various non-ISAPI servers will be added shortly. * File Uploads via multi-part forms have been implemented. You can now use the FILE input type on a form and retrieve the file on the server side using the following new methods of wwCGI: GetMultipartFile(), GetMultipartFormVar() * New wwHTTPAsync class that is a event driven control that allows background downloads of HTTP requests. The control fires OnDownloadComplete events to let you know that the request has completed, returning the HTTP result or error code. * Implemented Round Robin server cycling for COM servers in addition to the traditional load based server cycling. Load based sends requests to higher servers in the queue only if the first one(s) are already busy. Round Robin always cycles through the server pool. Implemented via ServerLoading= in wc.ini. * wwIPStuff::SendMail now works with the IIS4 ESMTP server. Basic Support for ESMTP has been added but may not work with all servers. * wwIPStuff::nHTTPPort has been added to allow accessing HTTP servers on non-standard ports. Value is 0 by default which uses the default HTTP and HTTPS ports. If set that port is specifically used. * wwIPStuff::RasDial no longer brings up a dialog box on a failed RAS dial connection. Instead it now sets the cErrorMsg property when the return from RasDial is .f. * Fixed memory leak introduced in ISAPI DLL V2.75 occurring only with COM server operation. * Fixed bad pointer references in ISAPI DLL code when COM servers crash. A GPF in the VFP server would cause memory of IN parameters to be corrupted and cause a (handled) exception in the DLL. Fixed. * Improved Error info provided on the Error page sent from the wwProcess::Error method. Added new method SendErrorEmail() to wwProcess to simplify customized error messages for email. * New functions in wwUtils: StripHTML, IsComObject, ShowHTML (displays HTML String in browser) PropertyDump (displays object properties and values as string) * There have been several fixes to the WCS Active Server like scripting functions. Thanks to Randy Pearson for his help in resolving several reference bugs that caused strange errors in the Web Connection server. Fixed. * The scripting engine also now includes an updated error reporting mechanism that shows the error line of code along with a few surrounding lines of code for context. Under Construction: * Added new samples that show how to take advantage of RDS (Remote Data Services/ADO) with Web Connection. Version 2.75 ------------ * Enterprise Edition now includes a wwPDF class in .\Tools. Class allows programmatic creation of PDF files using the Adobe PDF printer writer. Allow creation of printable reports over the Web. * wwIPStuff::HTTPGetExAsync has been added. The Async version just goes off and runs an HTTP request in the background. You can specify an output file for the result so you can check for completion of the request. * Miscellaneous updates to the wwHTMLForm class that should provide slightly better speed. * New Install program that uses a more Wizard like interface. The install program has also been more streamlined to allow for more generic creation of applications (to be added later). * New wwWebServer configuration class. This class allows for easy creation of Virtual directories and script maps for: IIS4, IIS3, PWS3 and 4, WebSite and Commerce Builder. Tell the class which server to use and then call single methods to add virtuals and script maps. Version 2.72 --------------------- * Fixed DHTML Form rendering problem caused by IE 4.01. Layering now works correctly. Special thanks to Jan Dorresteijn for his help in finding the workaround. Fixed. * Updated installation to support scriptmaps with WebSite 2.2. * wwIPStuff: Changed default from PROXY settings to direct settings. New nHTTPConnectType property allows to configure this setting dynamically. * wwIPStuff: Email interface enhancements to support some ill-behaved SMTP servers. Expanded message buffer to 512 bytes, and added code to allow non-compliant content headers. * New wwCGI methods: GetLogicalPath(), GetExecutablePath(). Both of these are useful for scriptmaps. GetExecutablePath in particular can allow you to route requests based on virtual directory rather than a 'query' paramameter: lcVirtual = JustFname(loCGI.GetExecutablePath()) CASE lcVirtual = '/wconnect/' DO wwdemo.prg with THIS Version 2.71 --------------------- * New messaging mechanism that does away with the INI file for server information. This new interface to the Web Connection DLL uses URLEncoded formatting to transfer all data in a single chunk. For OLE Automation this means no messaging files at all - for file based it means 2 message files instead of at least 4. Request transfer times have improved about 30% overall. Small speed improvements should also occur on the FoxPro end for reading form and server vars. * New wwPostRequest class subclasses wwCGI to access the URLEncoded request buffer. Other than the split code that separates form vars from server/browser vars this code is compatible with all URLEncoded formats used by other products. It will work with FoxISAPI unchanged. * New wwIPStuff::wwHTTPData class. This class facilitates running SQL statements over HTTP and returning data to the client in similar fashion as VFP's SQLExecute(). Results can be returned in cursors. Supports both client and server methods and a generic processing routine that can handle data requests without custom code (pending security) * Support for Client Certificates has been added for IIS. The new wwCGI::GetClientCertificate() method allows retrieving subject information from a client side certificate. ClientCerts work only with the new URLEncoded Post method interface. The INI file interface does not receive the information. * New MergeText function in wwUtils. This version of MergeText is generic and optimized to work with Active Server type tags (<% %> and <%= %>) and processes expressions and Codeblocks (dynamic in runtime). This mechanism will eventually replace the ## syntax used by Web Connection for template expansion. The function is generic so you can use your choice of delimiters. In addition a slight performance improvement can be seen by this new version of MergeText. wwHTML::MergeText() continues to be used by the HTML class internally to support the extended ## syntax for codeblocks. * The new MergeText functionality has been integrated with ShowHTMLFile() and ShowMemoPage() for rendering of .WC pages optionally. You can now specify <!-- WCS_TEMPLATE --> at the top of a .WC page to force Web Connection to use Active Server Syntax instead of the ## syntax for expanded expressions and code. The new flag is optional and ## continues to be the default behavior. The phrase WCS_TEMPLTATE must appear within the first 80 characters of the document. * New Log statistics form that summarize Web Connection Hit logs based on the query string parameters. See at glance which links are most frequently hit and how long they take. Requires IE 4. * wwIPStuff HTTPGetEx() method now does not require a pre-allocated buffer. When omitting the tnSize parameter or passing in 0 by reference the output from HTTPGetEx() will now dynamically build the string output. * Fixed HTTP Header problem with overridden error pages generated by the Web Connection DLL. Missing header would cause pages to not display or try to download. FIXED. * Fixed problem with WC.DLL not loading under old versions of Windows 95. The DLL would not load due to missing DCOM API functions. The functions are now late bound at runtime. Fixed. * Fixed Automation problem with wc.dll when reloading servers after the initial timeout. The first hit on a server could potentially be interrupted by another request resulting in corrupted data. Problem also affected manually or GPF unloaded servers. Fixed. * Added new Active Server compatible method names to wwCGI class: Form (like GetFormVar), QueryString (like GetUrlEncodedParameter) and ServerVariables (like GetCGIVar). All new methods work like the old ones except QueryString() which has been enhanced to work with either positional, numeric parameters or URLEncoded, named parameters. You can now do: QueryString(1) or QueryString('Name') or QueryString() to return the whole thing. * Added Write Method to wwHTML for ASP compatibility. * The Request/Status viewer now (finally<s>) supports copying text to the clipboard. * Fixed Setup for PWS 4.0 under Win95. Code tried to use the IIS4 set up routine which is completely different for Win95. Reverted back to registry code (IIS3 type setup). Fixed. * The DLL Status display has been significantly enhanced to provide more information and allow basic admin task in a single form. You can now Hold Requests in this form and see the change immediately. You can also reload settings from here now. Automation servers now show the machine name if running a remote server (if specified through WC's syntax). * DHTML Grid now displays numeric values right aligned. * The Web Connection Log can now log a script name in addition to the querystring. For those building applications with scriptmaps the scriptname will be more important than the querystring. Version 2.60 --------------------- * Support for new scripting engine based on ASP model. New script maps for .WCS and .FXP which allow running pages using <% %> to embed FoxPro code and constructs into static HTML pages stored on disk. Pages are compiled prior to running. See sample page for example and Classes.doc for detailed info. Beta Implementation with limited documentation and minimal ASP Object support. * IIS 4.0 installation migrated to VFP code. Scriptmaps still require external code - moved to self contained Delphi DLL as to not require any runtimes. New Admin class wwIISAdmin.prg can be found in TOOLS and allows access to most Active Directory services. * Fixed bug in ISAPI DLL that did not properly return variable names that contain spaces. Fixed. * Miscellaneous bug fixes related to minor problems with status form not properly updating the permanent settings. Also, fixed log viewer bug that caused File In Use Erros. Version 2.56 --------------------- * Fixed problems with IIS 4.0 installations related to VB runtime compatibility. Also, added additional check code to give instructions if the Registration component cannot be installed. * Updated Error Handler logging code to properly set the Error flag. Previously the flag was not used in wwProcess::Error. If you use your own error methods it's suggested you pass the new 4th llError parameter for any error requests. Version 2.55 --------------------- * New DCOM remote server loading mechanism introduced to avoid requirement for multiple classIds for instantiating both local and remote servers. The Server name can now be specified as part of the WC.INI ServerX= key. This greatly simplifies remote server deployment and makes it feasible to create servers off a single codebase. * Session Object improvements for easier maintainance of user specific state information. New wwProcess::InitSession() method handles automatic retrieval and creation of Session Cookie making it possible to simply access the new wwProcess::oSession object and its Set and GetSessionVar() methods. * The wwSQL Class now automatically connects to either a named connection in a DBC or with Connection string passed to the Connect() method. * Error Field on the CGILOG table makes retrieval of errors easier and quicker. NOTE: PREVIOUS VERSION USERS MUST DELETE THEIR CGILOG FILE OR UPDATE THE STRUCTURE WITH THE NEW ERROR FIELD!!! * The Web Connection DLL now adds a default HTTP header if the VFP application doesn't return one. Although this makes up for accidentally left out headers on the VFP end it's still highly recommended to create the header as part of each request! * The Server Status request display now shows a request in progress rather than the 'Processing...' message. This should help in debugging servers that hang or crash due to a logic error by displaying the currently running request. The display has also been truncated for more efficient use of the display space. * The Install program now supports entering setup info into the IIS 4.0 Metabase for automated setup on IIS4. The Enterprise Edition also adds a wwIISAdmin component (VB5) for accessing the IIS4 metabase. * New leaner versions of wc.dll and wwIPStuff. Binary file sizes cut by 30%. Version 2.50 --------------------- * Enterprise edition introduced. * New Customer Info IE 4.0 form demo. Demonstrates a complex form running as is. * Added wwSQL class to Enterprise Edition. This class wraps SQL Passthrough into an error safe class for easy connection management. * Added FileDelete Win32 Executable application to Enterprise. This utility allows deletion of files in a specified directory in timed interval. Use to clean up and timeout temp files or to manage temporary files created for display or file downloads. See TOOLS directory. * Fixed bug with wc.dll when submitting large POST forms. The problem occcurred only on forms with over 30 fields and containing several textareas. Re-wrote this piece of MS code and in the process rewrote entire form posting mechanism to be more efficient. * New Edit Server Status page that uses IE 4.0 form rendering to display the Status Form of the Web Connection server. You can view and edit the values from this window. * Addition of [HTML PAGES] section in wc.ini to allow error messages to be overridden with custom pages. The pages are fully static, but allow the page to look more tailored to your own site image. See WCONNECT.DOC for more info. * New wwCGI::aFormVars() method that parses all HTML form variables into an array of key value pairs. * Many fixes and updates to the wwHTMLForm class to coincide with the release of IE 4.0. The documentation has also been updated to outline the operation of the class and some of the things you need to watch out for. * wwHTMLForm now renders Images. Images are renamed to .GIF from .BMP/.ICO and pathed to WWFORM_IMAGEPATH defined in WCONNECT.H. Image Buttons are also supported Image buttons submit form. * TextBoxes now recognized explicit alignment from VFP forms. Numeric fields now use TRANSFORM() instead of always forcing number to 2 decimals (this results in variable length numerics but it's much nicer for editing where the form value determines the display). * Stephen Genusa Process Viewer ASP component is now auto-installed for use in Admin.asp. This component lets you quickly view all NT processes running on NT and you can program it to display only the relevant processes for your application (default is ww*.exe and wc*.exe and dr*.exe - you'll have to change the filter to fit other EXE servers). * New DCOMCnfgServer function in wwUtils allows programmatic setting of the Impersonating user security for Automation servers. This can do away with the DCOMCnfg step in the build cycle. Also added a sample on how you might use this to automate building your Automation servers in TOOLS\BldOle.prg.