ASP.NET Development Books

September 20, 2008

ASP.NET 2.0 AJAX Guide with Visual Studio 2005 by RidDick. บทที่ 1

July 30, 2008

เริ่มต้นกับ ASP.NET 2.0 AJAX
1. ดาวน์โหลด ASP.NET AJAX Extensions 1.0 ที่ http://www.asp.net/ajax/downloads/
2. ติดตั้ง ASP.NET AJAX Extensions 1.0

ขั้นตอนการติดตั้งคงไม่ต้องอธิบายอะไรมากมายนะครับ ไม่มีอะไรยากเกินกว่าที่เราจะทำได้อยู่แล้ว
3. ทดสอบการใช้งาน ASP.NET 2.0 AJAX
3.1 สร้าง Web Site Project ใหม่ โดยเลือก ASP.NET AJAX-Enabled Web Site

3.2 นำ Control มาวางดังภาพ

3.3 เพิ่มคำสั่งใน Button1_Click

3.4 ทดสอบการทำงานของ Web Page

เมื่อคลิกที่ Button แล้วสามารถทำงานก็ถือว่าการทดสอบ AJAX เสร็จสมบูรณ์แล้วครับ


วิธีการแก้ปัญหาเมื่อ Login ไม่ได้

July 30, 2008

1. กำหนดสิทธิโฟลเดอร์ App_Data ให้สามารถเขียนได้

2. ปิด VS2005+IE+Service(IIS,Sql Express,www) ลบไฟล์ใน F:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files

3. ลองทดสอบดูอีกครั้ง หากยังไม่ได้ ลองหาวิธีอื่น

:)


Class สำหรับติดต่อฐานข้อมูล MS Access Files

July 28, 2008

Imports System.Data
Imports System.Data.OleDb
Public Class ClassAccess
    Public Strcon As String
    Dim PV As String = “Provider=Microsoft.Jet.OLEDB.4.0;”
    Dim m_DBPath As String = “C:\Inetpub\wwwroot\CarManagement\App_Data\DB.mdb”
    Dim m_Password As String = “passwordmdb”
    Dim m_Identity As Integer
    Public ReadOnly Property Identity() As Integer
        Get
            Return m_Identity
        End Get
    End Property
    Public Sub New()
        If Dir(m_DBPath) = “” Then
            Err.Raise(60001, , “Database File : ” & m_DBPath & ” Database not found”)
            Exit Sub
        End If
        Strcon = PV & “data source=” & m_DBPath & “;Jet OLEDB:Database Password=” & m_Password
    End Sub
    Public Function GetDataset(ByVal Strsql As String, _
        Optional ByVal DatasetName As String = “Dataset1″, _
        Optional ByVal TableName As String = “Table1″) As DataSet
        Dim DA As New OleDbDataAdapter(Strsql, Strcon)
        Dim DS As New DataSet(DatasetName)
        Try
            DA.Fill(DS, TableName)
        Catch x1 As Exception
            Err.Raise(60002, , x1.Message)
        End Try
        Return DS
    End Function
    Public Function GetDataTable(ByVal Strsql As String, _
         Optional ByVal TableName As String = “Table1″) As DataTable
        Dim DA As New OleDbDataAdapter(Strsql, Strcon)
        Dim DT As New DataTable(TableName)
        Try
            DA.Fill(DT)
        Catch x1 As Exception
            Err.Raise(60002, , x1.Message)
        End Try
        Return DT
    End Function
    Public Function CreateCommand(ByVal Strsql As String) As OleDbCommand
        Dim cmd As New OleDbCommand(Strsql)
        Return cmd
    End Function
    Public Function Execute(ByVal Strsql As String, Optional ByVal IdentityCheck As Boolean = False) As Integer
        Dim cmd As New OleDbCommand(Strsql)
        Dim X As Integer = Me.Execute(cmd, IdentityCheck)
        Return X
        Return Strsql
    End Function
    Public Function Execute(ByRef Cmd As OleDbCommand, Optional ByVal IdentityCheck As Boolean = False) As Integer
        Dim Cn As New OleDbConnection(Strcon)
        Cmd.Connection = Cn
        Dim X As Integer
        Try
            Cn.Open()
            m_Identity = 0
            X = Cmd.ExecuteNonQuery()
            If IdentityCheck = True Then
                Dim cmd3 As New OleDbCommand(“select @@identity”, Cn)
                m_Identity = cmd3.ExecuteScalar
            End If
        Catch
            X = -1
        Finally
            Cn.Close()
        End Try
        Return X
    End Function
    Public Sub CreateParam(ByRef Cmd As OleDbCommand, ByVal StrType As String)
        ‘T:Text, M:Memo, Y:Currency, D:Datetime, I:Integer, S:Single, B:Boolean
        Dim i As Integer
        Dim j As String
        For i = 1 To Len(StrType)
            j = UCase(Mid(StrType, i, 1))
            Dim P1 As New OleDbParameter()
            P1.ParameterName = “@P” & i
            Select Case j
                Case “T”
                    P1.OleDbType = OleDbType.VarChar
                Case “M”
                    P1.OleDbType = OleDbType.LongVarChar
                Case “Y”
                    P1.OleDbType = OleDbType.Currency
                Case “D”
                    P1.OleDbType = OleDbType.Date
                Case “I”
                    P1.OleDbType = OleDbType.Integer
                Case “S”
                    P1.OleDbType = OleDbType.Decimal
                Case “B”
                    P1.OleDbType = OleDbType.Boolean
            End Select
            Cmd.Parameters.Add(P1)
        Next
    End Sub
