High Level Overview of Microsoft .NET and Key Related Technologies

salmonbrisketΛογισμικό & κατασκευή λογ/κού

2 Νοε 2013 (πριν από 3 χρόνια και 7 μήνες)

118 εμφανίσεις

High Level Overview of Microsoft .NET and Key Related Technologies


Howard E. Hinman

Architect, Microsoft Consulting Services

Version
3
.0

June 2
, 2008


2


Table of Contents

Introduction
................................
................................
................................
................................
................................
.............

4

What is Microsoft .NET?

................................
................................
................................
................................
.......................

4

Common Type System (CTS)

................................
................................
................................
................................
...........

4

Managed vs. Unmanaged Co
de

................................
................................
................................
................................
......

4

Verifiable Type Safe Code

................................
................................
................................
................................
...............

5

Other Goals in .NET

................................
................................
................................
................................
.........................

5

Common La
nguage Runtime (CLR)
................................
................................
................................
................................
..

5

SQL CLR

................................
................................
................................
................................
................................
.......

6

Marshalling and Serialization

................................
................................
................................
................................
..........

6

Application Versioning

................................
................................
................................
................................
....................

6

Fi gure 1
-

The .NET Global Assembl y Cache (GAC)

................................
................................
................................
.....

7

Fi gure 2
-

.NET Framework Folder Showing versions In
stalled

................................
................................
..................

8

.NET Framework Classes and APIs
................................
................................
................................
................................
...

8

.NET Frameworks for Mobile Devi ces and Mi cro Devi ces

................................
................................
..............................

9

.NET Programming Languages
................................
................................
................................
................................
.........

9

XML
................................
................................
................................
................................
................................
..................

9

Interoperabili ty in the .NET Envi ronment

................................
................................
................................
.....................

10

.NET Platform on other Platforms
................................
................................
................................
................................
.

11

Key .NET Technologies
................................
................................
................................
................................
.........................
12

User Interface Te
chnologies (UI)
................................
................................
................................
................................
........

12

Wi ndows Forms (WinForms)
................................
................................
................................
................................
.........

12

ASP.NET Web Forms
................................
................................
................................
................................
......................

12

ASP.NET Master Pages (ASP.NET in .NET Framework 2.0)

................................
................................
.......................

12

AJAX

................................
................................
................................
................................
................................
..........

13

Web Client Software Factory
................................
................................
................................
................................
....

14

ASP.NET 3.5 Extensions Preview

................................
................................
................................
..............................

14

Wi ndows Presentation Foundation
-

WPF (.NET Framework 3.0)
................................
................................
................

14

Sil verli ght

................................
................................
................................
................................
................................
.......

15

Communications (Distributed) Technologies
................................
................................
................................
...................
16

Web Servi ces

................................
................................
................................
................................
................................
.

16

COM+ (Enterprise Servi ces)
................................
................................
................................
................................
...........

17

.NET Remoting

................................
................................
................................
................................
...............................

18

Wi ndows Communi cations Foundation


WCF (.NET Framework 3.0)

................................
................................
........

18

LINQ

................................
................................
................................
................................
................................
........................
18

LINQ to Relational Data

................................
................................
................................
................................
.................

18

LINQ to SQL

................................
................................
................................
................................
...............................

19

LINQ to Enti ties and the Enti ty Framework

................................
................................
................................
..................

20

Data Related Technologies

................................
................................
................................
................................
.................
22

Si mple

File and Stream I/O
................................
................................
................................
................................
............

22

XML File I/O and Support

................................
................................
................................
................................
..............

22

LINQ to XML

................................
................................
................................
................................
..............................

23

ADO.NET

................................
................................
................................
................................
................................
........

23

Using LINQ wi thin ADO.NET

................................
................................
................................
................................
.....

23

ADO.NET Entity Framework
................................
................................
................................
................................
......

24

Mi crosoft Sync Framework

................................
................................
................................
................................
...........

24

SQL Server

................................
................................
................................
................................
................................
.....

24

.NET Development Tools

................................
................................
................................
................................
.....................
26


3


Visual Studio

................................
................................
................................
................................
................................
..

26

Team Foundati on Server (TFS)

................................
................................
................................
................................
......

26

.NET Designer Tools

................................
................................
................................
................................
.............................
27

Expression Studio

................................
................................
................................
................................
..........................

27

Expression Blend
................................
................................
................................
................................
.......................

27

Expression Web

................................
................................
................................
................................
........................

27

Expression Design

................................
................................
................................
................................
.....................

27

Expression Media
................................
................................
................................
................................
......................

28

Expression Encoder
................................
................................
................................
................................
...................

28

SharePoint Desi gner

................................
................................
................................
................................
......................

28

Other Signifi cant .NET Related Technologies

................................
................................
................................
..................
28

Internet Information Servi ces (IIS)

................................
................................
................................
................................

28

Bi zTalk
................................
................................
................................
................................
................................
............

29

SharePoint Servi ces and Mi crosoft Offi ce SharePoint Server (MOSS)
................................
................................
..........

29

Wi ndows Workflow Foundation


WF (.NET Framework 3.0)

................................
................................
......................

29

CardSpace (.NET Framework 3.0)
................................
................................
................................
................................
..

30

Smart Clients and Click Onc
e Deployment
................................
................................
................................
....................

30

Fi gure 3

View of a Composite Smart Client Approach.

................................
................................
..........................

31

.NET Community

................................
................................
................................
................................
................................
...
32

Community Si tes
................................
................................
................................
................................
................................
.

32

Forums
................................
................................
................................
................................
................................
................

32

Source Code
................................
................................
................................
................................
................................
........

33

MVP’s and Regional Di rectors


Empowered Communi ty Leadership

................................
................................
..............

33

Securi ty Focused

................................
................................
................................
................................
................................
...
33

.NET Framework Versions and Updates

................................
................................
................................
...........................
34

Microsoft .NET Development Best Practices Resources

................................
................................
................................
36

Fi gure 4


Patterns and Practi ces Guidance Explorer.

................................
................................
.............................

38

New York Ti mes Reader
-

A Disconnected/Offline “Killer Application” written in .NET and WPF
..........................
38


4


Introduction

The purpose of this
document

is to
make available

a high level ove
rview of Microsoft’s .NET framework

along with
some of the key technologies and terminologies involved. As .NET has grown over the years
,

a significant
amount

of new

term
inology

and technologies have emerged therein. The following write
-
up
will hopefully p
rovide explanation
regarding some of these terms and technologies

to those who are
new as well as those who have been working with .NET for years.

There are a significant number of hyperlinks to related content on the internet. While many of these
links
ar
e to Microsoft web sites

for deeper technical content
, a significant number are to other resources
including Wikipedia, personal blogs, etc. The idea behind such is to give readers a chance to drill in
deeper to any of the technology areas described below
(
if interested in doing so
)
, while present
ing

a
balanced view of each.

What is
Microsoft
.NET?

The Microsoft
.NET Framework

is a collection of development and execution components that can be
le
veraged by application developer
s

writing in a
ny number of

language
s

