This exam expects you—rightfully so—to be able to pick out the business requirements and their associated components in a logical model.
- By Matt Tiemeyer
In the last two Visual FoxPro Developer
conferences Microsoft and third-party gurus touted Visual
FoxPro as one of the best tools for building middle-tier
components. However, until recently there was no way to
judge your qualifications to create such applications;
likewise, there was little support for Microsoft Transaction
Server within Visual FoxPro. With the releases of Exam
70-155, Designing and Implementing Distributed Applications
with Microsoft Visual FoxPro 6.0, and Service Pack 3 for
Visual Studio (SP3), these deficiencies have been addressed.
Now Visual FoxPro can step into the spotlight and use
its fast database engine, object orientation (including
inheritance) and Xbase heritage to become a major player
in any distributed application.
In my experience in building enterprise
applications using both Visual FoxPro and Visual Basic,
I know that an enterprise application's success is directly
related to its application design, database design, infrastructure,
deployment, and disaster recovery planning. The exam I
review here covers all these topics in detail.
FoxPro 6.0 (70-155)
Exam 70-155 Designing and Implementing
Distributed Applications with Microsoft
Visual FoxPro 6.0
"This exam follows the same trend Microsoft
started with exam 70-100 by having more
complex scenario-based questions focusing
on design rather than trick questions
about arcane features of the product."
Number of questions:
95 in the beta; about half that expected
on the actual exam.
4 hours for the beta; expect around
90 minutes for the live exam.
Live as of February 2000.
Who should take
it? Counts as elective credit
toward MCDBA and core or elective credit
prepare you? Currently, no courses
Defining Business Requirements
This exam gauges your ability
to identify properly designed components as well as components
that are candidates for reuse. On the physical application
design front, make sure you understand the type of class
structure and coding methods used to implement components
for different business needs. Some coding methodologies
you should consider perfecting include error handling,
sub-classing, and delegation. Likewise, make sure you
can recognize what kind of component to build. When is
Standard EXE appropriate vs. COM EXE, Single-Thread COM
DLL, or Multi-Threaded COM DLL?
Tip: Be sure to read the
help file placed in the installation directory of Visual
FoxPro by Service Pack 3. Also know which types of components
require unattended mode and how to support unattended
One of the most important aspects of any business system
is the design of the database-and it's even more critical
in enterprise applications where you can have tens of
thousands of users. A bad database design can topple the
best of programs. With this in mind, study the basics
of both logical and physical design of databases. On the
logical front, practice identifying entities (tables),
primary keys, foreign keys, and relationships from a scenario
describing the business needs of a company.
Tip: Make sure you can pick
out and set up the different types of relationships: zero
or one to many, many to many, and many to one.
When studying the physical database design, review how
to normalize an existing database, as well as when to
de-normalize a database for performance. Make sure you
have a solid understanding of when and how to use indexes
to increase the performance of the Visual FoxPro database
Tip: An index increases
query performance but can harm the performance updates
Spend time beefing up your knowledge of how and when
to implement rules in the databases using constraints,
defaults, triggers, and stored procedures.
Tip: Good database design
skills, especially at the logical level, will help when
you take exam 70-100, Analyzing Requirements and Defining
Infrastructure Building Blocks
Infrastructure refers to both development and runtime
systems that provide support services for an enterprise
application. This encompasses the area of source code
control in the development infrastructure. How well do
you understand the integration of Visual FoxPro and Visual
SourceSafe? At the very least, you should know how to
install and configure Visual SourceSafe on your network
server and workstations. In addition, you should be familiar
with how to add a Visual FoxPro project to Visual SourceSafe
and join a project already in Visual SourceSafe. While
you're at it, review the "get latest," "check in," and
"check out" functions of Visual SourceSafe.
Tip: For a comprehensive
explanation on using Visual SourceSafe and Visual FoxPro,
read "Chapter 29: Team Development" in the Programmer's
Guide of the Visual FoxPro Documentation.
The infrastructure for the runtime can include things
like COM, DCOM, ADO, MS SQL Server, and MTS. COM and DCOM
are the standards for communication across the tiers in
an n-tier application. Learn the basic concepts and terms
associated with COM and DCOM for any development exam
offered by Microsoft. Also, make sure to review the procedures
for building COM and DCOM servers using Visual FoxPro.
Active Data Objects (ADO) is another topic that almost
all Microsoft development exams share in common. ADO provides
a common object model for accessing diverse data sources
from any COM-enabled client. This allows products like
Microsoft Excel and Visual FoxPro to access relational
and non-relational data in the same manner. One of the
main benefits of using ADO in an enterprise application
is that it allows you to return a substantial amount of
data from a middle-tier component written in Visual FoxPro
or any other development language.
Tip: Make sure you understand
disconnected recordsets and how to persist recordsets.
SQL Server provides a highly reliable and scaleable transaction-based
back-end database for hosting your enterprises data. Make
sure you know how to access SQL Server using Visual FoxPro-remote
views and SQL passthrough-as well as the SQL commands
for updating and retrieving data.
Tip: Make sure you're familiar
with all of the SQL pass-through commands.
At the Heart of MTS
Microsoft Transaction Server (MTS)
exists in the middle tier as a server that not only provides
transaction management, but manages other resources as
well. These other resources include threads, database
connections, processes, and security roles. In order to
pass any Enterprise development exam, you have to be very
familiar with MTS.
One of the first things you'll need
to know are the requirements for an MTS component. An
MTS component should be an in-process COM component (DLL),
that's self-registering, supports apartment model threading,
and provides a type library.
One of the more important concepts
to grasp is how to group components into packages. This
decision isn't trivial. Since each package is its own
server process, each package boundary becomes a boundary
for fault isolation and security. In addition, any information
passed between packages must be marshaled across the processes
causing additional overhead.
How confident are you in your ability to manage database
transactions using MTS? In particular, do you know how
to use MTS Explorer to choose and set the transaction
property for each component as well as the Visual FoxPro
code required to inform MTS of the transaction state?
Tip: Review the following
two white papers for an overview of using MTS with Visual
FoxPro: "Microsoft Transaction Server for Visual FoxPro
Developers" by Randy Brown and "Using Microsoft Transaction
Server with VFP" by Rick Strahl.
Deployment has always been a major
issue in any good-sized application, but with enterprise
applications it takes on a whole new order of magnitude.
No longer can you merely run a setup program on every
client. With enterprise applications you need to install
all of the components and services in the middle tier
as well as set up each client to use the appropriate middle-tier
servers and services. Your deployment might even include
setting up a Web site on a new or existing Web server.
Make sure you've worked with two tools available to help
you deploy your system across the enterprise. The first
is the Visual FoxPro Setup Wizard, which will step you
through creating a setup package to install all the necessary
runtime files on a client or middle-tier server machines.
Tip: Make sure you install
SP3 and then run the Setup Wizard. SP3 upgrades the wizard
in a number of ways. For example with SP3, the setup wizard
will now correctly install all files needed to support
The second tool is the client install
executable created by MTS when it exports a package. The
client install executable will copy over and register
the type libraries and server proxies for your middle-tier
components. By default, when you run the client install
executable on a client machine, that client will always
request components from the server that created the client
Disaster Recovery Planning
While system availability is important and should be
part of any system design, unpredictable things happen
(earthquakes, fires, a service technician walks into your
server room unannounced ). When these things cause
loss of data and/or connectivity, it's time for disaster
recovery to kick in. For example, by having a complete
duplicate data center in a different part of the country,
companies were able to be up and running the day after
the World Trade Center bombing. Make sure you grasp how
to recover from a corrupt table or corrupt index.
Tip: Reindex doesn't fix
all index corruption; sometimes you have to delete all
the tags and rebuild them from scratch. This is especially
true when the corruption is in the index header.
Besides fixing corruption, an experienced
developer can design systems that minimize the chances
for corruption and provide effective backup strategies-and
can explain those decisions.
The Problem with Taking a Beta Exam
This exam suffered from the same problems as all of the
beta exams I've taken. At least two questions had no correct
answers listed (from what I could tell); others were poorly
worded. I assume these problems will be fixed by the time
Microsoft releases the exam. What I do expect to be a
problem in the released version of this test, is the time
allowed. The exam contained numerous long scenario-based
questions, which seemed to be overly complicated and required
a significant amount of time to read and decipher. While
this made the time allowed a factor, I know of no better
way to develop questions that test design skills.
Overall, I think this exam-while tough-is quite passable.
My final suggestion for anyone wishing to tackle the Visual
FoxPro Distributed test is to build a sample application
with a number of different components, some of which are
hosted inside MTS, and then deploy it to a couple of test
machines. It also won't hurt to bone up on your database
and component design skills. Good luck!