End Class


Class สำหรับติดต่อฐานข้อมูล Sql Database Files

July 28, 2008

Imports System.Data.SqlClient
Imports System.Data
Public Class SQLCONN
Dim PV As String = “data source=.\SQLEXPRESS;”
Dim m_Database As String = “|DataDirectory|database.mdf;”
Public Strcon As String
Dim m_Identity As Integer

Public ReadOnly Property Identity() As Integer
Get
Return m_Identity
End Get
End Property

Public Sub New()
Strcon = PV & “Integrated Security=SSPI;AttachDBFilename=” & m_Database & “User Instance=true”
End Sub

Public Function GetDataset(ByVal Strsql As String, _
Optional ByVal DatasetName As String = “Dataset1″, _
Optional ByVal TableName As String = “Table”) As DataSet
Dim DA As New SqlDataAdapter(Strsql, Strcon)
Dim DS As New DataSet(DatasetName)
Try
DA.Fill(DS, TableName)
Catch x1 As Exception
Err.Raise(60002, , x1.Message)
End Try
Return DS
End Function

Public Function GetDataTable(ByVal Strsql As String, _
Optional ByVal TableName As String = “Table”) As DataTable
Dim DA As New SqlDataAdapter(Strsql, Strcon)
Dim DT As New DataTable(TableName)
Try
DA.Fill(DT)
Catch x1 As Exception
Err.Raise(60002, , x1.Message)
End Try
Return DT
End Function

Public Function CreateCommand(ByVal Strsql As String) As SqlCommand
Dim cmd As New SqlCommand(Strsql)
Return cmd
End Function

Public Function Execute(ByVal Strsql As String, Optional ByVal IdentityCheck As Boolean = False) As Integer
Dim cmd As New SqlCommand(Strsql)
Dim X As Integer = Me.Execute(cmd, IdentityCheck)
Return X
End Function

Public Function Execute(ByRef Cmd As SqlCommand, Optional ByVal IdentityCheck As Boolean = False) As Integer
Dim Cn As New SqlConnection(Strcon)
Cmd.Connection = Cn
Dim X As Integer
Try
Cn.Open()
X = Cmd.ExecuteNonQuery()
If IdentityCheck = True Then
Dim cmd3 As New SqlCommand(“select @@identity”, Cn)
m_Identity = cmd3.ExecuteScalar
End If
Catch
X = -1
Finally
Cn.Close()
End Try
Return X
End Function

Public Sub CreateParam(ByRef Cmd As SqlCommand, ByVal StrType As String)
‘T:Text, M:Memo, Y:Currency, D:Datetime, I:Integer, S:Single, B:Boolean, P: Picture
Dim i As Integer
Dim j As String
For i = 1 To Len(StrType)
j = UCase(Mid(StrType, i, 1))
Dim P1 As New SqlParameter
P1.ParameterName = “@P” & i
Select Case j
Case “T”
P1.SqlDbType = SqlDbType.VarChar
Case “M”
P1.SqlDbType = SqlDbType.Text
Case “Y”
P1.SqlDbType = SqlDbType.Money
Case “D”
P1.SqlDbType = SqlDbType.DateTime
Case “I”
P1.SqlDbType = SqlDbType.Int
Case “S”
P1.SqlDbType = SqlDbType.Decimal
Case “B”
P1.SqlDbType = SqlDbType.Bit
Case “P”
P1.SqlDbType = SqlDbType.Image
End Select
Cmd.Parameters.Add(P1)
Next
End Sub
End Class


ตัวอย่างการติดต่อฐานข้อมูล MS Access

February 20, 2008

ตัวอย่างการติดต่อฐานข้อมูล MS Access โดยใช้ Dataset

<%Import Namespace=”System.Data”%>

<%Import Namespace=”System.Data.OleDb”%>

<html>

<body>

