ASP.NET - what the heck is it?

SecondCor521

Give me a museum and I'll fill it. (Picasso) Give me a forum ...
Joined
Jun 11, 2006
Messages
7,889
Location
Boise
Hi all,

OK, I'm looking at this job that I have all the fundamental skills for but they're using a totally different technology stack. I could use a little help and I know there are some savvy folks here.

This company is using the following stuff:

Visual Studio 2008 -- that's the IDE, I get that and have used those.
C# -- that's a programming language, I get that and have used those.
SQL server -- that's an RDBMS, I get that and have used those.
XML/XLST -- I've seen XML before, and I've read a little about XLST and I get what it does. Not sure what the heck you would use it for, but anyhow...
MVC pattern -- model/view/controller, I think I get that a little...

Anyway, what the heck is ASP.NET exactly?

I get that it's a Microsoft product.
I get (sorta) that it's OO.
I get (sorta) that ASP has something to do with serving up web pages.
I get (sorta) that it's somehow based on the CLR.

I've got some books I'm going to try to read to figure this stuff out, but I thought someone here might be able to explain it well.

They're also using "agile development", SCRUM, TDD, and xUnit. All of those make basic sense to me.

2Cor521
 
XSLT is a templating language for XML... think of XML as the data coming in and XSLT as the formatter.

Regarding MVC, are they specifically talking about The new ASP.NET MVC framework or the MVC design pattern? For a survey of the MVC pattern (and it's variations) in general, I would suggest Martin Fowler's Patterns of Enterprise Application Architecture. He has a great start here: GUI Architectures

.NET is a managed runtime. It can run quite a few languages, Managed C++, VB.NET, C#, Eiffel, Haskel, Python, etc.

C# is really nothing like C or C++... other than it's case sensitive and has curly brackets.

ASP.NET is a web container that's (typically) deployed on top of IIS (microsoft's web server). The execution model is very different between IIS 6 and IIS 7, but the semantics, as far as a programmer would care, are the same.

ASP.NET works with IIS to parcel out client requests, handle threading, context storage and switching, etc.

The implementation will likely be very different depending on if you're targeting the new ASP.NET MVC framework versus traditional ASP.NET (and, it's all confusing as traditional ASP.NET is really, or at least can be, a different take on the MVC pattern).

Basically, though, in your case.... you'll write your application logic in C#, ASP.NET will handle the container stuff. ASP.NET also comes with a bunch of controls to make it easier to render content.

I can send you code samples to illustrate anything you have questions on / want to see more clearly.

I use NUnit for my unit testing... the team will probably be using that or MbUnit. Kent Beck has some great stuff on TDD. I can't help you with most of scrum or agile as their approach has, largely, never made sense to me.
 
Here's a basic example from a login page.. this is a little snippit from a more traditional asp.net page (you'll need to do more of your own lifting if you go with the mvc framework [note, again, not the same thing as the general pattern]):

PHP:
<asp:Panel DefaultButton="LoginButton" ID="LoginPanel" runat="server">
<table border="0" class="normalForm" cellpadding="4" cellspacing="4">
 <tr>
  <td><asp:Label ID="EmailAddressLabel" AssociatedControlID="EmailAddressTextBox" runat="server">Username or Email Address:</asp:Label></td>
  <td><asp:textbox id="EmailAddressTextBox" cssclass="TextBox" runat="server" maxlength="100" width="150px" />
  <asp:RequiredFieldValidator ID="EmailAddressReqFieldVal" runat="server" ControlToValidate="EmailAddressTextBox" SetFocusOnError="true" Display="none" ErrorMessage="Please enter your email address." EnableClientScript="false" />
  </td>
 </tr>
 <tr>
  <td><asp:Label ID="PasswordLabel" AssociatedControlID="PasswordTextBox" runat="server">Password:</asp:Label></td>
  <td><asp:textbox id="PasswordTextBox" cssclass="TextBox" runat="server" maxlength="20" width="150px"
    textmode="Password" autocomplete="false" />
  <asp:RequiredFieldValidator ID="PasswordReqFieldVal" runat="server" ControlToValidate="PasswordTextBox" SetFocusOnError="true" Display="none" ErrorMessage="Please enter your password." EnableClientScript="false" />
  </td>
 </tr>
 <tr id="RememberMeRow" runat="server">
  <td colspan="2"><asp:checkbox id="RememberMeCheckBox" cssclass="CheckBox" runat="server" text="Remember me on this computer" /></td>
 </tr>
 <tr>
  <td colspan="2" align="right" style="text-align:right;"><asp:button id="LoginButton" CssClass="FormButton" runat="server" text="Login!" OnClick="LoginButton_Click" /></td>
 </tr>
