Exam Reviews

Distributed FoxPro

This exam expects you—rightfully so—to be able to pick out the business requirements and their associated components in a logical model.

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.

Distributed FoxPro 6.0 (70-155)
Title: Exam 70-155 Designing and Implementing Distributed Applications with Microsoft Visual FoxPro 6.0

Reviewer's Rating: "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.

Time allowed: 4 hours for the beta; expect around 90 minutes for the live exam.

Current status: Live as of February 2000.

Who should take it? Counts as elective credit toward MCDBA and core or elective credit for MCSD.

What classes prepare you? Currently, no courses are available.

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 mode.

Database Design

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 engine.

Tip: An index increases query performance but can harm the performance updates and inserts.

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 Solution Architectures.

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 Tools

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 HTML help.

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 install executable.

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.

Additional Information

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!

Featured

comments powered by Disqus

Subscribe on YouTube