<script language=”VB” runat = “server”>

Sub Page_Load(Sender As Object, E As EventArgs)

Dim Conn As new OleDbConnection (“Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=f:\inetpub\wwwroot\a.mdb”)

Dim Mydatasql As New OleDbDataAdapter(“Select * from member”,Conn)

Dim ds As new Dataset()

Mydatasql.Fill(ds,”Detail1″)

Name1.Datasource=ds.Tables(“Detail1″)

Name1.Databind()

End Sub

</script>

<asp:Datagrid id=”Name1″ runat = “server”/>

</body>

</html>

ตัวอย่างการติดต่อฐานข้อมูล MS Access โดยใช้ Datareader

<%Import Namespace=”System.Data”%>

<%Import Namespace=”System.Data.OleDb”%>

<html>

<body>

<script language=”VB” runat = “server”>

Sub Page_Load(Sender As Object, E As EventArgs)

Dim Conn As new OleDbConnection (“Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=” & Server.MapPath(“\a.mdb”))

Dim MydataSource=Mydatasql As new OleDbCommand(“Select * From Member”,Conn)

Name1.DataSource=Mydatasql.ExecuteReader()

Name1.Databind()

Conn.Close()

End Sub

</script>

<asp:Datagrid id=”Name1″ runat = “server”/>

</body>

</html>


การแยกประโยคคำสั่ง

February 1, 2008
การแยกประโยคคำสั่ง
     ในการเขียน ASP.NET เราสามารถเลือกเขียนสคริปต์ ภายใน 1ไฟล์ ได้มากกว่า 1ภาษา เช่น ใช้ VB และ C# รวมกัน แต่มีข้อแม้ว่าต้องแยกแยะ ให้ชัดเจนว่าคำสั่งไหนเป็นของภาษา VB คำสั่งไหนเป็นของภาษา C#

การแยกประโยคคำสั่ง
     เมื่อมีประโยคคำสั่งมากกว่า 1 ประโยค เราสามารถที่จะแยกประโยคคำสั่งเหล่านั้นได้โดย ไม่ทำให้การทำงานเกิดผิดพลาด การแยกประโยคคำสั่งของแต่ละภาษามีหลักการดังนี้

ภาษา หลักการแยกประโยคคำสั่ง ตัวอย่างการใช้งาน
C# ใช้เครื่องหมาย ; ในการแยกประโยคคำสั่ง <% int x ; int y %>
VB ใช้เครื่องหมาย : และการขึ้นบรรทัดใหม่
ในการแยกประโยคคำสั่ง
<% Dim x As Integer : Dim y As Interger %>
หรือ
<% Dim x As Integer
        Dim y As Interger %>
JScript ใช้เครื่องหมาย ; และการขึ้นบรรทัดใหม่
ในการแยกประโยคคำสั่ง
<% var x : int ; var y : int %>
หรือ
<% var x : int
        var y : int %>

การเขียนหมายเหตุ
     ในการเขียนโปรแกรมยาวๆ บางครั้งเราต้องใส่หมายเหตูลงไปในบรรทัดสำคัญของโปรแกรมว่าส่วนั้นๆทำหน้าที่อะไร เพื่อประโยชน์ในการ แก้ไขและการศึกษา รวมทั้งกันลืมด้วย ในการเขียนหมายเหตุของแต่ล่ะภาษาก็จะมีรูปแบบที่แตกต่างกันไปดังนี้

ภาษา รูปแบบ
C# <SCRIPT LANGUAGE = “C#” runat = “server”>
// นี่คือการเขียนหมายเหตุของ C#
</SCRIPT>

<SCRIPT LANGUAGE = “C#” runat = “server”>
/* นี่คือการเขียนหมายเหตุของ C#
แบบหลายบรรทัด */
</SCRIPT>

VB <SCRIPT LANGUAGE = “VB” runat = “server”>
‘ นี่คือการเขียนหมายเหตุของ VB
</SCRIPT>
JScript <SCRIPT LANGUAGE = “JScript” runat = “server”>
// นี่คือการเขียนหมายเหตุของ JScript
</SCRIPT>

<SCRIPT LANGUAGE = “JScript” runat = “server”>
/* นี่คือการเขียนหมายเหตุของ JScript
แบบหลายบรรทัด */
</SCRIPT>


การใช้งาน ASP.NET