</table>
</asp:Panel>

The basic things to note... see all of the asp: tags. The asp.net runtime is automatically wiring those up and rendering them to html. So, asp:textbox is rendered as an input type="text". The required field validator adds code on the client (optional) and server side to check if the field was populated by the user. The login button becomes a form submit button, but it also wires up on the backend in a way that's easy to work with.

on the back end (the code-behind file, where I write my application logic):

PHP:
protected void LoginButton_Click(object sender, EventArgs e)
{
if (!Page.IsValid)
return;

try
{
bool success =
SecurityContext.Login(EmailAddressTextBox.Text, SecurityUtility.Encrypt(PasswordTextBox.Text),
RememberMeCheckBox.Checked);
if (!success)
{
ErrorLabel.Visible = true;
ErrorLabel.Text = badDataError;
return;
}
if (Request.QueryString["ReturnUrl"] != null)
{
string returnUrl = Server.UrlDecode(Request.QueryString["ReturnUrl"]);
Response.Redirect(returnUrl, false);
}
else
{
Response.Redirect("~/Default.aspx", false);
}
}
catch (UserNotFoundException)
{
ErrorLabel.Visible = true;
ErrorLabel.Text = badDataError;
}
catch (Exception ex)
{
log.Error("Error logging in user " + EmailAddressTextBox.Text, ex);
ErrorLabel.Visible = true;
ErrorLabel.Text = generalError;
}
}

The Page.IsValid is automatically fired by the runtime for me. It runs through all of the validators and ensures that they pass. The runtime also fires the login button onclick event, which I hooked into on the page declaration side of things.
 
Well that clears up the mud...a little.

I think what's difficult is trying to bootstrap myself up on all these different things with only knowing (a) pieces of the puzzle, and (b) not exactly sure how all these apply to the specific domain of the problem.

As to your question, it sounds to me like it's just the general MVC pattern:

"In-depth knowledge of common design and architectural patterns. Experience developing applications based on MVC pattern highly desirable."

I've started looking at the stuff at the link you provided and it looks very good.

Mind if I PM you with more questions so the exposure of my ignorance is limited to something less than the WWW?

2Cor521
 
Well that clears up the mud...a little.
....
Mind if I PM you with more questions so the exposure of my ignorance is limited to something less than the WWW?

2Cor521

Sorry, it was late and I'm sure I was rather garbled. I'll try and get some better resources together too... be sure to check out MSDN (msdn.microsoft.com) also.

And yes, feel free to PM me (or shoot me an email, you should have it from linked in) any time with any questions.
 
Second:

First of all, if you don't know what they are talking about then you should not apply for this job. ASP (Active Server Page) and .NET stands for Microsoft .NET platform or architecture or whatever it means.

With that said, since technology changes so fast nowaday that you can normally get away with knowing comparable technology or the hiring person^-^

If you've worked with Visual Studio then you should be able to do this job. Provided that you're not competing with young and hungry programmers (and hopefully not from India).
 
Marquette, You were being pretty clear; it was more my lack of comprehension I think. I'll email you with further questions; thanks for the help. I'll take a look at MSDN, but sometimes they can be so buzzwordy that they don't really say what they're trying to accomplish.

huusom, <bristle>I'll offer you a deal: I won't "should" you if you stop "should"-ing me.</bristle> Yes, I've worked with VS (an earlier version, not 2008 ). I'm probably competing with some middle-aged programmers as the job calls for 8 years of experience. I do agree with your second paragraph.

AzDreamer, thanks, I'll look at that one.

2Cor521
 

Latest posts

Back
Top Bottom