Articles and Papers by Rick Strahl
Welcome to our free article library. We hope you find the material
provided here useful in your development of Web and distributed
applications. If you find an article useful consider a small donation to
support this article archive by clicking on the links provided on the
article pages.
An
Introduction to jQuery
9/29/2008
Part 1 of this 2 part series introduces the jQuery JavaScript
library and provides an overview of the functionality this powerful
library provides. Article starts with an overview of what jQuery is and
does followed by a walkthrough of some of jQuery's prominent features
starting with Selectors, Wrapped Set functions, event handling all the
way up to simple plug-in creation. Part 1 deals purely with client side
functionality. Part 2 addresses ASP.NET integration and AJAX
functionality.
Digitally signing and validating an XML Document
3/1/2008
This article describes the complete process of signing an XML
document with a private key certificate, and then validating the same
document with the public key. The includes step by step instructions
including creating a test certificate and installing it and how to use
the certificate from your code for signing and validation. It also
covers installation of a full certificate from a qualified CA which is a
slightly different process. A sample class that works with any SOAP
Envelope XML document is provided to demonstrate.

Setting up
and running Subversion and Tortoise SVN
8/9/2007
This article is a quick start step by step guide for setting
up Subversion for Source Control and using Tortoise SVN to set up and
manage your repository and local copies of projects. This article uses a
Visual Studio Solution as an example, but the same concepts can be
applied to any tool or set of files for that matter. The article
discusses installation and setup, creating of a repository, creating
local copies and basic day to day operations.
Creating
a data driven ASP.NET Resource Provider & Editor
7/19/2007
Find out how to build an ASP.NET 2.0 Resource Provider that
uses database data for its localization storage rather than Resx files.
Database resources can be much more flexible and this article
demonstrates how to build a powerful ASP.NET resource editing front end
that allows editing of resource data in a live ASP.NET application in a
context sensitive manner.
Introduction to Localization in ASP.NET 2.0
7/18/2007
Check out the localization features in ASP.NET 2.0 and
understand how they work under the covers. This introduction focuses on
the ASP.NET 2.0 specific technology for localization and discusses how
Resource Providers are used to provide the various integrated
localization features in ASP.NET 2.0 and Visual Studio .NET. The focus
of this article is on the technology rather on the deep semantics of
localization. Serves as an introduction for the Resource Provider
article.
Create a
Screen Capture Plugin for Windows Live Writer
3/25/2007
This article demonstrates how to build a Windows Live Writer
plugin that allows for embedding screenshots into the current Blog entry
being edited. The article describes the basics of content plugins for
Live Writer and uses a plugin that uses SnagIt from Techsmith to provide
an easy and flexible way to do screen captures directly into your blog
content using C# code...

Calling and Hosting FoxPro Web Services through .NET
1/9/2007
Web Services with Visual FoxPro have always been problematic
with Visual FoxPro especially if dealing with services that publish
complex types. The most common Web Service tool for FoxPro is the SOAP
Toolkit which has been discontinued and has a host of problems dealing
with complex types. In this article I discuss how you can leverage .NET
to make Web Service calls from Visual FoxPro and how to host Visual
FoxPro components in .NET Web Services. The article also demonstrates
how to use Windows Communications Foundation (WCF) for the same tasks.
Creating a
two-way data binding Extender Control for ASP.NET 2.0 
11/15/2006
As much as ASP.NET 2.0 improves data binding, one aspect -
simple control binding for controls like textboxes, checkboxes and
selected values of lists for example - is still tedious especially when
it comes to unbinding data. This article demonstrates a
powerful extender control that can provide easy to use two-way databinding
semantics. Using the control you can easily bind and unbind any control
properties to any data field or property of an object with full control
over binding, unbinding and dealing with binding errors at runtime. The article
demonstrates the control functionality and discusses the design of building an ASP.NET
2.0 extender control that provides the flexibility to extend any existing controls
on a Page, Master Page or
User Control. Article is published on MSDN
Compilation
and Deployment in ASP.NET 2.0
9/25/2006
Compilation and deployment in ASP.NET 2.0 has brought
some of the biggest changes to the ASP.NET development model. As
developers we use page compilation all day long and deployment is
something we all have to worry about sooner or later. A lot has changed
in both areas and they can affect how you build and deploy your
applications so understanding how the model works is crucial. In this
article I'll provide a detailed discussion of how compilation and
deployment works. I'll also talk about the new Web Deployment Projects
and Web Application Projects add-ins that Microsoft is providing to ease
some of the pain points of the stock functionality shipped with ASP.NET
2.0 and Visual Studio 2005.
Integrating
Electronic Payment Processing into ASP.NET
4/11/2006
Find out to integrate Credit Card processing into your
ASP.NET applications. This long article starts at the beginning
discussing how the actual payment processing works from the provider
level and delves into details with specific implementations for several
common gateway services and a set of classes you can use for payment
processing. Finally an example shows how to integrate these classes in a
live application.