February 1, 2008
การใช้งาน ASP.NET
     ASP.NET ยังคงเป็น Server-Side Script อยู่ ดังนั้นการจำลอง Server แบบต่างๆที่ทำใน ASP เวอร์ชั่นก่อนๆ นั้นยังคงจำเป็นอยู่ ขาดไม่ได้เด็ดขอด แต่สิ่งสำคัญคือ ระบบนี้จำเป็นต้องใช้กับ Windows 2000 หรือ Windows XP ขึ้นไปดังนั้นโปรแกรม PWS จำไม่สามารถนำมาใช้ได้ คงเหลือไว้แต่โปรแกรม IIS เท่านั้นซึ่งสเป็คของเครื่องต้องสูงมากทีเดียว     สิ่งที่เพิ่มเติมมาก็คือ การใช้งาน ASP.NET นั้นต้องอยู่ในสภาวะแวดล้อมที่เป็น .NET ดังนั้นจึงจำเป็นที่จะต้อง ลงโปรแกรมที่สร้างสภาวะแวดล้อมนี้ ซึ่งก็มีให้เลือกใช้งานอยู่ 2 ชนิดคือ

  • .NET Framework SDK มีไฟล์ขนาดประมาณ 130 MB
  • ASP.NET Premium Edition มีขนาดประมาณ 20 MB

ที่ผมใช้อยู่จะเป็น .NET Framework (English) นะครับ

ทดสอบโปรแกรมแรกกับ ASP.NET
     การเรียกใช้งานโปรแกรม ASP.NET นั้นเหมือนกับการเรียกใช้งาน ASP ธรรมดาทุกประการแต่แตกต่างกันตรงที่ไฟล์ของ ASP.NET นั้นเป็นสกุล .aspx เท่านั้นเอง เราจะมาลองเขียนโปรแกรมแรกของ ASP.NET กันบ้างเป็นโปรแกรมง่ายๆดังนี้

<form runat=”server”>’ฟอร์มที่เช็คว่าคุณกรอกข้อมูลรึยัง
<asp:textbox id = “Form1″ runat = “server”/><br>
<asp:button text = “submit” runat = “server”/><br>
<asp:RequiredFieldValidator ControlToValidate=”Form1″
ErrorMessage=”คุณยังไม่ได้กรอกข้อมูล” runat = “server”/>
</form>
<center>
<asp:Calendar id=”Calendar1″ runat=”server”></asp:Calendar>
‘ส่วนนี่เป็นโค้ดที่ใช้ทำปฏิทิน ง่ายมั้ยแค่บรรทัดเดียว


วิธีการสร้าง Virtual Directory

February 1, 2008

การเซ็ทค่า Virtual Directory นั้นเป็นการสร้างชื่อ และ Path ที่เข้าถึงไฟล์ของเว็บไซต์ซึ่งในการเรียกก็จะเป็น
http://localhost/ชื่อของVirtual Directory
โดยการสร้าง Virtual Directory จะเหมาะสำหรับผู้ที่ทำหลายเว็บไซต์ จะได้ไม่งงโดยเวลาจะดูเว็บใดก็เรียกตามชื่อที่ตั้ง

วิธีการสร้ง Virtual Directory ทำดังนี้ คลิ๊กขวาที่ Default Web Site เลือกไปที่ New –>Virtual Directory

จะเกิดหน้าจอของการสร้าง Virtual Directory ขึ้นมาให้คลิ๊ก Next

ในช่องของ Alias: ให้คุณใส่ชื่อที่ใช้ในการเรียกถึง ของผมเป็น aspthai และคลิ๊ก Next

จากนั้นให้คุณ Browse… เพื่อ Path และ Set นั้นเมื่อเรียกถึงชื่อ Alias: ที่คุณตั้ง IIS จะชี้ไปที่ Path นี้ทันที

เมื่อเลือก Path เสร็จแล้วให้คลิ๊ก Next จะเข้าสู่การ Set Permission ก็ Setตามรูปเลยก็ได้นะครับ และคลิ๊ก Next และ Finish เป็นอันเสร็จ

เมื่อคุณดูใน Default Web Site จะเห็นชื่อ aspthai ที่เป็น Virtual Directory ที่สร้างไว้เมื่อจะเรียกดูก็ http://localhost/aspthai


เริ่มต้นรู้จักกับ ASP.NET

February 1, 2008
เริ่มต้นรู้จักกับ ASP.NET
      โลกในยุคปัจจุบันนี้กำลังพัฒนาไปสู่โลกแห่งการสื่อสารไร้พรมแดน
ในโลกแห่งเทคโนโลยีปัจจุบันนี้ หลายๆท่านคงคุ้นเคยหรือได้ยินเกี่ยวกับเทคโนโลยีและการบริการพิเศษต่างๆมาบ้างแล้ว ไม่ว่าจากสื่อโฆษณา โทรทัศน์ บางท่านอาจจะเป็นผู้ใช้เทคโนโลยีนี้อย่างไม่รู้ตัว การเช็คเมลล์ เล่นอินเตอร์เน็ต รวมทั้งจองตั๋วชมภาพยนตร์ผ่านทางโทรศัพท์มือถือ สิ่งเหล่านี้ล้วนเป็นเทคโนโลยีที่ทันสมัยและน่าทึ่งอย่างยิ่ง แล้วตัวคุณจะรู้หรือไม่ว่าสิ่งเหล่านี้เกิดขึ้นได้อย่างไรและใช้สิ่งใดในการสร้าง

