Dissecting the Microsoft Web Services Exam
In this exam analysis, I cover the #70-310 exam, Developing XML Web Services and Server Components with Microsoft Visual Basic .NET and the Microsoft .NET Framework. But because exam #70-320 covers essentially the same subject matter, except for a programming-language focus on C# (pronounced “C-sharp”), this dissection serves reasonably well for that exam, too. Both exams count as core credit for either the Microsoft Certified Application Developer (MCAD) or Microsoft Certified Solution Developer (MCSD) certifications, and as elective credit toward the Microsoft Certified Database Administrator (MCDBA) certifications as well (with the proviso that what counts as a core credit may not also count toward elective credit for the same certification).
Exams #70-310 and #70-320 are part of a new generation of .NET-centric exams that Microsoft is promoting to encourage developers to write code to the .NET Framework and for the services and capabilities associated with their forthcoming Windows Server 2003 platform (formerly known as Windows Server .NET, in fact). Because Microsoft makes so much of the .NET environment’s abilities to support XML and Web services, I chose to dissect this exam in the hopes that it will help explain why the hype and hoopla may actually be warranted in this case—at least, to some extent.
Microsoft indicates that an ideal candidate for these exams works as a member of a programming team in a medium or large development environment that uses Microsoft Visual Studio .NET, either in conjunction with Visual Basic .NET (#70-310) or Visual C# .NET (#70-320). Candidates should possess a working knowledge of the programming language that is a focus for either exam and should also have at least a year’s worth of experience developing middle-tier software components. In Microsoft-speak, which uses a three-tier model, this means developers should have practice developing components that neither manage the user interface (top tier) nor that support actual transaction processing or query-level database access (bottom tier). The middle tier packages user/upper-tier requests for service and decomposes queries for bottom-tier consumption as necessary, then aggregates bottom-tier responses for delivery to user/upper-tier applications. It’s very much a software “middleman” in this architectural scheme of things.
As such, these exams measure individual abilities to develop and implement middle-tier components, related server components and XML Web services using Visual Studio .NET, the focus language (Visual Basic .NET or Visual C# .NET) and the Microsoft .NET Framework. To that end, Microsoft recommends that candidates become proficient in a whole series of job skills, which I describe next.
Creating and Managing Services and Components
To begin with, candidates must understand how to create and manipulate a Windows service, which runs as part of the Windows runtime environment when properly installed and configured. Perforce this means understanding what’s involved in creating a Windows service and how to write code to handle starting and stopping of such services.
Next, candidates must be able to create and consume serviced components, which are elements of code that interact with and depend on Windows services for their specific functions. For this area of expertise, candidates must know how to implement a serviced component and how to create interfaces that are visible to the Common Object Model (or COM) environment. They must also know how to create a strongly named assembly, how to register their serviced components in the global assembly cache (thereby making them available for general use and access) and how to manage such components using Visual Studio’s Component Services tool.
Likewise, candidates must know how to create and consume .NET Remoting objects, which permit network or Web-based access to middle- and bottom-tier components. To that end, they must be able to implement both server- and client-activated components. They must also be able to use a proper channel protocol and formatter, where channel protocols include TCP and HTTP, and formatters include SOAP (XML-based Simple Object Access Protocol) and binary. They must know how to create client and server configuration files to manage .NET Remoting objects, be able to implement asynchronous methods for Remoting object access, create a listener service to handle incoming service requests and be able to instantiate and invoke .NET Remoting objects.
In the same vein, candidates must also understand how to create and consume XML Web services. This means they can control characteristics of Web methods using object attributes, create and use SOAP extensions and create asynchronous Web methods. They must also be able to control XML wire formats for XML Web services and be able to instantiate and invoke such services.
For all these service and component types candidates must also understand how to implement proper security and know how to access unmanaged code from them as well.
Consuming and Manipulating Data
This portion of the exam deals with handling data from a variety of sources or types. To begin, candidates must be able to access and manipulate data from within SQL Server databases by creating and using ad hoc queries and stored procedures. They must also be able to create and manipulate DataSets, including manipulating DataSet schemas and relationships and creating strongly typed DataSets. A good working knowledge of SQL Server access methods and queries is required for this portion of the exam.
Candidates must also understand how to access and manipulate XML data. To begin, this means understanding how to access XML files using the Document Object Model (DOM) and an XmlReader. It also means understanding how to transform DataSet data into XML data, either programmatically or through use of XSLT. It also means understanding how to use XPath to query data already stored in XML format and knowing how to generate and use the XML Schema Definition (XSD) markup language. Candidates must also understand how to formulate SQL statements to retrieve XML data from within SQL Server databases, as well as how to update SQL Server databases using XML. Finally, they must also be able to validate an XML document against document definitions (primarily XSD). Considerable and substantial knowledge of XML concepts, terminology, markup languages and related readers and tools is required for this part of the exam.
Testing and Debugging
Candidates must not only understand how to create code, components, services and so forth, but also how to test them correctly to ensure proper operation of what they build. This begins with creation of a unit test plan, whereby individual code components are tested separately to make sure they display proper behaviors and capabilities. It also means understanding how to use tracing functions within Visual Studio and programming languages, including how to configure and use trace listeners and trace switches and how to display trace output.
Candidates must further understand how to instrument and debug the various types of code components and services they must know how to build—namely, Windows services, serviced components, .NET Remoting objects and XML Web services. For each one, the candidate must know how to configure the debugging environment, how to create and apply debugging code to components and applications, how to provide multicultural test data to components and applications and execute specific tests.
Candidates must be thoroughly familiar with interactive debugging tools and techniques. They must also understand how to log test results, so that they can resolve errors and rework code as needed, control debugging behavior in the Web.config file and use SOAP extensions for debugging. Here, the emphasis is on understanding tools, techniques and best practice