ASP.NET 學習1_.NET_歷代發布版本歷史探討_ASP.NET B/S語言介紹


.NET Framework : 是由微軟開發的一個軟體開發平臺

一個致力於敏捷軟體開發(Agile software development)的平臺
注重快速應用開發(Rapid application development)以及平臺獨立性、網路透明化。


CLR是以一種採用系統虛擬機運行的編程平臺
以通用語言運行庫(Common Language Runtime)為基礎,
支援多種語言(C#、F#、VB.NET、C++、Python等)的開發。


.NET也為應用程式介面(API)提供了新功能和開發工具


.Net Framework版本歷史


2002年   1/16          .Net 1.0 (最早的.NET架構)

【完整版號 - 1.0.3705】
Visual Studio .NET一起發行的第一個版本
第一個微軟Visual Studio .NET的發行版
被稱作Visual Studio .NET 2002

  1. 物件導向的Web應用程開發,支援繼承多型與其他標準物件導向程式設計的功能。
  2. 以Microsoft Windows程式設計為基礎
  3. 開發人員能夠使用在Web Server上使用的DLL類別庫來建立比HTML輸出更強應用

2003年   4/24         .Net 1.1

【完整版號 - 1.1.4322】
與Windows Server 2003和Visual Studio .NET 2003一起發表
第一個被Windows作業系統 Windows Server 2003所內置的.NET Framework版本

  1. 行動裝置控制項(內建了對mobile ASP.NET控制項的支援)
  2. 自動化輸入驗證(加入了ASP.NET應用程式的代碼安全存取功能)
  3. 內建了對ODBC和Oracle資料庫的支援




2005年  11/7         .NET 邁入2.0架構(目前多數基礎)
【完整版號 - 2.0.50727.42】

Visual Studio 2005Visual Web Developer ExpressSQL Server 2005一起發表。


  1. 新的資料控制項(GridView、FormView、DetailsView)
  2. 新的宣告式資料存取技術(SqlDataSource、ObjectDataSource 與 XmlDataSource 控制項)
  3. 導覽控制項(SiteMap、Menu、TreeView)
  4. 主版頁面 (Master Page)
  5. 登入控制項
  6. 主題
  7. 表皮 (skin)
  8. Web 部件 (Web Part)
  9. 個人化服務 (Profile)
  10. 全功能的預先編譯能力
  11. 全新的當地語系化技術
  12. 支援64位元平台
  13. 提供者類別模式


2007年   11/19      .Net 3.5

Visual Studio 2008Windows Server 2008一起發表


  1. 新資料控制項(ListView、DataPager)
  2. ASP.NET AJAX 含入至  .NET Framework,成為.NET Framework的一部份
  3. 提供支援 LINQ 的 LinqDataSource 控制項
  4. 包含一個支援C#和VB.Net中心的語言特性的編譯器,以及對語言整合查詢(LINQ, Language-Integrated Query)的支援



2008年  8/11   .Net 3.5 Service Pack 1

 Visual Studio 2008 Service Pack 1 發表


  1. 內含ASP.NET Dynamic Data
  2. 在 ASP.NET AJAX 應用程式中支援瀏覽器歷史控制 (controlling browser history)
  3. 多個JavaScript檔案合併到單一檔案以強化有效的下載

2010年   4/12    .Net 4.0

Visual Studio 2010一起發表

  1. 配合.NET Framework 4.0讓Web應用程式具有如並列運算函式庫(Parallel Library)等新功能。
  2. ASP.NET MVC 2.0
  3. jQuery完全整合與ASP.NET AJAX Client Library 強化,以及 AJAX CDN 的支援。
  4. ASP.NET 的 Render Compatibility (3.5以前版本或4.0版),可控制許多 ASP.NET Web 控制項的繪製行為,以配合標準 HTML 與 jQuery 的處理。
  5. SEO的支援
  6. 自訂快取提供者 (Extensible Output Cache)。
  7. QueryExtender 的支援。
  8. CSS 控制行為的變更
  9. 自訂的 Client ID 輸出。
  10. ViewState 的控制。
  11. 配合 Visual Studio 2010 的 Web Deploy 工具。
  12. Entity Framework 4.0 的支援
  13. Dynamic Data Framework 與 Chart Control 內建至核心中


2012年    8/15     .Net 4.5

Visual Studio 2012一起發表


2013年    10/17     .Net 4.5.1

Visual Studio 2013一起發表


2014年        5/5     .Net 4.5.2


2015年    7/20     .Net 4.6
Visual Studio 2015一起發表

2015年    11/30     .Net 4.6.1
Visual Studio 2015 Update1 一起發表


2016年    8/2     .Net 4.6.2

2017年    4/5     .Net 4.7
Visual Studio 2017 一起發表


Windows 10下對應的為  .Net




.NET Framework的元件堆疊








ASP.NET  就是用來寫 WebForm的(跟Windows Form 概念有點像)
伺服器端應用程式的熱門開發工具技術


ASP.NET 運行的架構分為幾個階段:

  1. 在 IIS 與 Web 伺服器中的訊息流動階段
  2. 在 ASP.NET 網頁中的訊息分派
  3. 在 ASP.NET 網頁中的訊息處理

ASP.NET B/S語言介紹





瀏覽器與伺服器程式語言

在用戶端瀏覽器
主要透過
html  ,css , javascript 三者大宗前端網頁語言所構成
偏向靜態的頁面資訊呈現

伺服器端
可執行程式語言比如PHP  , ASP.NET (CLR), JSP  (JVM)...
偏向動態的後端互動會需要經由Server做過邏輯處理

在ASP.NET中主要透過IIS(Internet Information Server)的Server軟體來處理
瀏覽器和伺服器之間互動的業務
ASP.NET中常見的一些檔案種類

.ashx : 一般處理ASP.NET核心程序 (在AJAX部分會時常看到)

.aspx 用於WebForm前端網頁頁面模板配置

.aspx.cs 用於後端伺服器邏輯流程

.ascx 控制元件模組(多個控件的組合用於重複利用)

.asax  包括 ASP.NET 應用程式層級的事件語法

.asmx 用於Web Service的應用開發

.config 配置用文件




在應用程式開發中
.aspx是@Page指令集的頁面模板
(用戶端前段網頁顯示)也就是一系列html , css , javascript
主要控件(Server Control)也都定義於此

.aspx.cs則是伺服器端的後台(端)程式
預設Page_load初始化第一次運行時之進入點

此種前aspx後cs的方式又稱為CodeBehind(代碼後置)


.aspx裏頭我們是可以透過
<%= 屬性欄位%>  或者  <% C#或VB程式 %>
兩種語法調用出後端.cs的程式回傳結果的
(備註:屬性欄位只允許訪問非private的)

缺點:因為預設都直接顯示在最頂部容易破壞網頁








.aspx.cs

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default0 : System.Web.UI.Page
{
    protected string name = "小明";

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Say()
    {
        Response.Write("Hello World");
    }
}


.aspx

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default0.aspx.cs" Inherits="Default0" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h1>TEST</h1>
        <br />

        <h2><%=name %> </h2>
        <br />

        <%Say(); %>

    </div>
    </form>
</body>
</html>

前端的.aspx檔案最終編譯出來的class會繼承.cs的後端檔案的class



這裡我們要有一個觀念
寫的網站運行時都會被Compile為程式集
頁面則是變成class

接下來我們要來查找編譯後的程式集位置


後台程式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default0 : System.Web.UI.Page
{
    protected string name = "小明";

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(this.GetType() + "<br/>");
        Response.Write(this.GetType().Assembly.Location + "<br/>");
    }

    protected void Say()
    {
        Response.Write("Hello World");
    }
}