.NET แนวคิดแห่งโลกเทคโนโลยีสมัยใหม่
      .NET (อ่านว่า ด็อทเนต) คือแนนวคิดหนึ่งที่ไมโครซอฟท์ภูมิใจนำเสนอ โดย .NET ตัวนี้ไม่ได้เกี่ยวข้องกับโดเมนเนมของเว็บใดๆทั้งสิ้น แต่ .NET ตัวนี้ หมายถึง การนำเอาอุปกรณ์ทุกอย่างบนโลกมาเชื่อมโยงต่อกันเหมือนตาข่าย (net = ตาข่าย) ซึ่งหากว่าทำสำเร็จแล้วไม่ต้องนึกเลยว่าไมโครซอฟท์จะได้เป็นเจ้าแห่งเทคโนโลยีอย่างไม่ต้องสงสัย แต่เรื่องมันไม่ง่ายอย่างที่คิด เพราะอุปกรณ์ต่างๆเหล่านั้นล้วนถูกออกแบบมาต่างๆกัน การที่มันจะติดต่อสื่อสารกันรู้เรื่องนั้น ย่อมเป็นเรื่องที่เป็นไปได้ยาก ไมโครซอฟท์เล็งเห็นจุดนี้ จึงได้พยายามที่จะคิดค้นสิ่ง ที่เป็นมาตรฐานขึ้น เพื่อให้อุปกรณ์ทุกๆชนิดทั่วโลกติดต่อสื่อสารกันได้อย่างรู้เรื่อง จึงไม่ใช่เรื่องแปลกถ้าในอนาคตเราเปิดเว็ปไซท์เล่นอินเตอร์เน็ตด้วยอุปกรณ์อื่นๆนอกเหนือจากคอมพิวเตอร์

ASP Web Services คืออะไร
     หลายๆคนอาจเคยได้ยินคำๆนี้มากันบ้างแล้ว แต่ก็มีหลายคนสงสัยว่ามันคืดอะไรกันแน่ ซึ่งชื่อ Web Service นั้นแปลตามตัวก็คือการใช้บริการต่างๆผ่านทางเว็บนั่นเอง ซึ่งก็ตรงตามจุดประสงค์ของไมโครซอฟท์ ที่ต้องการจะทำให้ทุกอย่างสามารถใช้งานเชื่อต่อกับอินเตอร์เน็ตได้นั่นเอง คำๆนี้จึงกลายเป็นคำฮิตติดปากมาจนถึงทุกวันนี้ แต่จริงๆแล้ว Web Service ก็คือการเรียกใช้งานชุดคำสั่งในระยะไกล ซึ่งชุดคำสั่งเหล่านี้ไม่ใช่แค่ชุดคำสั่งธรรมดา แต่เป็นชุดคำสั่งที่เขียนขึ้นมาเป็นโปรแกรมเหมือนกับการใช้งานของ Client เลยทีเดียว ทำให้เราไม่ต้องไปติดตั้งโปรแกรมต่างๆภายในเครื่องคอมพิวเตอร์ของเราเลย เมื่อใดอยากใช้งานก็ต่ออินเตอร์เน็ตเข้าไปใช้บริการในเว็บไซท์ผู้ผลิตได้ทันที โดยอาจมีการเรียกเก็บค่าบริการเป็นครั้งๆไป ซึ่งจะช่วยลดปัญหาในการละเมิดลิขสิทธิ์ และชุดคำสั่งเหล่านี้จะทำให้ ASP.NET มีบทบาทมากทีเดียว

