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
- 物件導向的Web應用程開發,支援繼承、多型與其他標準物件導向程式設計的功能。
- 以Microsoft Windows程式設計為基礎
- 開發人員能夠使用在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版本
- 行動裝置控制項(內建了對mobile ASP.NET控制項的支援)
- 自動化輸入驗證(加入了ASP.NET應用程式的代碼安全存取功能)
- 內建了對ODBC和Oracle資料庫的支援
2005年 11/7 .NET 邁入2.0架構(目前多數基礎)
【完整版號 - 2.0.50727.42】
和Visual Studio 2005、Visual Web Developer Express與SQL Server 2005一起發表。
- 新的資料控制項(GridView、FormView、DetailsView)
- 新的宣告式資料存取技術(SqlDataSource、ObjectDataSource 與 XmlDataSource 控制項)
- 導覽控制項(SiteMap、Menu、TreeView)
- 主版頁面 (Master Page)
- 登入控制項
- 主題
- 表皮 (skin)
- Web 部件 (Web Part)
- 個人化服務 (Profile)
- 全功能的預先編譯能力
- 全新的當地語系化技術
- 支援64位元平台
- 提供者類別模式
2007年 11/19 .Net 3.5
與Visual Studio 2008和Windows Server 2008一起發表
- 新資料控制項(ListView、DataPager)
- ASP.NET AJAX 含入至 .NET Framework,成為.NET Framework的一部份
- 提供支援 LINQ 的 LinqDataSource 控制項
- 包含一個支援C#和VB.Net中心的語言特性的編譯器,以及對語言整合查詢(LINQ, Language-Integrated Query)的支援
2008年 8/11 .Net 3.5 Service Pack 1
Visual Studio 2008 Service Pack 1 發表
- 內含ASP.NET Dynamic Data
- 在 ASP.NET AJAX 應用程式中支援瀏覽器歷史控制 (controlling browser history)
- 將多個JavaScript檔案合併到單一檔案以強化有效的下載
2010年 4/12 .Net 4.0
與Visual Studio 2010一起發表
- 配合.NET Framework 4.0讓Web應用程式具有如並列運算函式庫(Parallel Library)等新功能。
- ASP.NET MVC 2.0
- jQuery完全整合與ASP.NET AJAX Client Library 強化,以及 AJAX CDN 的支援。
- ASP.NET 的 Render Compatibility (3.5以前版本或4.0版),可控制許多 ASP.NET Web 控制項的繪製行為,以配合標準 HTML 與 jQuery 的處理。
- SEO的支援。
- 自訂快取提供者 (Extensible Output Cache)。
- QueryExtender 的支援。
- CSS 控制行為的變更。
- 自訂的 Client ID 輸出。
- ViewState 的控制。
- 配合 Visual Studio 2010 的 Web Deploy 工具。
- Entity Framework 4.0 的支援。
- 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 概念有點像)
伺服器端應用程式的熱門開發工具技術
- 在 IIS 與 Web 伺服器中的訊息流動階段
- 在 ASP.NET 網頁中的訊息分派
- 在 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
留言
張貼留言