.NET C# course - March 24-28 2003

Downloads from the course

WebServices.zip (12Mb) Dan's examples in a zip file
SOAPScope installer (19Mb) Tools for soap
Nant zip (1Mb) build tools like nat for .NET
Nunit.installer (1Mb) Unit test frameweork like Junit for .NET

Pictures from the course

When / Where

The course should run 9:30 - 5:30 all week.
Monday we will have Bloomberg 462.
Tue-Fri we will have Bloomberg 337.


Thie course it to be delivered by Dan Sullivan of Developmentor.

Free MS stuff

Jim Gray and Todd Needham have extended the offer of free subscriptions to MSDN (http://msdn.microsoft.com ) for anyone attending the class who doesn't already have one.
They are also offering any 3 Microsoft Press texts individual attendees would like (the full list is available at http://www.microsoft.com/mspress).
Please contact Todd toddn@microsoft.com,


You need to have a laptop for the course. Preferably with
500Mb Ram - you may get by with 256Mb
You should install IIS then
.NET Visual Studio include MSDA option or install SQLServer
Finally install Web Service Extension SP1 get it from

Course Outline

Web Services (day 1)
1. Web Services Architecture (but shorter perhaps)
Introduces Web services as the next-generation platform for building 
distributed systems. Specifically this module discusses the evolution of
 the Web, distributed system technology, and the various new XML 
specifications that come together to form the Web services platform. 
This discussion will familiarize you with Web service terminology and 
help you understand the big picture the drives Microsoft's implementation 
in .NET.

2. ASP.NET Web Services combine with VS.NET
Covers project management details, deployment issues, debugging, 
and some helpful tools in VS.
Discusses various techniques for building Web services in .NET such 
as writing custom handlers, using .NET remoting, and the 
preferred solution: ASP.NET. The rest of the module covers 
how to write ASP.NET WebMethods that expose traditional methods as 
Web service operations supporting the various XML/Web service 
specifications discussed in the architecture module

3. Web Service Clients (can be shorter)
Discusses various techniques for consuming Web services 
from a client application. Covers .NET's client-side HTTP stack 
(System.Net) and WSDL-based proxy classes (wsdl.exe), both of which 
offer synchronous and asynchronous processing.

If time lets do an example ...

Essential.NET in C# (day 2)
1. Objects, Values and Memory
Objects are instances of types that are managed by the runtime. 
Objects are allocated on a garbage-collected heap and can be compared for 
both identity and equivalence. The Common Language Runtime also supports 
defining lightweight classes called Value Types, whose instances are 
allocated in memory that is contiguous with where they are declared. 
Value types are useful for reducing memory management overhead due to 
excessive heap allocations. This module explores the relationship 
between reference and value types.

2. Reflection and Attributes
The Common Language Runtime makes virtually every facet of a type 
definition available to programmers in any language. The presence of 
such rich type information, as well as an API for accessing it easily at
 runtime, enables numerous forms of tool development and type system 

3. Combination module
   PInvoke - .NET and traditional DLL interop
   Exception handling
   Multithreading through delegates
Questions and Answers

web services (day 3)

1. HTTP Pipeline
Describes the .NET HTTP pipeline (System.Web), 
how it integrates with IIS, and various configuration details. 
Illustrates how to build custom HTTP handlers that can be configured 
to handle certain types of requests as well as simple .ashx handlers. 
Also discusses how to take advantage of certain pipeline components 
within WebMethods

2. Programming XML include Navigator API at least a mention
Discusses various techniques for programming XML in .NET including the 
low-level streaming APIs (XmlReader and XmlWriter), the DOM implementation 
(XmlNode), as well as the built in support for XPath 1.0. 

3. XML serialization
Discusses how WebMethods automatically translate between XML documents 
and CLR objects at runtime. Covers System.Xml.Serialization (XmlSerializer),
 xsd.exe, various mapping attributes, and integration with WebMethods

SOAP day 4.
8. SOAP 1.1/ASP.NET Web Services and SOAP (1 lab)
Introduces SOAP is the de-facto framework for XML messaging systems. 
Discusses the need for SOAP, and outlines the framing and extensibility 
elements that make it possible to negotiate application-level protocols. 
Also covers SOAP's standard error representation, HTTP binding, and 
encoding details
Discusses WebMethod support for automatic SOAP processing, 
as well as the various customization attributes for controlling 
SOAP message details including SOAPAction, various encoding details, 
errors represented as SOAP Faults, as well as custom header processing. 
Streaming Web services ....

9. WSDL 1.1/ASP.NET Web Services and WSDL (1 lab)
Introduces the Web Services Description Language (WSDL), 
today's de-facto standard for describing Web services, and 
discusses the benefits of a machine-readable format. Covers .
NET's WSDL support in wsdl.exe.
Discusses WebMethod support for automatic WSDL generation. This support 
includes a default mapping between class methods and WSDL operations as
 well as various customization attributes that allow you to control WSDL 
service and binding details. 

10. Scalability
Discusses various aspects of building scalable Web services 
including session and state management, caching, and other possible 
optimizations (e.g., asynchronous WebMethods). 

SOAP day 5
1. Versioning and Interoperability
Covers the never-ending issue of versioning, which even 
exists with Web services. Starts by defining various Web 
service versioning issues, and provides design recommendations that 
will help make your WebMethods easier to evolve over time.
Discusses various complexities that manage to get in the way of 
interoperability today. Offers design suggestions that will allow your 
WebMethods to interoperate with as many other Web service toolkits as 

2. DIME - binary XML format, Extending Web Methods WS-Futures

3. Free form Lab - put some of this together on our lap tops.
Include ADO to access DB and perhaps stream the result from a web sevice and 
consume with client.
Optional be ready to do something on interaction with SQL bottlenecks in the above 
type app.

William O'Mullane
Last Modified: $Revision: 1.9 $