What’s .NET Framework?
     อย่างที่ได้กล่าวไปแล้วในตอนต้นว่าไมโครซอฟท์ต้องการที่จะสร้างอะไรที่เป็นมาตรฐานขึ้นมา เพื่อให้ทุกสิ่งทุกอย่างสามารถติดต่อสื่อสารกันได้หมด โดยคิดค้นระบบซึ่งหมายมั่นปั้นมือว่าจะให้เป็นระบบมาตรฐาน ระบบนี้คือ .NET Framework ซึ่งระบบนี้ไม่ใช่ระบบปฏิบัติการ (OS) แต่เปรียบเสมือนโปรแกรมหนึ่งที่จะสามารถสร้างสภาวะแวดล้อมหนึ่ง ซึ่งสามารถทำงานในระบบ .NET นี้ได้

     ในอนาคตไมโครซอฟท์ก็หวังที่จะนำเอาระบบนี้ไปติดตั้งลงบนอุปกรณ์ทุกชนิด เพื่อทำให้อุปกรณ์ทุกอย่างมีระบบๆหนึ่งที่เหมือนกันหมด โดย .NET Framework นั้นมี ส่วนประกอบภายในแบ่งออกเป็น 3 ชั้นใหญ่ๆคือ
     1. Programming Language : เป็นรูปแบบของภาษาที่ออกแบบมาเพื่อให้สามารถทำงานในสภาวะที่เป็น .NET ได้โดยที่ทางไมโครซอฟท์ได้เปิดตัวภาษาหลักๆที่จะใช้พัฒนาบน .NET นี้ 3ภาษา
          °   C# เป็นภาษาใหม่ที่ไมโครซอฟท์พัฒนามาจาก C++ กับ JAVA เป็นหลัก
          °   VB.NET เป็นภาษาที่พัฒนามาจาก Visual Basic ในเวอร์ชั่น 6.0
          °   JScript.net เป็นภาษาที่พัฒนามาจาก JScript ซึ่งเป็น JavaScript ในเวอร์ชั่นของไมโครซอฟท์
     2. Base Classes Library : Library นั้นเปรียบเสมือนชุดคำสั่งสำเร็จรูปย่อยๆที่เพิ่มเข้ามา ซึ่งส่วนใหญ่จะเป็นชุดคำสั่งที่ต้องใช้งานอยู่เป็นประจำ ดังนั้นจึงมีผู้คิดค้นเพื่ออำนวยความสะดวกในการเขียนโปรแกรม ซึ่ง Library ในภาษาต่างๆส่วนใหญ่จะอยู่ในรูปแบบไฟล์ incould แต่ถ้าเป็น ASP สิ่งที่เป็น library ก็คือ คอมโพเนนท์ต่างๆนั่นเอง ซึ่งภายในระบบ .NET จะสร้างสิ่งที่เรียกว่าเป็น Library พื้นฐานขึ้น ทำให้ไม่ว่าจะใช้ภาษาใดในการพัฒนาโปรแกรมก็สามารถที่จะเรียกใช้ Library ที่เป็นตัวเดียวกันได้หมด
     3. Common Language Runtime (CLR) : นับเป็นสิ่งสำคัญแทบจะที่สุดของระบบ .NET นี้ก็ว่าได้ เพราะ CLR ที่ว่านี้มีหน้าที่ทำให้โปรแกรมที่เขียนขึ้นมาด้วยภาษาต่างๆกัน กลายเป็นภาษารูปแบบมาตรฐานเดียวกัน ทั้งหมด เราเรียกภาษาที่ว่านี้ว่า Intermediate language (IL) ซึ่งเมื่อต้องการที่จะรันโปรแกรมใด CLR ที่ว่านี้จะตรวจสอบเครื่องที่รันว่ามีสภาวะแวดล้อมการทำงานเช่นใดหลังจากนั้นก็จะคอมไพล์เป็นโปรแกรมที่เหมาะสมต่อการทำงานของเครื่องนั้น ทำให้เราสามารถใช้งานโปรแกรม ต่างๆได้อย่างมีประสิทธฺภาพสูงสุดในแต่ละเครื่อง

