ASP.NET Design and Development Best Practices?




Our existing high-traffic internationalized websites were built with
"classic" ASP. We are currently planning to migrate the sites to ASP.NET 2.0
(maybe 3.0?).

Our current "classic" ASP sites use XML/XSL to separate content from design.
This allows our designers to create the layout and look 'n' feel of the
sites without having to deal with data or business logic layers. As such,
what are our options with ASP.NET? We would really like to exploit the power
of ASP.NET's server controls. I've found some info regarding the use of
XML/XSL to generate server controls at runtime here:

However, this results in weak typing and we would have to use
Page.FindControl() when we want to access a server control. This would be
undesirable. Are there any other options?

Are there documented best practices available with regards to developing an
ASP.NET web site that has separate teams working on UI, business logic, and
data access? How could our UI team design the site such that it doesn't
interfere with the developers' code behind files? If Master Pages and User
Controls are used, would the UI team need Visual Studio, Expression Web or
some other tool?

I know I've asked a lot of questions in this one post, but this will be a
large project. Hopefully someone can point me in the right direction ;)

Thanks in advance





As an FYI, 3.0 is more of an addition to 2.0.

So you'll probably be designing your sites with VS2005 in 2.0.
You ~might use the "add ons" available in 3.0, but since you're coming from
ASP, I say you probably won't be.

I was a big xsl'er in VB6 days.
However, that really isn't the default mode now.

Alot of times, you're going to get your data into some type of collection.
Strong DataSet
Loose DataSet

and bind it to some kind of control. Repeater is my favorite in 2.0 and
1.1. GridView is the 2.0 major player.

Since you speak of layers in your OP, then I'll suggest a look at:!A68482B9628A842A!140.entry

Where I have a working layered app in 2.0. I don't have a web presentation
layer in that example, but you can learn alot from it anyways.

When you go to 2.0, there are kind of 2 models. A RAPID development model.
And a non rapid development model (and I call this the "good development

You can use alot of 2.0 tricks to get data to display on a page. However,
just because you ~can~ doesn't mean you should.

It depends on how layered or not layered you want it. And how maintainable.

As an extra caveat, you can go 3.0 and to the WPF (presentation being the
key word for the P). I don't know much about WPF, because I'm entrenched in
WCF right now, and some WF.

That'll wet your whistle. Wait for other posts as well, as what I've said
is just a drop in the bucket.

But my advice is to drop the XSL thinking.

Let you're designer do up the pages. There are alot of skin,themes,CSS
options available in 2.0. (I'm not an expert here).

If you code your BusinessLayer well, you won't to worry about that much
implementation in the presentation layer. (Easier said then done of



Kevin Spencer

You can completely separate UI design and content with ASP.Net 2.0 without
resorting to XML/XSL, by employing the available Controls combined with a
good understanding of how they render HTML, and good design practices.

First, use CSS in external style sheets. This enables the UI designer to
control the styling of the UI elements without touching the code. If you've
never visited, I suggest you take a look. It is
a powerful demonstration of how CSS can be used to control UI design without
affecting UI content. Almost Every page in the site has the same content,
with a different CSS style sheet applied.

The use of MasterPages, combined with Code-behind development adds an
additional separation, allowing your UI designers to create common page
content in MasterPages, and individual page content in individual pages that
host MasterPages. If you think of an ASP.Net page as a container for
Controls, it helps to get the picture. Every HTML page has "inactive" and
"active" content. By "inactive" I refer to elements that are purely
design/layout. By "active" I mean content that changes. In the case of
ASP.Net, it may also refer to dynamic content.

Many ASP.Net Controls render divs with HTML content. The CSS can control how
the content is styled, and how the div is positioned. In addition, ASP.Net
Themes may be used to create common styling. They use and extend CSS, but I
tend to like using CSS alone, and your designers may well be more
comfortable with it.

If you design your ASP.Net application in a modular fashion, which is one of
the chief advantages of OOP, and plan ahead, keeping business logic in a
separate layer from interface logic, and interface logic separate from
interface appearance, you can create applications that are easily modified,
extensible, and make your designers and developers happy.

At this time, Expression Web is the best tool for UI design in ASP.Net apps,
and it will be incorporated as the UI design component of the next version
of Visual Studio. However, there's no reason that your UI designers should
use Visual Studio. They can use Expression Web alone.


Kevin Spencer
Microsoft MVP

DSI PrintManager, Miradyne Component Libraries:

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question