Welcome to West Wind Client Tools
West Wind Client Tools is a suite of FoxPro classes that provides rich Internet functionality to FoxPro applications. The library also includes many useful utility classes for every day FoxPro development tasks.
The Internet features include SMTP Email support, full featured HTTP Web access, FTP file transfers and management, low level TCP/IP access and a host of Internet support functions. The client utilities components like a light weight business object framework, an easy to use SQL client library, a .NET integration library, powerful FoxPro based scripting class, XML conversion routines, and a number of very rich generic utility libraries for common everyday FoxPro tasks.
Although a number of the tools included in this package are available from various sources and articles were previously published by Rick Strahl, this package combines them into a single, fully documented, frequently updated and supported package.
SMTP Email support
SMTP Send Mail capability both in blocking synchronous and asynchronous modes. Support for file attachments, CCs and BCCs, special content types (HTML or XML messages for example) and more. All you need is a mail server to send message through (your ISP's or your own) and off you go. The latest version also supports SSL based connections.
HTTP - Access Web content from VFP
Need to grab any content from the Web in your applications? Retrieve Web page content for screen scraping, talk to REST , POX or other Web Service APIs, submit and drive Web based forms and send XML or binary data from client to server and back. wwHTTP is a complete HTTP client libary for FoxPro that lets receive and send data over the Web using HTTP with great ease. Send URLEncoded POST data to servers, upload huge files via HTTP, access SSL, handle GZip encoded and authenticated content. Best of all it's very easy to use: all it takes is two lines of code to retrieve content and only a few additional lines to POST content to a server.
Advanced HTTP support
In addition, tools required for efficient HTTP operation are also included such as fast URLEncoding/URLDecoding using fast C code routines, binary packaging for DBF files for transfer over HTTP, a GZip decoding and encoding component, as well as inclusion of the powerful wwXML class which can be used to convert VFP cursors and objects into XML.
FTP and SFTP - Transfer files
New updated wwFTP class allows for file downloads and uploads. Low and high level methods for simple transfers and control over the connection are supported. Use active and passive FTP. The tools also support SFTP (SSH over SSH).
Low Level TCP/IP Socket Access
Create low level TCP/IP socket connections and create socket servers with with the wwSocket class to access Internet or TCP/IP services. This class is very easy to use and includes high-level methods that session and transaction based TCP/IP access very easy.
IP Address validation
Support for domain lookup from IP address and IP Address from domain name.
UrlEncode, UrlDecode, HtmlEncode, HtmlDecode, generating Mime dates,
Data Access Classes and Conversion Classes
The wwBusiness class is an extremly easy to use, single level business object class. It implements both the business and data tier in a single object to provide ease of use and maximum performance. The base object provides core data access functionality (Load, Save, Query, New etc.) through its base class methods. Query based data access is also supported through native Fox syntax or using the class methods which can route to the appropriate backend. Fox or SQL Server are natively supported. SQL Server is supported with SQL Passthrough commands. Remote Web data is also supported against any FoxPro based Web backend (Web Connection, ASP+COM, FoxISAPI etc.) Web data can run against a SQL backend (with some limitations a Fox backend can be used as well).
The wwSQL class is a light-weight wraper object around SQL Passthrough in Visual FoxPro and provides handle abstraction and a simplified interface to executing SQL commands and managing connections. The class provides error handling and error recovery for connection issues as well as a number of high level methods that deal with updating data and passing data between Fox and SQL backends. There's also a wwADOSql class that works through ADO to provide Unicode support in database access using the exact same syntax as wwSQL.
Access just about any .NET component from Visual FoxPro and do it without requiring COM registration. The library allows access to components not supported with plain COM Interop such as enumerations, value structures, generic types, arrays and collections and a host of common but COM unsupported types. wwDotnetBridge removes many of the limitations of .NET COM Interop and allows you to tap into the full power and features of the .NET framework.
wwJsonSerializer and wwJsonServiceClient
The serializer provides reliable JSON serialization and deserialization of FoxPro objects/Values to and from JSON. The serializer is fast and highly reliable using the JSON.NET serializer to handle reliable and fast deserialization. wwJsonServiceClient provides a wrapper for calling JSON REST services by handling making HTTP calls and serializing and deserializing JSON transparently.
wwXML is a powerful data conversion class that lets you convert Fox cursors and object to and from XML. This class is more flexible than VFP 7's native commands and provides a number of additional features including direct support for .NET datasets and of course the ability to persist and restore objects.
This class lets you easily parse Markdown text into HTML in your application. Markdown is a simple and easy to type text format that can be turned into HTML and is an ideal solution for dealing with HTML text in FoxPro.
General Purpose Classes
The wwScripting class is a dynamic ASP like (
< % %>) dynamic scripting engine that lets you do template merged scripting at the speed of fully compiled FoxPro code. wwScripting takes your scripts/templates and turns them into full FoxPro PRG files that are cached and execute at the full speed of Visual FoxPro. Templates can be modified at runtime and changes be detected in real time for maximum flexibility without loss of performance. You can even use partials and layout pages to reuse markup easily. Great tool to add dynamic scripting or HTML rendering to your applications.
FoxPro includes a collection class but unfortunately that class is hobbled by many issues including horrible performance and the inability to trap for missing elements without generting errors. The wwCollection classes provide a base collection (value only) class, a name value collection and stack classes. Classes are managed through arrays and provide many useful features not found on the built-in collection class.
You can use this class to create encrypt or hash strings using common encryption protocols. You can creates one-way hashes using MD5, SHA1, SHA256, SHA384, SHA512, HMACMD5, HMACSH1, HMACSHA256, HMAC384, HMAC512 encryption protocols. You can also two-encrypt strings and byte arrays using TripleDES encryption. Perfect for hashing passwords in applpications.
wwCodeUpdate - Update your Applications
This useful class provides everything needed to have your applications check for version information online (in an XML file) and download and install updates. The class provides for online checking of the latest version available, version comparision, file download via HTTP, swapping files and restarting the current application.
wwConfig - A very useful configuration utility that can persist data from an object into a configuration file (XML, INI or the registry) and can be used in any application as a single access configuration manager object.
wwCache - A cache class that allows you to easily cache string results for later reuse. Very useful especially for Web applications where content or partial content can be easily cached for reuse.
wwXMLState - This class can be used to manage dynamic properties inside of a string or memo field. It's XML based and stores multiple values in a single string. Useful for extending database schemas without changing the structure and to store data more efficiently when data is sparse and would waste space as a field.
wwEval - A 'safe execution' class that can be used to run user specified or unknown code. Sort of a poor man's Try/Catch implementation that allows you to run code that potentially could fail safely and receive error information. Execute single commands, expressions and even entire code blocks. Also includes MergeText() functionality to parse script like pages using ASP style syntax and wwEvalTimer which allows you to generically fire delayed expressions and code blocks.
wwUtils and wwAPI Libraries - These extensive function libraries contains a variety of general purpose functions from string formatting, to HTML formatting, to debugging, COM configuration, viewing output in various text formats and even several GUI pop up routines. The API library abstracts many often used Windows API functions in simple wrappers.
Client Tools also includes a number of tools that are useful in the course of development of applications:
Structure Exporter - Takes VFP table structures and exports it to text in various ways: CREATE TABLE statements, object declarations, field list, Help Builder field list and several more.
Text Wrapper - Useful tool to take a block of text and create string based code writes out this text via code.
Access common Internet Protocols like HTTP, HTTPS, SMTP, FTP and SFTP with easy to use FoxPro based libraries.
Use our easy to use business object classes to organize your code, or the wwSql class
Convert between commonly used formats like JSON and XML with serializer and deserializers that make short work of exchanging common data formats.
Access .NET easily with wwDotnetBridge, handle app configuration with wwConfig, generate PDF documents from Fox reports with wwPdf, execute FoxPro scripts with wwScripting, parse Markdown with our MarkdownParser class.
FoxPro all the way
Use the tools you already know: Write FoxPro code for your Web application logic and use the Visual FoxPro IDE to edit, run and debug your code. Set breakpoints, break on errors, and use your existing FoxPro business logic code.
The Source is yours
The Client Tools ship with complete source code for all the FoxPro components. There's no blackbox code - you can step through all of the framework and modify it as needed. Fix it, change it, own it - no built-in obsolescence in this framework.
Don't take our Word for it: Try it out
There's so much more to the West Wind Internet & Client Tools and the best way to find out about it all is to try it out for yourself. The library is available in a fully functional shareware version that contains the full framework of features, but doesn't include source code. With it you can build and test your Web applications to check out Web Connection's features and functionality. Get started today!.
You can download the shareware version and try West Wind Internet & Client Tools for free. The shareware version is fully functional, but it ships as a pre-compiled app file to load libraries from and shows shareware notifications.
- Visual FoxPro 9.0
- .NET Framework 4.5 or later (recommended)
Got questions, suggestions or just want to discuss West Wind Internet & Client Tools development issues? Then come and hang out on our new and redesigned West Wind Message Board to ask questions, discuss development issues or simply brain storm ideas with the authors and other FoxPro developers.Visit the Message Board