.NET Framework มีดีตรงไหน
          ประโยชน์และข้อดีของ .NET Framework นั้นพอจะสรุปออกมาได้เป็นข้อๆดังนี้
     1. เป็นระบบที่มีไลบรารีที่เป็นมาตรฐานเดียวกัน : เนื่องจากมีไลบรารีที่เป็นมาตรฐานเดียวกันทั้งหมดทำให้เราไม่ต้องกังวล ว่าภาษาที่ใช้เขียนนั้นมีไลบรารีตัวนั้นตัวนี้หรือไม่ รวมทั้งไม่ต้องคอยกังวลว่าถ้าใช้ไลบรารีของภาษาหนึ่งแล้วอีกภาษาหนึ่งจะไม่มีไลบรารีตัวนั้น
     2. ไม่ขึ้นกับระบบประฏิบัติการ (OS) : เนื่องจากระบบปฏิบัติการ ที่แต่ละบุคคลหรือองค์กรใช้นั้นย่อมไม่เหมือนกัน แต่ภายใน .NET Framework จะไม่มีปัญหานี้ของเพียงแค่มีระบบ .NET Framework ก็จะทำให้สามารถใช้งานโปรแกรมต่างๆได้ ซึ่งเป็นข้อดีตรงที่เราจะสามารถใช้โปรแกรมต่างๆได้ทุกระบบปฏิบัติการ
     3. ใช้ในการพัฒนาได้ทุกภาษา :ทำให้เราไม่ต้องคอยมาศึกษาภาษาใหม่ๆเมื่อต้องการสร้างโปรแกรมในแต่ละครั้ง นอกจากนั้นเรายังสามารถเลือก ใช้ภาษาที่เราถนัดที่สุดในการพัฒนาโปรแกรมต่างๆได้ด้วย
     4. มีการควบคุมสิ่งแวดล้อมในการทำงานเป็นอย่างดี :เนื่องจากเป็นระบบที่เป็นมาตรฐานทำให้การควบคุมจัดสรรระบบต่างๆ ทำได้ง่ายขึ้น ไม่ว่าจะเป็นการจัดสรรหน่วยความจำ ด้านการใช้งานเครื่องก็มีความรวดเร็วมากขึ้น ลดโอกาศที่เครื่องจะแฮงก์ได้เป็นอย่างดี
     5. ความปลอดภัยที่มีมากขึ้น :.NET Framework สามรถกำหนดสิทธิ์การใช้งานหรือ permission ของผู้ใช้งานได้มากขึ้นทำให้สมารถกำหนดว่า จะให้โปรแกรมในส่วนใดใช้งานได้หรือไม่ได้ แล้วแต่เฉพาะบุคคล
     ทั้งหมดนี้เป็นเพียงประโยชน์ส่วนหนึ่งในแนวคิดของไมโครซอฟท์ที่กำลังจะพัฒนาให้สำเร็จเท่านั้น บางข้อทำได้สำเร็จแล้ว แต่บางข้อก็ยังไม่สำเร็จดังนั้นจึงต้องคอยรอดูว่า ฝันของไมโครซอฟท์จะเป็นจริงและสำเร็จได้เมื่อไร