Advanced FoxPro COM Interop Article Series
12/23/2005
Are you using COM Interop from Visual FoxPro to communicate
with .NET? This series of articles takes you
through some of the scenarios you are likely to run into once you go
beyond the basics of calling simple COM objects and show more
sophisticated .NET functionality that you can take advantage of in your
FoxPro code with a little extra work.
1.
Passing objects between FoxPro and .NET COM Components
2.
Handling .NET Events in FoxPro via COM Interop
3.
Creating multi-threaded components for COM Interop
Using
Script Callbacks in ASP.NET 2.0
10/02/2005
Find out how to use the Script Callbacks feature in ASP.NET
2.0 which provides a built-in, rudimentary AJAX implementation in
ASP.NET 2.0. This two part article series on
ASPToday covers an overview of
AJAX in general, how the Script Callbacks architecture works and then
takes through a number of simple and practical examples of various
complexity. Part 2 also discusses a number of issues to consider, like
network bandwidth, debugging concepts and how to best utilize AJAX
technology in existing applications.
Part 1
Part 2
(works with ASP.NET 2.0 August CTP or later)
A
low-level Look at the ASP.NET Architecture
07/18/2005
Ever wonder how requests get into the ASP.NET pipeline from IIS?
Find out about the low level plumbing of ASP.NET starting with a
detailed discussion of how requests route from IIS, through the ASP.NET
ISAPI extension into the ISAPRuntime and finally into the ASP.NET
pipeline for HttpApplication processing with Http Modules and Handlers.
This article takes a on the low-level aspects of ASP.NET for those that
want to understand the inner workings of the framework.
Building
a better Application Configuration Settings Class
05/18/2005
.NET provides rudimentary support for storing and retrieving
configuration settings out of .config files. But there are a number of
important features missing. Find out how to build a better mousetrap by
creating a class that provides strong typing, read/write capability and
encryption for values stored in your configuration files.
Using Unicode in Visual FoxPro Web and Desktop Applications
01/13/2005
Visual FoxPro doesn’t have native Unicode support which means
that you have to do some extra work and understand how the process works
in order to work with it. In this article I’ll describe the issues in
the context of supporting of multiple languages simultaneously, rather
than through the view of code page translation which Visual FoxPro
readily supports. I’ll start with an overview of the issues and how to
work with Unicode in general, then show how to retrieve and update
Unicode data using Visual FoxPro and SQL Server data. Finally I'll talk
about how to get the Unicode content to display both in your Web and
Desktop user interfaces.
PayPal
Integration into e-Commerce Solutions with ASP.NET
09/15/2004
PayPal provides one mechanism to process payments on the Internet.
While it's not the first choice for payment processing for typical
e-Commerce sites it does provide additional choices for those customers
that don't feel comfortable paying by credit card over the Web. It's
also an easy solution for first time Shop owners who might not want to
invest in a full merchant account. This article describes PayPal
integration from the perspective of a full featured e-Commerce
application and focuses on integrating PayPal seamlessly into this
environment. The article also provides a PayPal helper class
(ASP.NET/C#) and a skeleton sample application that demonstrates the
process and makes it easy to hook your own code into. Although the code
provided is .NET, the concepts in this article apply to any Web
development environment.

Calling .Net Web Services for Data Access from Visual FoxPro
07/27/2004
Find out how to create a .Net Web Service that serves up data
in a variety of ways, then see how to consume this data with Visual
FoxPro. .Net Web Services are easy to develop, debug and deploy, but
consuming the data, especially with Visual FoxPro is not always as
straight forward as you think. This article discusses how to pass
complex data between .Net Web Services and Visual FoxPro and provides
several tools to facilitate and standardize the process of building
solid Web Service clients for your applications.
Creating
a generic Message Display Page for ASP.Net
05/19/2004
Creating messages in your Web application should be
quick and easy and most importantly, consistent. They should look like
they belong with the rest of the application even if - low and behold -
an error occurs. How often have you created a new page to display some
simple text or a notification message to your users? Wouldn't it be much
nicer if you could reuse an existing template and simply passed in a few
parameters to tell it to render an application specific message? Find
out how to create a reusable Message Display class that reduces
displaying messages generically in you application to a single line of
code.
Building a Web XML Data Service with Visual FoxPro
03/05/2004
Have you ever wanted to build a remote data access mechanism
into an application where you can talk to data that is coming over the
Web rather than from a local or network data source? Wouldn’t it be cool
if you simply pointed at a URL and could remotely execute some SQL code
and return data to you on the client? In this article Rick shows how to
build a generic Web Sql data service that can be used with any Visual
FoxPro based Web backend and any Visual FoxPro client to provide remote
data access to Visual FoxPro and ODBC datasources.
Using the Shell API and Internet
Explorer Components with VFP
08/08/2003
Want to integrate external content into your Visual FoxPro
desktop applications? Then look into the Shell APIs that allow using
Windows components easily in your own applications. This article digs
into using the ShellExecute API, the InternetExplorer.Application COM
object and the Microsoft Web Browser ActiveX control for displaying Web
and Windows content dynamically in your own applications. Article
includes lots of short immediately useful samples and a detailed
reference of how to use the HTML DOM object model from VFP.
Implementing
two-way Data Binding for ASP.Net
07/23/2003
ASP.Net simplifies many things but data binding simple controls
like textboxes and checkboxes leaves a lot to be desired. Databinding is
one-way only and you end up doing lots of repetitive work to publish
your data. In this article I'll show you how simple databinding in .Net
works and then show how to create custom controls that implement two-way
binding to make short work of creating databound forms.
Web Farming with Network Load Balancing in Windows Server 2003
06/04/2003
Hit the limits of your hardware for a Web application? Find out how to
scale out your application to run on multiple machines using the Windows
Server Network Load Balancing Service. Windows Server 2003 brings a new
front end to the Network Load Balancing Service that makes it easier and
cheaper to implement a Web Farm of multiple redundant servers that can
work in tandem to handle the meanest traffic you can throw at it.
Using
the ASP.Net Runtime for Scripting in Desktop Applications
07/23/2003
Want to embed the power of ASP.Net into your application to provide
rich and dynamic HTML displays in your applications? Add the ability to
dynamically execute script code that is changeable after compilation?
Don't want to give up debugging and the rich VS environment even in script
code? Then take a look at hooking the ASP.Net runtime into your own
applications. This article describes what it takes to integreate the
ASP.Net runtime in desktop apps and provides an easy to use class that
makes integration a matter of a few lines of code.
Creating a Statusbar
control with VFP 8
04/20/2003
Irritated by the lack of Theme support and inconsistent
behavior of the Statusbar control in MSCOMCTL.OCX? This article
describes how to take advantage of a number of Visual FoxPro 8's new
features to build a useful replacement to the MSCOMTL statusbar control.
Besides showing off some new VFP features like collections, BINDEVENTS,
the new Empty object and ADDPROPERTY, it provides a ready to use class
that provides the most common functionality of the StatusBar with VFP
code.
Using .Net
Components via COM from Visual FoxPro
01/02/2003
This article describes how to use .Net components from unmanaged
applications such as Visual FoxPro or Visual Basic. The topics describe
the basic process of creating .Net components and exporting them to COM
and then delves into additional topics of how to pass and access various
special types passed over the COM boundaries. In addition, the article
also points out a number of things to watch out for such as debugging,
installation, dealing with type issues and more.
Calling VFP COM components from .Net
01/02/2003
Find out how to call VFP COM components from .Net and
specifically ASP.Net. The article introduces the basics of importing COM
components into .Net and then referencing the component. It also touches
on how to pass various types of data between VFP and .Net when import
types don't work. You'll also learn how to debug COM components from ASP/ASP.Net
as well as the performance implications of using VFP components in ASP.Net.
.NET
Interop for Visual FoxPro
09/23/2002
Find out how you can use VFP code in .NET and how to use .NET code
in Visual FoxPro, in this comprehensive article that covers a number of
different ways that you can integrate Visual FoxPro and .NET. The main
three areas that are discussed are using the VFP OleDb provider, COM
Interop both calling VFP components from .NET (and ASP.NET specifically)
and calling .NET components from VFP and finally using Web Services for
interop. The document points out some pitfalls and workarounds and tricks
for working with data retrieved from .NET. This article is very detailed
and hence fairly long at 45 printed pages.
Dynamically
executing code in .Net
09/8/2002
This article discusses in detail how to execute code dynamically
by creating code and compiling it at runtime. This is a useful feature for
extending applications with user extensions or for adding support for
advanced templating. The article discusses the process of compiling code
and utilizing the new assembly. Also provided are classes that simplify
the process and an ASP like script parser that can be plugged into any
application with a few lines of code.
Automatic Code Updates over the Web with Visual FoxPro
06/26/2002
Ever have that sinking feeling when you find a critical bug in an
application that's gone out to a few hundred or more clients? How are you
going to update these installations without a lot of fuss and tracking
down customers with the bad news? This article describes how to build
automatic version checks and code updates into your desktop applications.
The detailed article discusses the process and provides a class that makes
this job easy.
Retrieve HTTP content with .NET
02/6/2002
This article discusses the .NET WebRequest and WebResponse classes
used to retrieve HTTP content over the Web in detail. In the process a
number of related .NET development issues are described including stream
handling, string encoding, using delegates, implementing events and
creating new threads to run HTTP requests simultaneously. The article also
provides a preliminary implementation of a wwHttp wrapper class that
abstracts many of the features of the .NET classes into a simpler front
end.
Run
Visual Foxpro Reports on the Web with Adobe Acrobat
02/6/2002
Ever wanted to run a Visual FoxPro report over the Web without
having to recode it in HTML or forcing it through some hokey HTML converter? Find out how
you can use Adobe Acrobat's PDFWriter software to generate reports on the fly and display
them on the Web. Looking like the real thing! This article discusses how it works and
provides a class simplify the process. This article and code has been
updated for Acrobat 5.0, AmyUni and ActivePDF drivers.
Passing data over .NET Web Services
12/7/2001
This article is a continuation of the introductory Web Services article
and expands with specific examples of passing ADO.NET DataSet objects over
Web Services to be consumed in a Windows Form application. The article
discusses the DataSet object in some detail and delves into how data is
consumed and displayed in the Windows Form environment along with a number
of related issues such as security.
Using the Office Web Components to create dynamic graphs
for GUI and Web applications
11/16/2001
Graphs can add significant impact to applications and you can use the
Office Web Components to generate graphs easily. This article shows how
the OWC work and provides a Visual FoxPro class that wraps the
functionality to generate charts directly from Fox cursors and arrays.
Creating
Web Services with .NET and Visual Studio.NET
6/8/2001
Find out how Web Services work and are created in the .Net framework. This
article introduces the concepts of Web Services, the technology and then
demonstrates how Web Services are created and consumed via several
examples. Source code available for download.
Running
long Web Requests with Asynchronous Request Processing
4/9/2001
Running long requests on a Web server can be problematic since
long requests can tie up valuable Web server resources and not give the
user feedback on the operation running. In this article Rick shows a
message based approach to offload long requests to application servers
while providing the browser with information on progress.
Configuring
IIS via code with the IISAdmin Objects
4/6/2001
As you build Web applications it's becoming ever more important
to configure the server under program control for install routines for
distribution and replication of functionality. This article shows how to
perform common tasks like creating virtuals and scriptmaps and a few other
tips that you'll need to create your own Web install wizards.
Building a
SOAP Web Service with West Wind Web Connection
10/26/2000
Find out how to build a Web Service that exposes Stock quote
information from a Web Serivce, then learn how to consume and use that
data in a variety of different environments. This article describes the
concepts of SOAP and Web Services and shows a live example you run online
and play with.
XML Data
Services in distributed applications
10/24/2000
Find out about generic XML Data Services that can provide data
directly to your client application. This article discusses the SQL 2000
XML features as well as a VFP based XML data server implementation that
lets you serve VFP and ODBC data from a VFP backend application.
Building distributed applications with XML messaging
10/20/2000
Have you been thinking about using XML in your applications,
but aren't quite sure why and how to use it intelligently? This article
discusses why XML is an important technology especially in the context of
distributed applications that run over the Internet. The article starts
with an overview and then jumps into practical examples that demonstrate
how you can easily convert VFP data and objects into XML and then move
this data over the Web via HTTP. Several examples show how you can share
and access this XML based data with just a few lines of code.
Load
Balancing Web Application with Windows 2000 Advanced Server
10/18//2000
Find out how to build scalable Web applications that span
multiple servers in a Web Server Farm environment. Windows 2000 Advanced Server ships with the Network Load
Balancing service that can handle
large amounts of traffic by spreading the load across multiple redundant
machines. Find out how to use this feature and what it means to your Web
applications.
Using SOAP to call Remote Objects
8/09/2000
Check out how to use Microsoft's Simple Object Access Protocol
(SOAP) toolkit to call remote functions and component methods over the
Web. This paper describes how to use the toolkit and how to create and
call components from Visual FoxPro as well as examples on how to create
custom SOAP clients.
Using
VFP COM components with Active Server Pages
10/24/99
Active Server Pages and Visual FoxPro both use objects to expose functionality
for your application development. This paper describes the basics and more advanced topics
on creating, debugging, installing, optimizing and maintaining COM VFP components in
Active Server applications. It also shows how to create more flexible Active Server
applications that take advantage of ASP's built in objects and ADO inside of Visual
FoxPro. You'll also find out how create objects in Visual FoxPro and use them inside of
ASP pages. There are also a few hints on debugging COM objects built in
VFP.
Stress Testing Web
Applications with Microsoft's Web Application Stress Tool
2/24/2000
As Web development is becoming more prevalent, the need to test
Web applications in order to determine the breaking points on a given set
of hardware becomes very important. Microsoft's Web Application Stress
Tool provides an easy way to test Web applications in a realistic
environment that simulates large numbers of users. This article describes
the test tool as well as discussing stress testing issues that you need to
think about when using it.
Accepting Credit Cards
over the Internet
03/29/00
As you build e-commerce applications, taking payment over the
Internet is one of the most frequently asked about issues that come up.
This article discusses how Internet payment gateways work and reviews a
couple of providers I've personally used.
Using Microsoft Transaction
Server with VFP
11/12/99
Microsoft Transaction Server is a big part of Microsoft's
Enterprise strategy, but the functionality and features of this powerful
system component is often misunderstood and misjudged. This article
discusses what MTS is and how it works and most importantly how it affects
your VFP applications in various scenarios.
Building
Distributed Applications over HTTP
11/12/99
Tired of hearing about having to rewrite your applications with an HTML
interface? Tired of the limitations of an HTML based user interface? Here's some
information on how to take advantage of Visual FoxPro on both the client and the server
ends of the Web for building rich distributed applications that can take advantage of the
Web's architecture without HTML. Discusses HTTP data transfers, WinInet and specific
examples of how you can use this technology built into the FREE wwIPStuff
class available from this site.
Internet Enabling Visual FoxPro Applications
4/22/99
Find out how to enhance your existing Visual FoxPro applications with Internet
functionality without having to do a full Web conversion. Learn how using a few
simple techniques that don't require much code can spruce up exsiting applications. This
document describes how to integrate Hyperlinks, Email, FTP and HTTP access, a few ways to
access data on the server, use DCOM to access COM objects on the server and use RDS to
connect to data over an HTTP connection.
Building Large
Scale Web Applications with Visual FoxPro
6/3/98
This document contains my session notes from Visual FoxPro DevCon '98 and discusses some
of the issues involved in building a high volume Web site using a live site as an example.
The Surplus Direct site is discussed in
detail with descriptions of some of the issues of integrating FoxPro development with the
HTML design, dealing with server management and site analysis, scaling the site for
traffic peaks and ever increasing load and how to deal with security issues. This document
also talks about some of the new VFP 6.0 scalability features and how they affect server
operation.
Calling
Visual FoxPro COM objects from Visual C++
10/18/98
Find out several different way of how you can access Visual FoxPro COM
objects from Visual C++. This white paper describes how to use native COM IDispatch calls,
using the ATL CComDispatchDriver class and using VC++ smart pointer type library imports
for accessing your servers. Also includes some discussion of how VFP COM objects are
implemented and some utility code useful for accessing COM objects.
Web Connection and Web
Programming Knowledge Base
10/03/98
This document answers common questions related to building Web
applications. In addition to information related to Web Connection this set of pages also
includes tips and tricks useful for Web Development of any kind.
Using
Microsoft's FoxISAPI
6/3/98
This document contains my session notes from the Visual FoxPro DevCon '98.
Discusses the basic mechanics of FoxISAPI and introduces by discussion a framework that
simplifies processing requests and generating output quickly.
Using Visual
FoxPro COM components with IIS 4.0 12/27/97
Things have changed for using COM/Automation servers with IIS in the latest
version. This document overviews what it takes to configure, debug and run your VFP COM
objects under IIS 4.0.
Accessing
Active Directory and the IIS Admin Objects with VFP 12/27/97
Active Directory is a new Microsoft Operating System service that allows a
common access interface to NT system components for resource and hardware mapping. Active
Directory will be prominent feature of NT 5.0, but it's implemented today for
administration of IIS 4.0 and Transaction Server. This article discusses how you can
access ActiveDirectory from VFP and a component that helps make the job easier.
Things have changed for using COM/Automation servers with IIS in the latest version.
This document
Database
Connectivity on the Internet with Visual FoxPro
9/14/97
Want to find out more about connecting databases in general and Visual FoxPro specifically
to the Web? This HTML document is based on my DevCon '96 session notes
and provides an overview on how to tie backend applications to Web pages. This document
also goes into some detail on how FoxISAPI, ActiveX Server and Web Connection work.Powerpoint slides are also available.
Visual Studio Articles
Calling
Visual FoxPro COM objects from Visual C++
08/18/98
Find out several different way of how you can access COM objects through
IDispatch interfaces from Visual C++. This document describes how to use native COM
IDispatch calls, using the ATL CComDispatchDriver class and using VC++ smart pointer type
library imports for accessing your servers.
Debugging IIS5 ISAPI
applications in Visual Studio
This document describes setting up Visual Studio and C++ to
allow debugging of ISAPI extensions and filters and COM components.
Debugging IIS4 ISAPI
applications in Visual Studio
This document describes setting up Visual Studio and C++ to
allow debugging of ISAPI extensions and filters and COM components.