supported by .NET.
The object
c
ode produced by a native .NET compiler (e.g. VB.NET, C#, and even COBOL.NET) is in a physical format
called
Common Intermediate Language

(“CIL”) which
was previously

known as
Microsoft Intermediate
Language (“MSIL”
).
Along with the CIL generated by a .NET compiler is

related
meta
data

that results in a

Manifest
” component which is actually included in the resulting executables

(known as “
Assemblies

,
which are
Portable Executables
)
.

The Manifest
portion of a .NET assembly
describes relationships of the
application components as well as contains some attributes such as version requirements and security
identification.

Common Type
System (CTS)

Because a very common issue with cross language interaction revolves around different data types
supported by various languages, a key component of the .NET technology is the
Comm
on Type System

(CTS). This system implements a common set of data types (e.g. String, Integer) that all .NET languages
must implement, along with a set of rules regarding behavior of such.
This does not, however, preclude
languages from having their own u
nique data types. Instead it guarantees a common set of data types
that all languages must support for interoperability between both differing languages (e.g. C# calling VB
or even COBOL), as well as seamless interaction with .NET Framework classes.

Manag
ed vs. Unmanaged Code

The CIL code produced by a .NET compiler is known generically in .NET terminology as “
Managed Code
”.
Code produced by non
-
.NET compilers and executed outside of the .NET CLR i
s known as “
Unmanaged
Code
”. Examples of unmanaged code are Windows 32 Bit .DLL’s (Win32) produced by non
-
NET
compilers such as C++ (although
managed C++

is available in .NET). Applications written in JAVA are
another example of unmanaged code.


5


Verifiable Type Safe Code

The .NET framework was created to resolve some significant challenges/problems presented to
programmers in
today’s world. These include getting different programming languages to interoperate
correctly without problems such as differing data types and memory models, for example. Having a
common runtime (the CLR) managing all languages also alleviates some signi
ficant problems such as
memory management and garbage collection. Additionally .NET deemphasizes the use of pointers and
other constructs that cause memory leaks and unsafe code in general. This allows for the production of
verifiably type safe code



a major feature of .NET. However, Pointers are typically supported in .NET
languages that support such (even COBOL by the way), but usage of pointers
in some languages
may
require

memory pinning and/or
declaring blocks of code using such as “Unsafe”
.

Other Goals in .NET

Additionally, portability (
ease of application portability between different releases of the .NET
Fra
mework largely

within different Windows platforms) and
security

were other strong goals. A large
emphasis of the .NET framework was also massive functionality targeted at creating
both

Desktop and
Web applications

as well as easing deployment
. XCOPY deployment


which means the ability to install
applications by simply copying them to another machine


was a goal which de
-
emphasized use of the
Windows Registry to store configuration inf
ormation.

Common Language Runtime (CLR)

Assemblies

are loaded at runtime
in
to

something called the
Common Language Runtime

(“CLR”
).
The
CLR ensure
s

that
CIL code

in Assemblies
goes thro
ugh a native code generation step (known as “
Just in
Time Compiling
” or “JIT”) to create a more machine loadable type of code for performance reasons
before executing it. Part of this p
rocess places the JIT’ed code into a cache for future execution. This
means
that
the very first time a

.NET

application is executed, it can
seem

slow because of the JIT step.
You may have encountered this phenomenon when clicking on
an

.ASPX page (for exam
ple) in a web link
and watching the blue progress bar move

slowly from left to right. The

next time you click on it
however, it

may be instantaneous response because the JIT’ed code has been cached and is ready for
immediate execution

upon subsequent acces
s
.
This means that .NET developers should ensure that
newly deployed web pages and applications are already JIT’ed.

The CLR also manages the execution of .NET assemblies providing a runtime environment that
encompasses: process, thread and memory managemen
t, garbage collection, a
rich exception handling
model
, and security.




6


SQL CLR

Microsoft has recently introduced the
.NET
CLR within SQL Server which allows for .NET applicatio
ns to
be hosted inside of SQL Server. This means that user defined functions, triggers and even stored
procedures can now be written in .NET languages and deployed within SQL Server.

Marshalling and Serialization

One of the problems that .NET attempts to s
olve is cross language compatibility which often revolves
around significant issues on data typing. In order to implement cross language data typing, techniques
are used to massage objects and data into various forms and back. This process of data massagin
g is
known as “
Marshalling
” in the .NET world. A key feature of .NET (including third party other language
compilers as well) is that many of the marshalling requirements are
taken care of automatically and
“behind the scenes” for developers. For more complex marshalling requirements (including those
created by Interop to non
-
net languages), .NET provides a set
of
marshalling classes

to assist.

Serialization

is often considered to be synonymous with marshalling, but I disagree slightly and I think it
worth noting separately as the term comes up oft
en (
serialization in .NET
). Serialization is certainly
related to marshalling, but I define it as the technique for taking complex items (e.g. Objects
or
even
certain types of complex
data structures) and creating linear images of such for storage to disk and
transmission over networks (including Internet).
An often common
example of serialization is taking
some object or data structure and representing it in XML (either text or binary
XML). This allows the
object or data to then be transferred as a file over a network and/or consumed directly by some other
technology that is XML aware. Thus we often hear the term “serializing into XML”, when looking at
development in this area


particu
larly in Internet communications.

Application Versioning

.NET also implemented
application versioning

to assist deployment and
to relieve what many Windows
users used to

fondly


refer
to as “
DLL Hell
”. Application versioning allows users to install different
versions of applications containing the same executable names on the same machine and to guarantee
they stay separated so that

wrong version DLL’s do
not get

called by an application.
This is
assisted

via a
.NET technology known as
strong names
, wherein developers can optionally generate strong name
keys
based upon information like version number and include them in their .NET executables
.

Applications
may be deployed as either private (typically
X
C
opied to a specific folder and executed from there) or
shared
which means application components can be
shared between multiple applications.

Shared Applications and components are installed into a central location known as the
Global Assembly
Cache

(GAC).
This is actually a folder in t
he Windows operating system directory on
the
machine
(typically “c:
\
windows
\
assembly”).
Figure 1 b
elow is a screen shot of such:


7



Figure 1

-

The .NET Global Assembly Cache (GAC)


Side by Side execution is a term coined regarding the ability for multiple v
ersions of the .NET Framework
to be installed and working side by side on the same machine to provide a high level of application
compatibility. So writing an application targeted at version 1.0 of the .NET Framework (for example) is
not affected by instal
ling a newer version (e.g. version 1.1) of the .NET
F
ramework, because they
execute side by side using versioning technology. You can, however
,

control versioning with some
options that allow you to always interact with a specific version
of the .NET Frame
work or create a
default behavior wherein your application always
uses the newest version of the .NET Framework

installed (in some cases, this may cause problems, however, so you should
carefully consider such).


8


You
can
actually see which versions of the .NET Framework are installed on a machine by looking in the
framework directory under the Windows operating system (typically
“c:
\
windows
\
Microsoft.NET
\
Framework” as illustrated below:


Figure 2
-

.NET Framework Folder Showing versions Installed

.NET Framework Classes and APIs

The
.NET
framework itself came with over 5000 predefined classes
, methods, properties

and API’s that
can be used as application building blocks.
The
.NET Framework classes

are grouped logically into
Namespaces
.
For example, tasks that caused some customers to purchase

3
rd

party software packages

9


or to write significant amounts of code to support may now be available in a .NET class such as classes to
send emails and even classes to do both high and low level network transports among many other
things. And these are qui
ckly becoming the same technologies that Microsoft itself relies on in its
products, so these components are typically well tested and tuned for performance.

When migrating legacy applications to the .NET environment (e.g. mainframe, PowerBuilder, C++, JA
VA),
i
t is
often
possible that some portion of code might be replaced by calls to .NET Framework classes
which help
s to

simplify a migration or conversion.

.NET Frameworks for Mobile Devices and Micro Devices

There is a separate smaller .NET frame work for

mobile devices and clients that need a smaller footprint
while accepting less functionality. This is known as the
.NET Compact Framework

-

sometimes called the
Compact
E
dition or “CE
”. Mobile phones running Windows Mobile (for example) utilize the Compact
Framework.

There is even a new version of the .NET Framework known as the
“.NET Micro Framework
” for even
sm
aller and/or more constrained devices (.NET in your toaster?). For example, some remote controls
can now be programmed using .NET applications written for the .NET Micro Framework.

.NET Programming Languages

When .NET was first released, Microsoft included

new programming languages such as
C#
,
Visual
Basic.NET

and
J#

(which is being sunset, by the way). Some may argue that Visual Basic.NET (VB.NET) is
not a new language, but an extension of Microsoft’s previously popular Visual Basic. But VB.NET is an
extensive rework of the previous VB including a n
ew object model


to the extent that many older VB
applications are not upward compatible to VB.NET without some conversion. Microsoft offers tools to
assist this conve
rsion
, by the way.

Microsoft continues to carry
Visual C++

into the future including the ability to create
.NET managed code
C++ applications

and for interop between managed .NET programs and unmanaged C++.

Microsoft more recently created a new language for .NET known as
F#
. Additional
ly, 3
rd

party software
companies have developed a
myriad of programming languages (both old and new) for the .NET
Framework
. These include ADA, COBOL, Eiffel, FORTRAN, LISP, PERL, PHP, PYTHON, RP
G and even
SCHEME


just to name a few. This means that enterprises have significant new options for dealing with
legacy applications as well as newer languages which provides many new options to migrate to .NET.

XML

XML (
Extensible Markup Language
) does for data what HTML does for Web pages. It
allows for the
representation o
f just about any type of data into a human readable and easily transportable format.
Microsoft has immersed itself into XML. Many of
what used to be .
INI

files and configuration settings in
registry and/or database or side files for a wide range of products such as Visual Studio are now XML

10


files. The advantage of this is a common approach with the ability to externalize configuration s
ettings
outside of applications in a very standard and easily recognizable format.

There is a rich set of
XML related classes

available in .NET. Additionally, both Microsoft and othe
r 3
rd

Party software products are XML aware, which makes XML an excellent choice for exchanging data
between th
ese

applications running on a variety of platforms. Microsoft’s SQL Server support
s

import
and export of schemas and data
in XML format
which all
ows data extract and synchronization to
become very straightforward.

The latest release of Office (Office 2007
-

also called “Office 12” by some) completely changed the major
file formats of most
O
ffice components into a new format that relies heavily on
XML. This means (for
example
)

that the old MS Word .
DOC

file format
(
which is now “.
DOCX

)

is completely different. The
new
Office Open XML Format

(.
DOCX

for Word, or .
XLSX

for Excel,
or .
PPTX

for PowerPoint to name a
few) is actually physically a .zip file (you can actually rename any of these file formats to .zip and use
WinZip
or built in Windows .zip support
to extract them).

What this means for Office is that the format is
now
com
pletely opened up and you can manipulate
these files outside of Office. For example, one can write a program to take a mainframe report and
translate it into ASCII from EBCDIC and format it and pop a .
DOCX
Word document out the back end


without even touc
hing Microsoft Office. Microsoft has created
Visual Studio Tools for Office

to allow
developers to both make use of these formats and create custom Office applications and integration.
Consider (for example) th
at
a user

might have his upcoming appointments in his or her Outlook
Calendar and an application could actually reach in and get the customer names and details, connect to
some Web application, and pull down data and information about the customers ahead o
f time to
populate a local data store in order for the
user

to be later disconnected but have this information
available to any
other

desktop application he
or she
might use.

Interoperability in the .NET Environment

Because at the time .NET was introduced
, the world had no applications written in Managed code,
Microsoft had to provide support for applications written in .NET to interact with applications not
written in .NET (unmanaged code). And this support had to be robust, as .NET itself relie
s

on many
Microsoft components and products that
are

not
written
in .NET (and this is still so today). Microsoft
could not realistically rewrite its entire product set (e.g. Windows, Office, SQL Server, etc.) in
to

.NET and
release all of this
in one fell swoop
. And
clearly, .NET developers
must

in many cases interact with
these
products

as well
(e.g. writing a database application in C# that interacts with SQL Server which is not
written in .NET).

Multiple interoperability features appeared in .NET from day one and
this support continues to evolve
with
in

the .NET framework. I think this is worth mentioning here because I currently foresee one
potential scenario where
some legacy applications

might become a mixture of .NET and non
-
.NET code
in the short term and thus
rely on .NET interop technologies which I’ll discuss later on. This subject is

11


explained in great detail
here

although it’s a 2003 article and some changes have occurred. Another
good
article may be found
here
.

Interop with Microsoft’s COM architecture

is supported in .NET. This is an examp
le of an area that could
be a bit challenging in early versions of .NET but has evolved dramatically over the years.

Platform Invocation Services

(PInvoke)


Interop is sometimes r
eferred to as communication between
two object oriented runtime environments, but I also consider the term to apply to simply calling out to
both object oriented and non
-
object oriented API’s and programs (typically unmanaged .DLL’s in the
Microsoft Window
s world

known as WIN32
). For this task, .NET contains a facility known as
Platform
Invocation Services

or “PInvoke” for short. This is a very commonly used facility to call from .NET
managed programs to non .NET unmanaged programs (e.g. C# calling unmanage
d C++).

One of the challenges in doing interop is how to deal with differing data types. In the .NET world, this
area is known as “
Marshalling
”. Historically, massaging data bac
k and forth between different language
environments could be extremely difficult and destabilizing. .NET actually automates a significant
portion of this and additionally provides marshalling classes to assist in more non
-
standard cases.

One of the challe
nges of using C++ code in .NET (whether converting to C# or migrating to managed C++
)

is the use of pointers, which requires the declaration of “unsafe” blocks to signal the .NET Runtime to
typically pin these down and be careful with them (in non
-
technica
l terms). One place you may need to
use pointers is in the interop area


for example when interfacing with unmanaged code. There is a good
article on how to use pointers in C#
here
.

A good related article regarding interop in .NET can be found
here
.

.NET Platform on other
Platforms


There is
work going on

to create versions of the .NET framework on Macintosh (MAC) and
FreeBSD
.
Some of this work is by Microsoft and some by third parties such as N
ovell (known as “
Mono
”). The
current Microsoft work is labeled as “Experimental” as I understand. Given what I know currently, I
don’t believe it would be wise to p
lan for a delivery of cross platform .NET application with full GUI
on
non
-
Windows OS’
in the next 6
-
12 months, but this could change if the MS team discloses anything I am
allowed to share. It may be worthwhile, however, to factor in that it certainly app
ears that a .NET
Framewo
rk for MAC will appear sometime


whether driven by Microsoft or by 3
rd

parties with or
without Microsoft’s cooperation.

A .NET 3.0 implementation of Mono known as “
Olive
” is already underway as well. Additionally, there is
a project named “
Moonlight
” going on driven by Microsoft’s
Silverlight

browser plug
-
in technology to
enhance cross platform .NET runtime support for it on other platforms.
And

Microsoft is working on
something named “
Windows Live Core
” (WL
C) as part of their “software as a service” initiative related
to
cloud computing
. WLC is
being
built on top of Silverlight

which is discussed below
.


12


Key .NET Technologies

User Interface Technolog
ies (UI)

There are a number of user interface technologies included in the .NET framework targeted at different
application scenarios and platforms.

While not listed specifically, .NET provides a console interface for
simple applications as well.

Windows F
orms (WinForms)

The technology used in .NET from day one for creating desktop GUI interfaces is
Windows Forms

(also
known as “WinForms”). This provides .NET developers with a managed code interfa
ce into the Windows
API’s for graphical user interfaces. While considered a replacement for the older
Microsoft Foundation
Class libraries

for C++

-

because of its event
drive
n programming

implementation, WinForms does not
implement
a good
Model
-
View
-
Controller

paradigm sometimes used in application architecture.
While
Microsoft will continue to support Windows

Forms for years to come, a newer technology named
Windows Presentation Foundation
(WPF)
is quickly becoming the preferred move ahead
Graphical
User
Interface technology for the .NET realm (discussed below).

ASP.NET Web Forms

The technology used in .NET to

create interactive web pages is known as
Web Forms

which is
implemented using
ASP.NET

-

Microsoft’s
.NET
Web application framework

(described in more detail
below)
.
Web Forms was well accepted because it implement
s

an event driven programming paradigm
which vastly simplifies writing interactive web applications.
Web Forms are typically files with an .ASPX
extension and
may
contain
HTM
L or XHTML markup, various types of controls (both standard and user
developed), as well as scripting languages. Additionally, .NET languages can be used in ASP.NET pages
including a rich code behind model.

ASP.NET Master Pages (ASP.NET in .NET Framework
2.0)

One of the challenges that has problemed web site developers over the years is how to create
sometimes complex web sites and easily enforce and/or carry standardized look and feel throughout by
applying methods of
inheritance and
reuse. The use of a d
ynamic runtime templating technique was
really not available in ASP.NET prior to the advent of the .NET Framework 2.0 which introduced
ASP.NET
Master Pages
. The use of
Cascading Style Sheets (CSS)

helps somewhat but is not targeted at templating
specifically. CSS is the ability to create symbolic declarations for markup items that can be referenced in
web pages.

The genera
l idea behind CSS (for example) might be to define a special color as “Blue” and reference the
symbolic name throughout a web site. If someone later decides that the shade of Blue should change to
another variation it can simply be changed in the .CSS file

(known as a style sheet) in one place and the
change will cascade through all web pages that reference it symbolically. It’s not unlike declaring global
variables for a program you are writing in an outside file so you can change
it

easily without editing

the
source code all over and recompiling.


13


CSS, however
,

can be a bit more sophisticated than just label matching and symbolic substitution. It
allows for pattern matching defined by sets of rules and even supports the creation of pseudo classes
which enh
ances it power and flexibility.

However, CSS is largely targeted at look and feel of web pages


not the actual structure of such from a
component level view. Consider web pages that contain more complex items such as controls and
frames and navigation bar
s, etc. While CSS can affect the appearance of such, it does not control the
construction of web pages dynamically using predefined pieces and components. Web developers and
programmers have come up with various techniques to aid in this area, such as inhe
ritance and even
simple include files.

ASP.NET Master Pages, however, implements a dynamic templating technology for web designers using
ASP.NET and .NET technologies. In essence, it allows users to create one or more master pagers which
have standardized
content and
may contain
web controls (e.g. the corporate header and logo, a
navigation bar, footer area with copyrights and notices, frames, etc.), and then declare one or more
content place holders on the page. Content place holders can then be filled in
later (you can even nest
master pages or include other entire ASP.NET pages) and all of this is merged at runtime and presented
to the browser requesting such as a single unified page.

Master pages thus present an excellent opportunity to de
s
ign web sites

and reuse components and
enforce standards. CSS can still be used in Master Page drive
n

sites as well. Master Page technology is
heavily in use in Microsoft’s highly successful SharePoint products for example.

Use of Master Pages is excellent for new sit
es being developed, but may create a great deal of work and
even redesign effort on existing ASP.NET application Web Sites and its usage should thus be weighed
carefully.

AJAX

Asynchrono
us Java Script and XML (Ajax)

is a set of facilities and techniques for creating better
interactive web applications.
ASP.NET AJAX application services are included in the Microsoft ASP.NET
2.0 AJAX Extensions

add
-
on and later built into
.Net

Framework 3.
5.

The general idea in Ajax is to cut down on the number of web page loads and posts back to a web server
and instead make use of asynchronous calls to the web server which return much smaller amounts of
data (not the whole page posted back) and which can
execute while other things are going on. For
example, if a user is typing his user id into a textbox, using Ajax, an application can make requests to the
web server as he/she types each character to bring a set of potentially matching user id’s back for
va
lidation. Or someone selecting a specific state from a drop down list could cause the application via
Ajax to download and to auto populate a control with all the counties in that state. Use of Ajax can
greatly cut down on web traffic as well as greatly en
hance the user experience.


14


(
Not

meant as a
plug

) Microsoft actually is credited with starting the Ajax concept with its foray into
remote scripting in the late 1990’s. Today in the Microsoft .NET world,
Ajax is implemented in ASP.NET
.
The main website for Microsoft Ajax can be found
here
.

There are some great examples on
Scott Guthrie’s blog as well
.

Web Client Software Factory

Microsoft have released out of its Patterns and Practices area, a new
Web Clien
t Software Factory

which
contains both code and guidance to assist enterprise customers in building enterprise
Web client
applications

properly.

Support has recently been added for
Mo
del
-
View
-
Presenter

(MVP) patterns.

ASP.NET 3.5 Extensions Preview

ASP.NET continues its evolution in the .NET Framework with some extensions
to ASP.NET being
developed on top of the .NET Framework version 3.5. These are being called the “
ASP.NET 3.5
Extensions
” currently and a preview version has been made available. There are described as:

The ASP.NET 3.5 Extensions Preview is a preview of new functionality being added to ASP.NET
3.5 and ADO.NET. T
he release includes ASP.NET MVC, ASP.NET Dynamic Data,
and ASP.NET

controls for Silverlight, ADO.NET Data Services, Entity Framework runtime, and new features for
ASP.NET AJAX.


Both ASP.NET MVC and ASP.NET controls for Silverlight have been updated since
this release.
The latest versions can be accessed at:

http://go.microsoft.com/fwlink/?LinkID=111960
.

These include
ASP.N
ET controls for Silverlight
,
ASP.NET MVC
,
ASP.NET Dynamic Data
,
ADO.NET Entity
Framework
,
ADO.NET Data Services
, and
ASP.NET AJAX
.

Windows Presentation Foundation
-

WPF (.NET Framework 3.0)

While Windows Forms was the original GUI platform for desktop applications, it’s above noted lack of an
MVC pattern along with its tight coupling to GUI generated the need for Microsoft to develo
p a next
generation facility which came to be known as
Windows Presentation Foundation or “WPF”
. WPF was
also influenced heavily by needs in Web development and a significant fea
ture is that GUI interfaces
developed in WPF can be hosted on a desktop or in a web browser. WPF also brings into play Microsoft
Direct
-
X graphics capabilities including 2D and 3D along with vector graphics. Because WPF uses a
Canvas approach to lay out sc
reens and pages, issues such a
s

control positioning related to Web page
development go away. This greatly increases the customer experience as well as eases the development
task. WPF was originally codenamed “Avalon”.

WPF typically produces Extensible Appl
ication Markup Language (
XAML
) which is an XML based
language for declaring values and objects used to initialize such and maps them directly to run time

15


objects in the .N
ET CLR. XAML
can

be compiled into a binary form known as
BAML

and placed in an
assembly which improves performance and footprint.

Microsoft’s new Silverlight browser plug
-
in (discus
sed below) is built with and utilizes a rich subset of
WPF with cross platform capability to other browsers and MAC. As a result, Silverlight is actually
becoming a GUI cross platform browser based platform for applications.

While Microsoft will continue
to support Windows Forms for many years to come, the stated direction
for future applications is WPF. Because WPF supports both desktop and web browser along with the fact
it
supports a model view controller approach
.

Silverlight

Microsoft’s
Silverlight

is a web browser plug
-
in (sometimes conceptually compared to Adobe’s Flash
plug
-
in) that provides the capabi
lity to develop
rich
Internet

applications

(e.g. highly graphical and
animated) using .NET languages. Rich Internet applications look like and function like Desktop GUI
applications fo
r example. An excellent example of a Silverlight application can be seen via the
British
Library

which has taken some of the world’s oldest and most classic books and converted them

into
digital representations for the world to view.

Silverlight is very early in its life. Microsoft very recently released a
beta of version 2 of Silverlight
. W
hile
version 1.0 provided for the usage of rich media types like video and vector graphics, version 2

bring
s

interactive capabilities, as well as the ability to write Silverlight applications in .NET languages like C#
and VB.NET, along with development too
ls for Silverlight integrated into Visual Studio 2008.

Silverlight 2
is targeted heavily at the
creation of Rich Internet Applications
.

Microsoft
in March
of 2008

claimed at the MIX 08 conference that there are 1.5+ million installs of
Silverlight daily, which if true indicates rapid adoption.

In addition to development support in Visual Studio 2008, Microsoft has released
Expression Blend

which is a design tool targeted at develop
ing

WPF and
Silverlight GUI interfaces

described in more detail
below)
. While the Visual Studio 2008 tools support developers more or less, Express
ion Blend is for
designers as well as developers who wish to create rich
WPF and

Silverlight applications.

Silverlight is actually compatible with a number of Browsers on both Windows and Mac OS X and a 3
rd

party implementation named “Moonlight” is under
development for Linux. Because i
t

supports a rich
subset of WPF
as well as being cross browser and cross platform capable, it is envisioned to become an
extremely popular GUI platform.

In fact, the codename for Silverlight was “Windows Presentation
Foundat
ion/Everywhere or WPF/E.

Missing from the table below which documents the history of .NET Framework releases and major
service packs, is “Silverlight”. The reason for this is that Silverlight
2.0
carries along with its installer a
very specialized and
slim
med

down version of the .NET framework specific to it which is targeted at
cross platform compatibility. Silverlight is built on top of .NET and WPF, but uses a subset of
each
.

16


Because it is targeted as a browser plug
-
in, it is thus self contained includin
g the .NET framework pieces
it needs so no regular .NET framework is required to be installed on the local client to actually execute
Silverlight itself, once the Silverlight plug
-
in has been installed.

There were
several significant
announcements

(some

involving Silverlight
)

at the MIX 2008 Conference
in Las Vegas, and there is a description and opinion of some of the key happenings i
n
Rockford Lhotka’a
blog
.

A recently release
d

application using Silverlight that is fairly impressive is the
Hard Rock Café’s
memorabilia co
llection on
-
line
. You can zoom in to see great detail and move the images around. You
will be prompted to install Silverlight 2.0 Beta if go here and have not previously.
Additionally,
NBC
Sports announced that they have chosen Silverlight to create the first truly digital Olympics
.

There is a
video of one of the MIX 2008 Silverlight entitled “
Working with Data a
nd Web Services in
Microsoft Silverlight 2
” given by Eugene Osovetsky that discusses various approaches for using data
along with accessing Web Services from Silverlight 2.0.

Communications (Distributed)

Technologies

Microsoft .NET is very rich in communi
cations technologies used as building blocks for
distributed
applications development
.
These include web service creation, remote procedure calls and messaging
technologies.
Additio
nally, there are low level technologies such a
s

TCP/IP
, various network messaging
protocols, etc. available in .NET classes. You may in effect hook into well known pipelines (e.g. Web
Services) or build your own custom communications mechanisms using .NET.

.NET encompasses many well know communications technologies that have been in use in the industry
for years including
TCP/IP

classes,
Named Pipes
,
MSMQ

(it is also possible to
interface with
IBM’s
MQSERIES from .NET Applications
), etc. There i
s even an
IBM MQSERIES to MSMQ
Bridge

available.

Additionally, give
n

the rich model for Interop (managed code .
NET applications

calling unmanaged code
non
-
.NET applications), it is

possible to write .NET applications that call
older
and/or even lower level
communications technologies
.

Web Services

Web Se
rvices

(sometimes referred to as “
XML Web Services
”)
is a generic term for an application
typically hosted on a Web Server that can be called remotely (effectively a Remote Procedure Call across
the In
ternet) from another application to perform some service and typically return some result(s). .NET
provides multiple ways to create web services.

ASP.NET Web Services

are typically reco
gnized as web
links

with a file extension of .ASMX.

You can think of a Web Service as a program that can be called remotely across the internet (or intranet,
or even on the same computer). Parameters may be passed and data returned. Classic web services
u
tilize a protocol known as
SOAP

and a discovery technology known as
Web Services Description

17


Language

(WSDL) is utilized to i
dentify and describe what services are exposed by the web service, along
with what parameters are expected and what data is returned.

A discovery service such as
Universal Description, Discovery and Integra
tion

(
UDDI
)

is
utilized kind of like
a phone book for applications to look up and find web services if they do not know where they reside.

Microsoft’s
Web Services Enhancements

(WSE)

which are in use
at
many customers
, add in some
significant improvements/capabilities for Web Services being developing in .NET, including the ability to
send attachments, messaging reliability and security enhancements.

Additionally, in the .NET realm,
unmanaged code can be leveraged using Interop (e.g. Platform
Invocation Services


PInvoke) in creating
W
eb
S
ervices. This opens up the ability to take reliable back
end code written in
an unmanaged

language such as C++ and expose the functionality via a
W
eb
S
ervice.
These components can then be used typically as a common code stream for both Web enabled and
desktop enabled applications.

This area may be of key interest because one possible long term approach for
many legacy applications

might be to re
-
fac
tor
them

into a set of related backend
W
eb
S
ervices and to place a new Web front end
on top to provide an Internet version, while creating a GUI Desktop front end that calls the backend
W
eb
S
ervices as well for an even better user experience.

Web Services

are often considered to be a critical component of a
Service Oriented Architecture

(SOA)
strategy. One of the key values of using
Web Services

comes from the ability to create ind
ependently
operational building blocks that expose business functions in a manner that supersedes specific
programming languages or application platforms and make them available to be consumed by any
number of applications that may be given access to such.

There are lots of examples of
creating web
services in .NET
, but it’s important to note that Web Services can
b
e created in other languages on other
platforms such as JAVA
(
for ex
ample),

and more importantly


that
applications written in any of these
languages hosted on any of these platforms can typically consume (call) Web Services on any other
platform

they have access to
.

COM+ (Enterprise Services)

.NET was seen as a replacem
ent or evolution past Microsoft’s earlier
Component Object Model

(COM)
and later
COM+

(distributed transactions

usi
ng COM
) technologies although .NET can interact with both.
Enterprise Services is the terminology given to the COM+ distributed transaction technology available in
.NET which can be found in the .NET
System.EnterpriseServices class
.




18


.NET Remoting


.NET

provides a facility for .NET to .NET program calls across the Internet
(or even on the same
machine)
known as
.NET Remoting

which is in use today in some Web Applications.
It effectively
exposes remote objects across a network (including Internet)
and
allows for remote procedure calls with
a very high degree of
coupling


in fact making a remote object l
ook like an instantiation of a local object
to the requesting application.
.NET Remoting was actually considered by some to be a replacement for a
COM+

approach as it solves some of the issues in C
OM+.

Windows Communications Foundation


WCF (.NET Framework 3.0)

Microsoft’s enterprise
.NET
application communications

technology is known as
Windows
Communications Foundation or “WCF”
.
WCF actually unifies a number of Microsoft communications
technologies and techniques for applications including web services, remoting, messaging and
distributed transactions with a strong emphasis on providing a master
interface

for inter
-
process
commu
nications across a number of platforms and protocols.
Service Oriented Architectures (SOA)

typically leverage Web services heavily in their implementation and WCF provides a platfo
rm for SOA as
well.

WCF provides the foundation for building highly reliable, transaction oriented cross platform
applications. It encompasses a
remarkable number of features

under a c
ommon framework.

LINQ

Microsoft LINQ

is a set of extensions to the .NET Framework and languages that creates an SQL like
querying capability built into the language. These querie
s can be used against relational data objects,
certain .NET Objects (e.g. enumerable classes, arrays, certain collections, XML and even databases.

The following description is from an
e
xcellent whitepaper written by Elisa Flasko Johnson

of Microsoft:

LINQ to Relational Data

Mi crosoft Language Integrated Query (LINQ) offers devel opers a new way to query data usi ng strongl y
-
typed queri es and strongl y
-
typed resul ts, common across a numbe
r of di sparate data types i ncl udi ng
rel ati onal databases, .NET objects, and XML. By usi ng strongl y
-
typed queri es and resul ts, LINQ i mproves
devel oper producti vi ty wi th the benefi ts of Intel l i Sense and compi l e
-
ti me error checki ng.




LINQ to SQL, released w
ith the Visual Studio 2008, is designed to provide strongly
-
typed LINQ access for
rapidly developed applications across the Microsoft SQL Server family of databases.


LINQ to Entities, to be released in an update to Visual Studio 2008 in the first half of
2008, is designed to
provide strongly
-
typed LINQ access for applications requiring a more flexible Object Relational
mapping, across Microsoft SQL Server and third
-
party databases.





19



LINQ to SQL

LINQ to SQL is an object
-
relational mapping (ORM) framework

that allows the direct 1
-
1
mapping of a Microsoft SQL Server database to .NET classes, and query of the resulting objects
using LINQ. More specifically, LINQ to SQL has been developed to target a rapid development
scenario against Microsoft SQL Server whe
re the database closely resembles the application
object model and the primary concern is increased developer productivity.


LINQ to SQL has been architected with simplicity and developer productivity in mind. APIs have
been designed to “just work” for co
mmon application scenarios. Examples of this design include
the ability to replace unfriendly database naming conventions with friendly names, to map SQL
schema objects directly to classes in the application, to implicitly load data that has been
requested

but has not previously been loaded into memory, and the use of common naming
conventions and partial methods to provide custom business or update logic.


Beyond the simplicity of the query experience, LINQ to SQL offers additional features to improve
the

developer experience with regards to application logic. Partial methods, a new language
feature of C# and VB in Visual Studio 2008, allow one part of a partial class to define and call
methods which are invoked, if implemented in another part of the class
. If the method has not
been implemented; the entire method call is optimized away during compilation. By using
common naming conventions in conjunction with these new partial methods and partial classes,
introduced in Visual Studio 2005, LINQ to SQL allow
s application developers to provide custom
business logic when using generated code. Using partial classes allows developers the flexibility
to add methods, non
-
persistent members, etc., to the generated LINQ to SQL object classes.
These partial methods ca
n add logic for insert, update, and delete by simply implementing the
associated partial method. Similarly, developers can use the same concepts to implement partial
methods that hook up eventing in the most common scenarios.


As with any application frame
work, developers must also have the ability to optimize the
solution to best fit their scenario. LINQ to SQL offers a number of opportunities to optimize,
including using load options to control database trips and compiled queries to amortize the
overhead
inherent in SQL generation. By default, LINQ to SQL enables Object Tracking, which
controls the automatic change tracking and identity management of objects retrieved from the
database. In some scenarios, specifically where you are accessing the data in a
read
-
only
manner, you may wish to disable Object Tracking as a performance optimization. Developers
who are concerned about query performance can leverage the compiled queries capabilities
which offer an opportunity to optimize query performance. In many a
pplications you might have
code that repeatedly executes the same query, possibly with different argument values. By
default, LINQ to SQL parses the language expression each time to build the corresponding SQL
statement, regardless of whether that expressi
on has been seen previously.



20


The primary scenario for using LINQ to SQL is when building applications with a rapid
development cycle and a simple one
-
to
-
one object to relational mapping against the Microsoft
SQL Server family of databases. In other words,

when building an application whose object
model is structured very similarly to the existing database structure, or when a database for the
application does not yet exist and there is no predisposition against creating a database schema
that mirrors the o
bject model; you can use LINQ to SQL to map a subset of tables directly to
classes, with the required columns from each table represented as properties on the
corresponding class. Usually in these scenarios, the database has not and/or will not be heavily
normalized.



I Want To…

LINQ to SQL is
Applicable

Use an ORM solution and my database is 1:1 with my object
model



Use an ORM solution with inheritance hierarchies that are
stored in a single table



Use my own plain CLR classes instead of using generated
classes or deriving from a base class or implementing an
interface



Leverage LINQ as the way I write queries



Use an ORM but I want som
ething that is very performant
and where I can optimize performance through stored
procedures and compiled queries




LINQ to Entities and the Entity Framework

LINQ to Entities, like LINQ to SQL is a LINQ implementation provid
ing access to relational data,
but with some key differences.


LINQ to Entities is, specifically, a part of the ADO.NET Entity Framework which allows LINQ query
capabilities. The Entity Framework is the evolution of ADO.NET that allows developers to
progr
am in terms of the standard ADO.NET abstraction or in terms of persistent objects (ORM)
and is built upon the standard ADO.NET Provider model which allows access to third party
databases. The Entity Framework introduces a new set of services around the Ent
ity Data Model
(EDM) (a medium for defining domain models for an application). This set of services includes
the following:




Domain Modeling


Capabilities and the ability to define conceptual, data store agnostic
models



Object Relational Mapping Capabiliti
es (full CRUD and state management scenarios)


21




Database independent Query Capabilities using LINQ or Entity SQL


More than a simple Object Relational Mapping (ORM) tool, the ADO.NET Entity Framework and
LINQ to Entities allow developers to work against a co
nceptual model with a very flexible
mapping and the ability to accommodate a high degree of divergence from the underlying data
store. For further discussion of the Entity Framework and EDM, please see the
Data Platform
Development Center

(
http://msdn.microsoft.com/data
).


Microsoft designed the ADO.NET Entity Framework, and in turn LINQ to Entities, to enable
flexible and more complex mapping
s, ideal in the scenario where it is not possible or ideal for
the object model to match the database schema. The mapping flexibility available with the
ADO.NET Entity Framework allows the database and application(s) to evolve separately and
makes developm
ent against highly normalized databases simpler and easier to understand.
When a change is made in the database schema, the application is insulated from the change by
the Entity Framework, and there is no requirement to rewrite portions of the application
, but
rather the mapping files can simply be updated to accommodate the database change.

Similar to LINQ to SQL, LINQ to Entities uses partial classes and partial methods to allow update
and business logic to be easily added to generated code. Using partia
l classes and partial
methods allows developers the flexibility to add methods, non
-
persistent members, etc., to the
generated Entity Framework object classes, and for the addition of custom logic for insert,
update, and delete by simply implementing the a
ssociated partial method. Similarly, developers
can use the same concepts to implement partial methods that hook up eventing in the most
common scenarios.

Like LINQ to SQL, LINQ to Entities enables Object Tracking by default. In some scenarios,
specificall
y where you are accessing the data in a read
-
only manner, you may wish to disable
Object Tracking as a performance optimization.


LINQ to Entities also provides the ability to expose stored procedures as strongly typed methods
on the generated ObjectConte
xt, and map inserts, updates, and deletes to stored procedures if
you choose not to use dynamic SQL.


The primary scenario targeted by LINQ to Entities is a flexible and more complex mapping
scenario, often seen in the enterprise, where the application is
accessing data stored in
Microsoft SQL Server or other
-
third party databases. In other words, the database in these
scenarios contains a physical data structure that could be significantly different from what you
expect your object model to look like. Ofte
n in these scenarios, the database is not owned or
controlled by the application developer(s), but rather owned by a DBA or other third party,
possibly preventing application developers from making any changes to the database and
requiring them to adapt qu
ickly to database changes that they may not have been aware of.


22



I Want To…

LINQ to SQL is
Applicable

Write applications that can target different database engines
in addition to Microsoft SQL Server



Define domain models fo
r my application and use these as
the basis for my persistence layer.



Use an ORM solution where my classes may be 1:1 with the
database or may have a very different structure from the
database schema



Use an ORM solution with inheritance hierarchies that may
have alternative storage schemes (single table for the
hierarchy, single table for each class, single table for all data
related to specific type)



Leverage LINQ
as the way I write queries and have the query
work in a database vendor agnostic manner.



Use an ORM but I want something that is very performant
and where I can optimize performance through stored
procedures and compiled quer
ies



Data Related Technologies

The .NET Framework provides a number of
data related technologies
. The
s
e range from simple text and
binary file access all the

way up to enterprise database access
with

transactional integrity.

Simple File and Stream I/O

In the .NET Framework
System.IO namespace
, there are several specialized file I/O class
es including
both binary
readers

and
writers
, text
readers

and
writers
, string
readers

and
writers
, stream
readers

and
writers
, and
isolated storage classes
. Along with these classes, there are a wealth of other classes to
support data operations incl
uding
buffering
,
compression
, and
encryption
.

XML File I/O

and Support

In the .NET Framework
System.XML namespace
, there are a wealth of classes to assist in dealing with
XML files


bot
h text and binary. These not only include readers and writers, but a large number of other
XML related classes too numerous to mention specifically here (see above link).
XML files are also often
referred to as “XML documents”.
A single XML class such as t
he XML.Document class may expose
tremendous amounts of functionality such as a complete set of
methods to work with an XML
document
.

Given the importan
ce

of XML
in today’s programming world, there are actually a number of other .NET
Framework namespaces dedicated to XML functionality including
System.XML.Linq
,

23


System.XML.Schema
,
System.XML.Serialization
, and several others. The
System.XML.XPath

namespace
provides
XQuery

and
XPath
implementations which allow for SQL like
queries
and custom me
thods for
selecting and updating information in an XML file.

LINQ to XML

LINQ to XML

is creating a great deal of excitement as well, and provides extremely powerful cap
abilities
to interact with XML.

ADO.NET

ADO.NET

is the .NET Framework’s main set of data access components targeted largely at relational
database access

(including support for
OLE/DB

and
ODBC
)
,
while

also supporting a number of non
-
relational data stores including XML
.
ADO
.NET is a key technology in the .NET Framework
.

ADO.NET
classes are found in the .NET Framework
System.Data

namespace.

ADO.NET supports a number of “Data Providers” which provide c
onnections and associated services to
interact with
various
relational databases and other data stores that can be made to appear logically as
relational data stores (e.g
. accessing an Excel Spreadsheet
). Microsoft itself provides a number of
ADO.
NET data providers including SQ
L Server, Oracle and
OLE/DB and ODBC. There is a
large 3
rd

party
marketplace

in existence today providing a number of additional (and
sometimes
competing) ADO.NET
data providers. This includes companies like IBM with
a .NET provider for
DB/2 UDB.

ADO.NET allows for data providers that cross machines and even platforms

transparently to .NET
applications. Programmers can develop Windows applications that interact with DB/2 on an IBM
mainframe transparently using technologies like Microsoft
Host Integration Server

(HIS).

A second key component of ADO.NET technology
is the ADO.NET
DataSet class

-

an instance of which is
a memory resident cache of the d
ata
in relational format
provided by a data provider. This allows for a
disconnected representation of the data which can then be accessed by a program requesting such. The
DataSet object will typically contain 1 or more
Table objects

(it may contain 0 by the way) which
themselves contain the actual data returned and collections of related information. These are accessed
programmatically to manipulate data (
including

the

ability to create

table objects and data
)
.

Data provided by interacting with ADO.NET data providers may be accessed directly or placed in an
ADO.NET DataSet
. Data stores c
an typically be interacted with using the SQL language and/or a set of
predefined methods and properties. .NET Data Providers typically implement a
DataAdap
ter class

which
serves as a bridge between the data provider and the DataSet.

Using LINQ within ADO.NET

LINQ to SQL

is an exciting new technology that offers the promise of abstractin
g relational data into
more intuitive objects allowing programmers to deal with such and to forget
about

the intricacies of
relational database programming. This effectively provides a
more native programming language syntax

24


and object oriented approach

to working with relational databases. This technique is known generically
as “
Object Relat
ional Mapping
” or ORM.

ADO.NET Entity Framework

Most recently, Microsoft has released a new feature known as the
ADO.NET Entity Framework

which
abstracts the logical relational s
chema of a data base or tables into a conceptual schema which matches
an Object Oriented approach (e.g. presents a set of methods and properties related to the database or
tables).

The above description probably sounds remarkably similar to the topic “Usi
ng LINQ within ADO.NET”
and this is true. However, you can think of “LINQ to SQL” as the entry level ORM technology, while the
Entity Framework provides
more sophisticated

features

(e.g. many to many mapping, more power
inheritance mapping, etc.).

Microsoft Sync Framework

The
Microsoft Sync Framework

is a new product currently released in its
second Community Technology
Preview (CTP)
. It is described as:

Microsoft Sync Framework is a comprehensive synchronization platform that ena
bles
collaboration and offline scenarios for applications, services and devices. Developers can build
sync ecosystems that integrate any application, any type of data, using any protocol over any
network.


The Microsoft Sync Framework provides a platform f
or taking web services and databases
offline. In addition, it provides optimized P2P sync of any type of file including contacts, music,
videos, images and settings. The extensible framework includes built
-
in support for
synchronizing relational databases,

NTFS/FAT file systems, FeedSync compliant feeds (formerly
known as Simple Sharing Extensions), devices and web services.


Sync Framework Highlights



Add sync support to new and existing applications, services, and devices



Enable collaboration and offline
capabilities for any application



Roam and share information from any data store, over any protocol, and over any
network configuration



Leverage sync capabilities exposed in Microsoft technologies to create sync
ecosystems



Extend the architecture to suppo
rt custom data types including files

The Sync Framework has a strong focus on supporting
Occasionally Connected Applications

(OCA’s) by
providing facilities to automatically upload/downlo
ad data and keep it in sync with centralized data
stores. The Microsoft Sync Framework Developer Center can be found
here
.

SQL Server


25


Although not specifically part of the .NET Framework,
Microsoft SQL Server

is the primary choice for
relational database storage on Windows platforms and thus is highly utilized by many .NET applications.
There are various editions of SQL Server avail
able for a number of different needs. These include
Enterprise Edition, Standard Edition, Workgroup Edition, Express Edition, and Compact Edition. A feature
comparison is available
here

but does not include
Compact Edition
.


Mobile Device and Desktop applications are typically built on and deployed with either SQL Server CE or
SQL Server Express depending on needs. The main reason for selection of SQL Server CE or SQL Serv
er
Express is the fact that they are free and may be deployed without charge to any number of desktops
(or mobile devices for SQL Server CE). SQL Server Express is a surprisingly high powered relational
database system and contains a significant amount of
the functionality of the higher level chargeable
products.


SQL Server Compact Edition

is described as:

SQL Server Compact is a
free
, easy
-
to
-
use embedded database engine that let
s developers build
robust Windows Desktop and mobile applications that run on all Windows platforms including
Windows XP, Vista, Pocket PC, and Smartphone.


SQL Server Express Edit
ion

is a highly functional
free

version of SQL Server.
It is the replacement for the
older Microsoft SQL Server Desktop Engine (MSDE).
It is described as:

SQL Server 2005 Express Edition is the next version of MSDE and is a free, easy
-
to
-
use,
lightweight,

and embeddable version of SQL Server 2005.


SQL Server Workgroup Edition

requires a purchase and is described as:

Workgroup Edition is the data management solution for small org
anizations that need a
database with no limits on size or number of users. Workgroup Edition can serve as a front
-
end
Web server or for departmental or branch office operations. It includes the core database
features of the SQL Server product line and is e
asy to upgrade to Standard or Enterprise Edition.

SQL Server Standard Edition

requires a purchase and is described as:

Standard Edition is the data management and analysis platfor
m for small and medium
-
sized
organizations. It includes the essential functionality needed for e
-
commerce, data warehousing,
and line
-
of
-
business solutions. Standard Edition's integrated business intelligence and high
-
availability features provide organiza
tions with the essential capabilities needed to support their
operations.

SQL Server Enterprise Edition

requires a purchase and is described as:


26


SQL Server 2005 Enterprise Editi
on is a comprehensive data platform that meets the high
demands of enterprise online transaction processing and data warehousing applications.

.NET Development Tools

Visual Studio

The key technology utilized by developers to write .NET applications is
Microsoft’s Visual Studio
. This is
Microsoft’s
flagship integrated development environment

(IDE). It provides the ability to w
rite
applications for various scenarios (e.g. Web, Desktop, Mobile Devices and Phones, Micro Devices) using
a common set of tools and technologies.
Visual Studio and .NET Development are backed up by a
number of
Web sites (both Microsoft sponsored and non
-
Microsoft sponsored giving developers
massive amounts of information, guidance and sample code at their fingertips.

Visual Studio comes packaged in various editions depending on the needs and target skills of the user
(e.g. Standard Edition, Professional
Edition, Team Suite and Team editions
-

Architect, Developer,
Database Administrator, and Tester).

Visual Studio has an extremely flexible and open design which allows other language vendors to plug
their managed code comp
ilers into it and make use of t
he

environment. For example, I’ve seen two
separate COBOL compilers and one RPG compiler working in Visual Studio. This means that developers
utilize a common editor, debugger and project manager.

The WinForms and WebForms painters can
also be used with thes
e other languages. This becomes a gentle path to bring developers into Windows
and .NET for the first time
as well.

A comparison of the Standard Edition vs. Professional Edition which
is

targeted at individual developers
who do not work on large teams tog
ether can be found
here
. The
Visual Studio Team System

(VSTS) is
the “everything plus the kitch
en sink” version of Visual Studio


targeted at IT professional developers
working in team environment
s
. It includes all 4 individual
Visual Studio T
eam
S
uite editions


Architecture, Development, Database, and Test. A comparison of these 4 individual edit
ions can be
found
here
.

At the high end, Visual Studio Team System (VSTS) supplies tools for

IT professionals to architect, design,
create, develop, and test numerous differ
ent types of applications. These features are too numerous to
discuss herein. It is recommended if you would like more detail to check out the
Visual Studio Team
System home pa
ge
.



Team Foundation Server (TFS)


27


Microsoft
Team Foundation Server

(TFS) is Microsoft’s enterprise level team development support
facility. It provides facilities to safely store
and t
rack
program source code,
along with
a number of
related pieces such as project and resource files with sophisticated branching and version tracking. TFS
integrates in with Visual Studio Team System. This allows development teams to seamlessly collaborate
using TFS facilities such as
library check in and checkout,
task assignment, bug tracking, code coverage
metrics and reporting, tracking of unit tests, etc.

TFS’ latest release added in
Co
ntinuous Integration

capabilities as well which allows for automatic builds
and testing when application components are checked in


with automated reporting and alerts. More
information can be found at the
Team Foundation Server Team Center
.

.NET Designer Tools

A new generation of tools targeted not at developers, but rather designers of human interfaces is
beginning to emerge in the .NET world. There is a rather interesting argum
ent presented by many that
developers are sometimes not the best human interface designers while professional designers may not
be the best developers (or developers at all). So the separation of tools between developers and
designers is becoming a natural

division. However, it is important that key components are easily
movable between designers and developers and that each do not make the other’s job difficult.

Expression Studio

Expression Studio

is Microsoft’s new designer suite of tools and contains multiple products for
professional designers and graphic/media artists.

Expression Blend

Expression Blend

is

Microsoft’s new GUI design tool for WPF (desktop) and Silverlight (Rich Internet)
applications. It’s noteworthy that Expression blend itself is a .NET application written using WPF.

Expression Blend creates XAML based graphica
l interfaces, and supports a wide range of
features

including collaborative team base development, support for a full spectrum of media types and the
ability to add and m
anipulate interactive controls without writing code.

Expression Web

Expression Web

is Microsoft’s new Web site development tool for web designers. It provides facilities
f
or dealing tightly with data, including XML and is ASP.NET capable including generation of HTML and
XHTML.



Expression Design


28


Expression Design

is Microsoft’s new illu
stration and graphical design tool. It can be used to build
compelling elements that can be used in Web pages or in desktop GUI’s.

Expression Media

Expression Media

is Mi
crosoft’s new tool to manage media related assets. It visually catalogs and
organizes over 100 media types for easy management of such. It also allows you to create powerful slide
shows incorporating this media.

Expression Encoder

Expression Encoder
, a feature of Expression Media, offers encoding, enhancement, and publishing of
rich media experiences to Microsoft Silverlight.

SharePoint Designer

SharePoint Designer

is Microsoft’s replace for FrontPage


one of the Web site designer tools in
existence for the Windows platform. While it is tied to Microsoft’s SharePoint application p
latform, it is
rich in functionality and users can create web pages using Master Web pages,
CSS,
Workflows, and
allows for the creation of a number of different types of automated processes.

Other Significant .NET
Related
Technologies

There are a number
of significant Microsoft technologies either embedded in the .NET Framework or
highly utilized by such. This paper cannot even begin to document all of the technologies in the .NET
Framework


in fact, with everything discussed
herein;

we have touched on a

small fraction of the
overall features in .NET.
The intent
here is

to try to document the more commonly referenced features
that
IT professionals

need to be aware of to make decisions and understand how to architect solutions
using .NET.

Internet Informat
ion Services (IIS)

Internet Information Services

(formally known as Internet Information Server) is a set of services
available for Microsoft Windows operating systems that provide internet based funct
ionality. In
essence, IIS is viewed as a
Web Server

by many, but it contains significant unique capabilities as well.

IIS comes with Windows XP, Windows Vista, Windows Server 2003 and Windows Server
2008 for free. It
is an optional component install by the way. One of the primary features of IIS is its tight integration
with and ability to execute ASP.NET applications.

Windows XP comes with version 5.1 of IIS. It is not capable of running newer versi
ons.

Windows Vista comes with version 6.x of IIS.

Windows 2003 comes with version 6.x of IIS.

Windows 2008 comes with version 7.x of IIS.


29


There is a good article describing the feature differences between versions 5.1 and 6.x
here
.
IIS 7 is new
with Microsoft Windows 2008 and information regarding it can be found
here
.

BizTalk

Microsoft BizTalk

Server

is not part of the .NET Framework, but is a technology for which development is
done in .NET using Visual Studio. BizTalk is a
business process management

server. BizTalk is

described
as:

With the introduction of the fifth full version, BizTalk Server 2006 R2 builds upon the Business
Process Management and SOA/ESB capabilities in prior releases to help organizations extend
core process management technologies even further wit
h new capabilities like native support
for Electronic Data Interchange (EDI), AS2 and RFID and close alignment with the releases of
2007 Microsoft Office system and Windows Vista, including key .NET Framework technologies
such as Windows Workflow Foundatio
n and Windows Communication Foundation.

BizTalk contains a workflow engine which allows for the development of high level business process
flows.
More information regarding BizTalk can be found
here
.

SharePoint
Services
and Microsoft Office SharePoint Server (MOSS)

Microsoft SharePoint

is a multi
-
functional web based collaboration and document man
agement
platform. It is quickly becoming its
own application platform
.
Development for SharePoint is done using
.NET and Visual Studio.
SharePoin
t contains capabilities to manage lists of information

and

documents,
along with its ability to create and automatically deploy and provision web sites from templates. It also
utilizes

ASP.NET master pages and
web parts

along with containing a workflow engine and the ability to
plug in custom written code (known as “Features”).

O
ne of the beauties of SharePoint is that is creates
W
eb sites and Portals that are ASP.NET web
applications,

which makes it very open, scalable and highly reliable. MOSS adds in
Enterprise Search

and
the
Business Data Catalog

(BDC) that provides the ability to connect to Line of Business Applications
including Oracle and SAP (for example) and to develop custom providers to other complex data sources
as well
.

There are two different flavors of SharePoint


SharePoint Services

which are available
for

Windows
Server 2003 at no additional charge and
Microsoft Office SharePoint Server

(MOSS) which requires
purchase. MOSS sits on top of SharePoint Services.
Microsoft SharePoint is currently Microsoft’s fastest
growing product. MOSS is the first product to surp
ass $1 billion in sales so early in its lifecycle and is
rapidly being adopted by a number of large corporations around the world.


Windows Workflow Foundation


WF (.NET Framework 3.0)


30


Windows Workflow Foundation

is the .NET technology for creating, executing and managing workflows
in the .NET
environment.
It consists of .NET Classes, an in
-
process workflow engine and tools for Visual
Studio 2005 and 2008 for developing and testi
ng workflows.
Workflow Foundation is available for both
client and server versions of Windows.

Windows Workflow Foundation includes support for both system workflow and human workflow across
a wide range of scenarios including: workflow within line of bus
iness applications, user interface page
-
flow, document
-
centric workflow, human workflow, composite workflow for service oriented
applications, business rule driven workflow and workflow for systems management.

(
more
)

Like WPF, WF produces Extensible Application Markup Language (
XAML
) which is an XML based
language for declaring values and objects u
sed to initialize such and map them directly to run time
objects in the .NET CLR. Additionally, WF workflows may be created using .NET programming languages
such as C# and VB.NET with tools in Visual Studio to assist such.

Microsoft’s highly successful Sha
rePoint product ships with WF as the default workflow engine, although
other workflow engines can be plugged into SharePoint. However, one of the
current

complaints
regarding Microsoft making
WF

the preferred Workflow engine in .NET relates to the BizTalk
product.
Because BizTalk has been in the marketplace for several years, it already had its own workflow engine
and as I understand the current
BizTalk

2006 product does not utilize the newer .NET WF. It appears that
the next major release of BizTalk will e
ncompass the WF engine. In the meantime, there is a good article
explaining the issues and offering guidance regarding such
here
.

CardSpace (.NET Framework 3.0)

CardSpace is Microsoft’s
new
approach to identity management and protection. The general idea is to
store information about users into personal digitized cards. Users can create different versions of their
identities (some with more information than others) and even control what i
nformation is surfaced to
those requesting a digital identity card. It provides technology to prevent intrusion and spoofing.
More
information can be found
here
.

Smart Clients an
d Click Once Deployment

Smart Client applications

attempt to combine the best of the Web and the Desktop worlds. They are
applications distributed through the web that execute on the Desktop machin
e. In doing so, they utilize
local Desktop resources which means they can be fully graphical (not limited to typical browser based
GUI’s) and can often be much higher performing.

There is an excellent
article by David Hill

explaining what a “Smart Client” is and some of the history
behind such, including a link to a video of Windows 2008 vision for Smart Clients down the road.

Because smart client applications execute on the client desktop
PC (although they may call back to web
services for centralized processing and data needs), some footprint is required on the end user PC. In
the Microsoft world, the .NET framework is required to be installed on the PC (which is becoming built

31


into Window
s OS’ as they evolve today, but may require a download for an older Windows OS or for a
very new version of the .NET Framework). The actual custom written .NET application is deployed to the
client machine through a browser and executes locally.

Microsoft

smart client applications leverage the .NET framework which allows them to be small and
compact. “
Click Once
” is a term synonymous with Smart Clients indicating that the user onl
y has to click
once on a link on a web page to have a smart client application downloaded and installed and ready for
execution.

The Microsoft
WindowsClient.Net

site is an excellent resource for more information o
n this topic.

Additionally, Microsoft have created in its Patterns and Practices area, a new
Smart Client Software
Factory

(SCSF) and released code to
CodePlex
. CodePlex is Microsoft’s repository for Open Source
Projects. The
Software Factories

approach is being well received by enterprise customers. SCSF is
described as:

The
Smart Client Software Factory is a guidance offering that provides comprehensive
architecture guidance to help customers build
Composite Smart Clients

using the Microsoft
platform (Win
Forms, WPF, etc). An SCSF solution is composed of a number of discrete,
independent, yet functional assemblies and components. These pieces are dynamically loaded
and integrated together at runtime within a shell to form a fully coherent application.



Figure 3

View of a Composite Smart Client Approach.



32


.NET Community

As this document illustrates
the

Microsoft .NET F
ramework, related technologies and product
families

provide an impressive amount of options for companies to build almost
any type of application

imaginable. That being said
,

the
sheer number

options

and technologies available in .NET may
present a
challen
ge to
developers

trying to design solutions if they are not familiar with such.

Training, books and online help systems such as
the
MSDN Library

do provide a

baseline from which
people

can start to create systems, but in
some cases additional levels of resources available for .NET
development become invaluable.


The following additional community
resources make

it possible for software developers to not only stay
familiar with the optio
ns
available
but also
provide a wealth of valuable resources
.

Community Sites

Microsoft provides a v
ariety

of community sites to help foster
technical

reference material and
community content,
some examples

includes:



ASP.
NET

brings together a large variety of resources for Developers focused on Web
Development using the .NET
Framework. This includes Blog

references, Forums, Training
Resources and Community Content



IIS.NET

brings togeth
er a large variety of resources for IT Pros and Developers focused on the IIS
6.0 and 7.0 hosting platforms. This includes
B
log references, Forums, Training and Community
Content



Channel9

brings together a combina
tion of resources such as
:

o

Video content featuring both training material and Interviews

o

Community discussion areas around Microsoft technologies

o

Various shows featuring topics such as .NET Architecture


Forums

The
MSDN Forum

is
a consolidated website for

discussion on topics such as .NET Development,
Mobile
Device development
, Language specific forums (C#, VB.NET, etc), and products such as Team System
and SQL Server.

This sites stren
gth comes from its more than 1 million users, 500,000+ discussion threads and close to 2
million postings.


33


Source Code

Microsoft recognizes that Source Code sharing and Open Source
developments are

crucial for building
excellent products and communities. T
o cover these areas sites like
CodePlex

for Open Source
development and
Code Gallery

for code sample sharing are dedicated resources to empower our
customers in thes
e areas.

Additionally, Microsoft provides its
Patterns and Practices site

which provides
information and code samples regarding best practices for developing different types of applic
ations.

MVP
’s

and Regional Directors


Empowered Community Leadership

Most developers and architects that have experience un
software development and interacting with
online communities realize that some people give more than others to ensure people find
answers and
get help. Microsoft recognizes these individuals through two programs that provide them not only with
titles but better access to internal product groups and discussions on areas they represent.

The
MVP

(Microsoft Valued Professional) program is one example that provides hundreds of people
focusing on particular technolog
ies

such as ASP.NET, Smart

Clients, WCF/WF,
etc
.

an

opportunity

to be
recognized

as leaders in their respective areas. This ti
tle is gained using a Microsoft internal nomination
process (yearly) that awards those visibly giving their time to help
others
produce good code and
products.

Many MVPs maintain
extremely valuable comm
unity oriented blogs and wikis

that are
sometimes a goldmine of assistance to developers.

Security Focused

At the dawn of the Internet
,

security was not a consideration
as most of the uses for this new
technology revolved around sharing information in as

open of a system as possible. In today’s world of
inter
-
connected corporate systems, banking applications, ecommerce
sites
and hundreds of other
implementations

the landscape

ha
s

drastically changed
. Security threats to electronic systems now
dominate the

me
dia and minds of all IT workers while challenging all product vendors to build
more
secure applications and infrastructure.

Microsoft’s

family of products and technologies has

always had security considerations built
-
in but with
each year
the

commitment

to this critical business area grows ever stronge
r and can easily be
demonstrated by these examples:



The .NET Framework contains hundreds of relatively easy to use techniques and framework
components to help developers build security into their products,
this includes: Encryption
libraries,
declarative and imperative security constraints on code classes and methods, SSL
support at many levels, and more.



WS* standard libraries for Security have been packaged into Web Services Extensions (currently
v3.0) to
increase
the

ability to make easy implementations of these standards possible without
waiting for the longer release cycle of the .NET Framework
.


34




Internal
ly security is now one of the primary focuses on any software development project and
is strongly emph
asized through reviews

and process within
Microsoft’s

product lifecycles
.



Products such as IIS 6.0 and SQL

Server 2005 have had excellent security ratings compared to
competing products
.



Patching sites such as Windows and Office update have made
a
tremendo
us
difference in
deployment ease and patch adoption rate for both average at
-
home customers

and our
corporate clients.
Microsoft

continue
s

to improve and evolve these systems to ensure we can

deliver fixes
quickly and efficiently

.NET Framework Versions an
d Updates

The
Microsoft .NET Framework

was released as version 1.0 in 2002 and a version 1.1 a little over a year
later containing
new fea
tures
.

Version 2.0 was release
d

in 2005. Beginning
with
Version 2.0, a parallel set of .NET frameworks
appeared for 64 bit as well. The version 2.0 .NET Framework was the most substantial evolution,
including a wide array of new features
.

Version 3.0 of the .NET Framework
was released in late 2006 and
included some significant new
Microsoft technologies. The .NET Framework version 3.0 was issued solely to include the following
technol
ogies in the .NET Framework and in the Windows Software Development Kit (SDK):



Windows Communication Foundation




Wi
ndows Presentation Foundation




Windows Workflow Foundation



Using CardSpace in Windows Communication Foundati
on


Version 3.5 of the .NET framework was release
d

in late 2007 and actually contains a
number of
improvements

most notably


support for AJAX.

There is a parallel set of .NET framewo
rk and service packs for .NET CE

as well as for 64 Bit Windows
operating Systems.

Below is a table showing the major versions and release dates for 32 bit Windows:

Version

Version
Number

Release Date

Re
-
Distributable

Size

Major Features


35



1.0

1.0.3705.0

01
-
05
-
2002

19 Meg

1
st

.Net Framework


1.0

Service Pack 1

?

?

Fixes and Performance Enhancements


1.0

Service Pack 2

08
-
07
-
2002

6.4 Meg

Fixes and Performance Enhancements

1.0a

Includes
Service Pack 1
and 2?

04
-
22
-
2003

19.7 Meg



1.0

Service Pack 3

08
-
30
-
2004

9.
6 Meg

Security Issues, Better WDSL, better XP SP2
Support, fixes


1.1

1.1.4322.573

04
-
01
-
2003

23.1 Meg

Better Scalability, Mobile

Device Support, IPv6
support, ODBC for ADO.NET and Oracle, code
access security to enable lockdown of ASP.NET
applications


1.1


Service Pack 1

08
-
30
-
2004

10.2 Meg

Improved Security, fixes

2.0

2.0.50727.42

11
-
07
-
2005

22.4 Meg

Scalability, Performance,
ASP.NET Version 2,
64 bit support, ACL support, COM Interop
enhancements, Data Protection API,
Distributed Computing and SOAP
enhancements, Expanded Certificate
Management, FTP Support, Generics,
Globalization, I/O enhancements,
numerous
other enhancements


2.0

Service Pack 1

11
-
19
-
2007

23.6 Meg

Security a
nd Performance Enhancements, pre
-
requisite support for .NET 3.0 and 3.5 Features


36


3.0

3.0.4506.30

11
-
06
-
2006

2.8 Meg

(Built into V
ista)

Implements New Managed Code programming
model:



Windows Presentation Foundation
(WPF)



Windows Communic
ation
Foundation (WPC)



Windows Workflow Foundation (WF)



Windows Card
S
pace

(formerly
“InfoCard”



3.0

Service Pack 1

11
-
19
-
2007

2.4.Meg

Fixes, Prerequisites for .Net Framework 3.5

Note: This .NET framework set of technologies
w
as originally named “WinFX”

3.5

3.5.21022.8

11
-
19
-
2007

2.7 Meg

New Feature Sets for WorkFlow Foundation,
WCF, WPF and CardSpace,
Deep Integration
for
LINQ
,
AJAX
,
New Web protocol support for
building WCF services including AJAX, JSON,
REST, POX, RSS, ATOM, and sever
al new
WS
-
* standards
, Enhancements to Visual
Studio 2008 for above noted new technologies,
New Base classes that address customer’s
requests


Microsoft

.NET Development Best Practices Resources

A common questi on that comes up from .NET devel opers and ar
chi tects i s “What i s the best practi ce for
doi ng xxxxxx?” where “xxxxxx” mi ght be a number of di fferent technologies and appl i cation types. While
searchi ng the Internet for these types of questions can be qui te enl i ghteni ng, i t i s worth menti oning that
Mi c
rosoft actual l y created the
Mi crosoft Patterns and Practi ces Devel opers Center

whose mi ssion i s to:


Microsoft patterns & practices are Microsoft's recommendations for how to design,
develop,
deploy, and operate architecturally sound applications for the Microsoft application
platform.



37


This facility actually provides not only documentation but actual libraries of code that can be leveraged
by developers to perform certain sometimes co
mplex tasks in a best practices manner. This includes
facilities such as the
Microsoft Enterprise Library

which includes:


This re
lease of Enterprise Library includes: Caching Application Block, Cryptography
Application Block, Data Access Application Block, Exception Handling Application Block,
Logging Application Block, Policy Injection Application Block, Security Application Block
and
Validation Application Block.


There are additionally a number of “software factories” beginning to appear such as the
Web Client
Software Factory

(which provides assistance in t
h
e area of AJAX for example), the
Web Service Software
Factory

for assistance in building enterprise Web Services, and the
Guidance Automation Toolkit
.

Additionally,
there is an excellent free tool on Microsoft’s CodePlex Open Source site named the
Patterns and Practices Guidance Explorer

that provides a w
ealth of information to Architects, Designers
and Developers regarding coding and design best practices complete with samples as shown in Figure 3
below:


38




Figure
4



Patterns and Practices Guidance Explorer.


New York Times Reader
-

A Disconnected/Offli
ne “Killer Application” written
in .NET and WPF

A new generation of applications is beginning to appear that make use of .NET, WPF and WCF as well.
One that has been highly touted as a on the Internet “
killer application
” is the New York Times Reader
Client which is written entirely in .NET and makes extensive use of WPF (I’m trying to determine if it is
using WCF as well, but have received no acknowledgement as of yet). This

application was selected as
one of PC World’s top 25 applications of 2007.

I downloaded this last Friday and paid the $14.95 registration fee to begin using it so I could try it out.
It’s really good. You can supposedly download
it and try it for free fo
r some period of time as well
.
The
download location is

here
.


39


This application effectively provides a really pleasing reader experience for New York Times content.
When connected to the Inter
net, it automatically syncs information using RSS feeds, and when offline,
the New York Times newspaper as it existed at last sync time is available to read. It also automatically
archives previous content so you can step back to previous day’s stories.

W
hile this is a really great application, I must note that it is primarily a read only content delivery
application.
Many applications are

obviously more complex as
they

require user interaction. I thought it
worth mentioning however because it is a really
good small example of the latest .NET technologies in
production usage today to solve a problem.

One of the people evidently involved with the development of the NY Times Reader is Josh Smith who
has a very
good blog on using WPF

for those interested
.

Microsoft has created a
Syndicated Client
Experiences Starter Kit Beta & Reader Beta SDK

to assist customers in building these types of
a
pplications.