經ILSpy  反編譯後
查看DLL
就可清楚看到
.aspx會生成一個名為 default0_aspx的 class
去繼承Default0










Reference:
https://www.dotnetodyssey.com/2014/10/04/calling-javascript-code-behind-asp-net-using-c-how-it-works/page-flow-of-asp-net/
https://www.codeproject.com/Articles/42724/Beginner-s-Guide-Exploring-IIS-6-0-With-ASP-NET




How IIS Process ASP.NET Request
https://abhijitjana.net/2010/03/14/beginners-guide-how-iis-process-asp-net-request/


Beginner's Guide: Exploring IIS 6.0 With ASP.NET
https://www.codeproject.com/Articles/42724/Beginner-s-Guide-Exploring-IIS-6-0-With-ASP-NET

【資訊】 Win7-IIS與asp.net架站設定教學
https://weselyong.pixnet.net/blog/post/30159004-%E3%80%90%E8%B3%87%E8%A8%8A%E3%80%91-win7-iis%E8%88%87asp.net%E6%9E%B6%E7%AB%99%E8%A8%AD%E5%AE%9A%E6%95%99%E5%AD%B8

Windows10開關IIS
https://blog.xuite.net/yasin/scc007/366461513-Windows+10+%E9%96%8B%E9%97%9C+IIS

留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header