ASP.NET ภาษาแห่งอนาคตกับ .NET
     ASP.NET หรืออีกชื่อหนึ่งว่า ASP+ ซึ่งเป็นชื่อที่ไมโครซอฟท์ใช้เรียกในตอนแรก ถือว่าเป็น ASP เวอร์ชั่นล่าสุดต่อจาก ASP 3.0 แต่คงไม่สามารถพูดได้เต็มปากว่า ASP.NET พัฒนามาจาก ASP เพราะรูปแบบ และไวยากรณ์ต่างๆ และภาษาที่นำมาใช้งานนั้นต่างจากเดิมแทบทั้งสิ้น แทบจะเรียกได้ว่ายกเครื่องใหม่เลยทีเดียว น่าจะพูดได้ว่า ASP.NET เป็นอีก Generation หนึ่งของ ASP มากกว่า เรามาลองดูกันว่าใน ASP.NET นั้นมีอะไรที่แตกต่างจาก ASP รุ่นก่อน ๆบ้าง
     1. ใช้ภาษาใดๆในการเขียนสคริปต์ก็ได้ : จากเดิมที่เราสามรถใช้ได้เฉพาะภาษาที่เป็นสคริปต์ของ VBScript และ JScript แต่ใน ASP.NET เราสามารถที่จะใช้ภาษาที่มีรูปแบบของภาษาเต็มๆ ซึ่ง ในเบื้องต้น มี3 ภาษาคือ C#, VB.NET และ JScript.Net ที่ออกมาเป็นมาตรฐาน แต่ในอนาคตไมโครซอฟท์มีแผนที่จะเพิ่มตัวแปลภาษาให้ครบทุกภาษา
     2. มีความยืดหยุ่นในการเขียนโปรแกรมมากขึ้น : โดยที่เราสามารถใช้ภาษาในการเขียน ASP.NET ได้มากกว่า 1 ภาษาภายในไฟล์เดียวกัน ทำให้สามารถเลือกรูปแบบของภาษาที่ง่ายที่สุดต่อการเขียน ในแต่ละส่วนได้
     3. ลักษณะการแปลภาษาและนามสกุลไฟล์เปลี่ยนไป : ใน ASP เวอร์ชั่นก่อนๆ มีลักษณะการแปลภาษาเป็นแบบอินเตอร์พรีเตอร์ (Interpreter) คือการจะทำคำสั่งใดค่อยแปลคำสั่งนั้น แต่ในเวอร์ชั่น .NET นี้จะมี ลักษณะเป็นคอมไพเลอร์ (Compiler) คือการแปลคำสั่งรวมทั้งโปรแกรม นอกจากนี้นามสกุลของไฟล์ก็มีการเปลี่ยนแปลงจากเดิมที่ใช้นามสกุลไฟล์เป็น ” *.asp ” เป็น ” *.aspx “
     4. รูปแบบและการใช้งานคอมโพเนนต์ที่ง่ายขึ้น : รูปแบบของคอมโพเนนต์จะเน้นไปที่ XML มากที่สุด และที่สำคัญคือการใช้งานคอมโพเนนต์ใน ASP.NET นั้นเราสามารถอัพโหลดไฟล์ไปไว้ในไดเร็คตอรีที่ผู้ดูแลเซิร์ฟเวอร์ (Admin) กำหนดหลังจากนั้นคอมโพเนนต์จะติดตั้งตัวเองโดยอัตโนมัติ ลดปัญหาที่เกิดจาก ASP เวอร์ชั่นก่อนๆได้เป็นอย่างดี เนื่องจากใน ASP เวอร์ชั่นก่อนนั้นการติดตั้งคอมโพเนนต์กระทำได้เพียงผู้ดูแลเซิร์ฟเวอร์เพียงคดเดียวเท่านั้น ทำให้เวลาต้องการใช้คอมโพเนนตืต่างๆที่เซิร์ฟเวอร์ไม่มี จึงเป็นเรื่องที่ลำบาก
     5. มีไลบรารีให้เลือกใช้ได้มากขึ้น : ใน ASP เวอร์ชั่นก่อนๆนั้นแอพพลิเคชั่นบางอย่างสร้างได้ไม่สะดวกนัก ต้องอาศัยคอมโพเนนต์ต่างๆมากมาย แต่ใน ASP.NET นั้นได้เพิ่มไลบรารีในส่วนเหล่านี้ให้กลายเป็นพื้นฐานของการใช้งาน
     6. มีคอนโทรลทำให้การใช้งานในบางสิ่งง่ายขึ้น : เป็นส่วนพิเศษที่เพิ่มเติมมาจาก ASP รุ่นก่อนๆที่ไม่มีส่วนที่เรียกว่า คอนโทรล ซึ่งคอนโทรลนี้จะช่วยให้เราสามารถสร้างเว็บไซท์ได้อย่างง่ายและมีประสิทธิภาพมากขึ้น จึงไม่ต้องกังวลว่าบราวเซอร์รุ่นนั้นรุ่นนี้จะรองรับกับภาษาที่เราเขียนหรือไม่
     7. สามารถเรียกขอข้อมูลจากเซิร์ฟเวอร์ได้ : ใน ASP เวอร์ชั่นก่อนๆเซิร์ฟเวอร์สามารถเรียกขอข้อมูลได้จากเครื่องผู้ใช้เท่านั้นแต่ใน ASP.NET เครื่องเซิร์ฟเวอร์สามารถเรียกขอข้อมูลจากเครื่องเซอร์เวอร์ด้วยกันได้
     8. ไม่ต้องต่อ Hardware : เนื่องจากเป็นระบบใน .NET Framework ดังนั้นจึงมีคุณสมบัติของ Common Languare Runtime (CLR) ทำให้มีการคอมไพล์โปรแกรมเป็นภาษามาตรฐานที่เรียกว่า IL ก่อน ดังนั้นไม่ว่าคุณจะเล่นเครื่องปาล์มหรือโน้ตบุ๊ค PDA ก็ไม่เกิดปัญหา
     9. ง่ายต่อการหาจุดผิดพลาดในการเขียนโปรแกรม : หากเป็น ASP รุ่นก่อนเวลาเกิดความผิดพลาด (error) เครื่องจะบอกแค่ว่าเป็นความผิดพลาดชนิดใดบรรทัดไหน แต่ใน ASP.NET นี้เครื่องจะแสดงรายละเอียดที่มากขึ้น พร้อมแนวทางแก้ไข
     10. มีการตรวจสอบเหตุการณ์ต่างๆได้ภายในเว็บเพจ : มีการตรวจสอบเหตุการณ์ต่างๆ ตั้งแต่โหลดหน้าเว็บเพจไปจนถึงปิดหน้าเว็บเพจลง ทำให้เราสามารถเขียนโปรแกรมกำหนดเหตุการณ์ต่างๆได้ง่ายขึ้น
     11. แยกส่วนที่เป็น HTML กับ ASP ออกมาอย่างชัดเจน : ในเวอร์ชั่นก่อนๆส่วนที่เป็น HTML กับ ASP จะเขียนปนกันไปมา แต่ในเวอร์ชั่นนี้จะแยกส่วนกันอย่างชัดเจนว่าส่วนไหนเป็น HTML และส่วนไหนเป็น ASP

     นอกจากนี้ยังมีประโยชน์อีกมากมายที่ยังไม่ได้เขียนเอาไว้ แต่ประโยชน์เพียงเท่านี้ก็คงเพียงพอที่จะทำให้ทุกท่านอยากจะลองใช้งานดูว่าสมคำล่ำลือหรือไม่