本文主要内容是通過分析《部落格系統》需求,确定使用Web應用的形式來開發,然後介紹了HTML、HTTP的概念,并使用IIS搭建了一個靜态的HTML“頁面”,進而引出“動态”的ASP.NET。
本文從以下幾個方面來介紹為什麼使用ASP.NET:
●ASP.NET是什麼?
●為什麼使用ASP.NET?
●部落格的需求及實作
●什麼是Web、HTML、Web伺服器
ASP.NET是一個使用HTML、CSS、Javascript來建構動态網站或者網站應用程式的Web架構,并且也可以使用它來建構web API和實時通信技術如web soket。
ASP.NET提供了三種架構來建立網頁應用,它們分别是Web Forms,ASP.NET MVC以及ASP.NET Web Pages,它們都是基于.Net Framework并且共享.Net和ASP.NET核心功能。如基于Identity的安全驗證、相同的請求管理設施、session處理以及ASP.NET的一部分核心功能。
最重要的是這三個架構并不是獨立的,它們可以混合出現在同一個Web應用中。
Web Forms為開發者提供了豐富的使用HTML标簽封裝的元件。開發者可以使用這些控件像開發Win Forms應用那樣拖拽式控件并通過事件來驅動(點選按鈕事件、打開頁面事件等)。
ASP.NET MVC提供了一種責任分離的開發模式,它将HTML代碼和服務代碼進行了分離,是一種TDD友好的開發方式,可以用于複雜應用程式的開發。
ASP.NET Web Pages和Razor文法提供了一種快速、簡單、輕量級的方法,它将服務代碼和HTML混合在一起來建立動态Web内容。
Web APIs:
ASP.NET Web API是一個用來建構基于HTTP服務的架構,可以為浏覽器、移動裝置等用戶端提供服務。
實時技術:
ASP.NET SignalR是ASP.NET的一個類庫用來開發實時的Web功能,SignalR支援用戶端和伺服器之前的雙向通信,SignalR支援Web Socket,如果浏覽器不支援那麼會自動切換其它方法來相容浏覽器,如輪詢請求等。
需求,需求,需求!!!
相對于需求來說,ASP.NET等開發架構僅僅是用來實作需求的工具。在做一件事情之前必須明确自己想要的是什麼。比如我們想分享自己寫的文章,這樣即可以分享自己的知識,也可以吸引同行業的人進行讨論進而找到自己存在的問題,而且在寫文章的過程中也鞏固了自己的知識。
要如何實作這樣一個需求有什麼方法呢?現在是資訊時代,發送、分享消息的成本是非常低的,比如現在的QQ空間、朋友圈、微網誌、部落格等等,都可以輕松的新增賬號釋出資訊,但是對于文章來說隻有部落格适合,并且現在像cnblog的部落格都是面向程式員的,能更容易吸引程式員的關注和對文章的讨論。但作為一個程式員是否都想擁有自己的部落格呢?
本系列文章将使用建構部落格這個例子來講訴如何使用ASP.NET開發應用程式。
對于部落格來說,兩個重要的對象分别是“讀者”和“作者”,對于一個讀者來說就是需要一個目錄,然後通過目錄标題可以快速了解目錄所指向文章内容,并且包含标題所指向的文章位址。這不就是一本書嗎?(*^_^*)。
當然我們的确可以把文章做成一本書供讀者檢視,甚至更為友善的電子書,但是對于文章的作者來說,作者寫的僅僅隻是文章,并且分類衆多,且文章之間不一定存在聯系無法合成一本書,或者需要合并為多本書,更重要的是作者無法等到所有文章完成之後再釋出,如果每寫一篇文章都要更新一本書,那麼對于讀者來說每次都要重新購買、下載下傳最新的書簡直就是災難。
是以對于作者來說,需要一個便于釋出、修改文章的平台,甚至當文章完成一個系列的時候還可以做成一本書供讀者下載下傳。對于讀者來說,需要提供一個便捷的入口,讓其可以檢視文章目錄,并通過目錄檢視文章内容。更多的可能還需要對一些熱門文章進行突出顯示,讓更多的人參與評論。
根據上面的分析得出以下用例圖:

http://www.cnblogs.com/Yogurshine/archive/2013/01/14/2859248.html(用例圖參考)
我們要如何實作這些功能呢?
● 出版書籍
● 網際網路釋出
○ 指令行程式(無法提供便捷操作,也不利于文章檢視)
○ Windows Form程式(可以提供便捷的檢視和釋出功能,但是讀者和作者都需要下載下傳安裝用戶端,對于讀者來說太麻煩)
○ Web(讀者和作者均隻需要浏覽器就可以連接配接系統,通過浏覽器就可以實作檢視和管理功能)
○ 移動應用(為IOS、Android、Windows等移動系統提供應用可以為讀者提供最便捷的閱讀體驗,但是不友善作者編輯文章,而且需要耗費大量經曆來開發不同作業系統的應用。更重要的是智能移動裝置上也有浏覽器,它也可以打開Web應用,特别是針對移動裝置處理過的響應式頁面布局,能夠為不同螢幕大小的裝置提供更好的閱讀體驗。)
是以根據以上的分析我們很容易的選出使用“Web”來實作我們的部落格。那什麼是Web呢?它和ASP.NET又存在什麼關系?
Web(World Wide Web)即全球廣域網,也稱為網際網路,它是一種基于超文本和HTTP的、全球性的、動态互動的、跨平台的分布式圖形資訊系統。是建立在Internet上的一種網絡服務,為浏覽者在Internet上查找和浏覽資訊提供了圖形化的、易于通路的直覺界面,其中的文檔及超級連結将Internet上的資訊節點組織成一個互為關聯的網狀結構。(來自百度百科)
根據以上的解釋可以看到Web是基于超文本和HTTP的。然後提供了很多功能,這裡我們來關注什麼是超文本,什麼是HTTP。
超文本:是一種使用者接口範式,用以顯示文本及與文本相關的内容。現時超文本普遍以電子文檔的方式存在,其中的文字包含有可以連結到其他字段或者文檔的超文本連結,允許從目前閱讀位置直接切換到超文本連結所指向的文字。
超文本的格式有很多,目前最常使用的是超文本标記語言(Hyper Text Markup Language,HTML)及富文本格式 (Rich Text Format,RTF)。我們日常浏覽的網頁上的鍊結都屬于超文本。(來自百度百科)
簡單的了解超文本就是拿來顯示的,是可以通過超連結跳轉的,并且常用的超文本格式是超文本标記語言,浏覽器可以打開、檢視HTML檔案。
根據上面對Web的描述可以得出:浏覽器可以打開HTML檔案,HTML檔案包含了文本資訊和跳轉指定HTML的連接配接,這樣我們就可以解決讀者的問題了。
那麼就開始動手解決:
1. 建立一個檔案目錄HTML檔案(超文本标記語言的結構包括“頭”部分(英語:Head)、和“主體”部分(英語:Body),其中“頭”部提供關于網頁的資訊,“主體”部分提供網頁的具體内容。--百度百科):
2. 建立4個文章HTML檔案:
3. 在清單頁面把4個文章頁連結起來:
“作者”的基本功能“文章管理”就“實作”了,對于作者來說隻需要維護文章目錄的list.html檔案,然後把文章做成新的post html檔案就可以了,然後把這些頁面進行美化就完成了“作者”的文章管理功能。
但是“讀者”要如何看到這些文章?之前提到過Web是基于超文本和HTTP的,HTML是超文本的一種用來顯示内容,而現在需要把這個内容發送給“讀者”檢視就需要使用的HTTP。
HTTP協定(HyperText Transfer Protocol,超文本傳輸協定)是用于從WWW伺服器傳輸超文本到本地浏覽器的傳輸協定。它可以使浏覽器更加高效,使網絡傳輸減少。它不僅保證計算機正确快速地傳輸超文本文檔,還确定傳輸文檔中的哪一部分,以及哪部分内容首先顯示(如文本先于圖形)等。
HTTP是用戶端浏覽器或其他程式與Web伺服器之間的應用層通信協定。在Internet上的Web伺服器上存放的都是超文本資訊,客戶機需要通過HTTP協定傳輸所要通路的超文本資訊。HTTP包含指令和傳輸資訊,不僅可用于Web通路,也可以用于其他網際網路/内聯網應用系統之間的通信,進而實作各類應用資源超媒體通路的內建。---百度百科
HTML使用HTTP協定在用戶端浏覽器和Web伺服器之間傳輸。這個就是以上文字給出的資訊。現在HTML和浏覽器都已經有了,還缺一個Web伺服器。
Web伺服器一般指網站伺服器,是指駐留于網際網路上某種類型計算機的程式,可以向浏覽器等Web用戶端提供文檔,[1] 也可以放置網站檔案,讓全世界浏覽;可以放置資料檔案,讓全世界下載下傳。目前最主流的三個Web伺服器是Apache、Nginx、IIS。-- 百度百科
在windows上常用的Web伺服器就是IIS。(如何安裝IIS:https://jingyan.baidu.com/article/eb9f7b6d9e73d1869364e8d8.html)
這裡選用Windows上的IIS來部署上面寫好的HTML檔案:
1. 打開IIS,添加一個網站:
2. 給新的網站指定實體檔案的路徑(即剛剛建立的html檔案路徑),綁定端口儲存并啟動改網站:
在浏覽器中可以通過本機的回環位址127.0.0.1或者localhost以及區域網路IP(可能需要在防火牆中設定綁定端口的通路權限:控制台->系統和安全->Windows 防火牆->進階設定->入站規則->建立規則->端口->TCP、特定本地端口、12345->完成)來通路該網站:
以下是在同一區域網路手機上的顯示:
從上面的結果看起來好像部落格的隻剩下頁面優化了,那還需要ASP.NET幹什麼?接下來細數一下上面做法的缺點:
1. 作者每次釋出文章都需要制作HTML檔案,修改内容也需要修改HTML檔案,檔案越多管理越難。并且作者還需要懂得HTML相關知識。
2. 如果要修改頁面的樣式100個檔案修改100次。
3. 無法統計文章通路的次數(當然可以通過分析IIS 日志獲得)。
4. 也無法為使用者提供評論功能。
5. 功能無法拓展更多的功能,等等。
文章的開始說了:ASP.NET是一個使用HTML、CSS、Javascript來建構動态網站或者網站應用程式的Web架構。
使用ASP.NET可以輕松的建構一個“動态”網站,所有資料都存在資料庫中,通過一個清單模闆頁面從資料庫中加載文章清單、通過一個文章模闆頁面去資料庫加載相應的文章顯示、添加一個管理頁面為作者提供文章管理功能、最後通過身份驗證機制限制隻能由作者進入管理頁面,那麼以上的問題将引刃而解。更重要的是還可以通過ASP.NET提供的一些機制完成對部落格的功能拓展如閱讀資料記錄、排序、評論等等。是以使用ASP.NET作為開發部落格程式的開發架構。
(注:除了ASP.NET也可以使用PHP、JSP、NodeJS等開發架構完成以上功能,而且作為一個demo不需要考慮很多複雜的問題,是以選擇ASP.NET的真實原因是“我喜歡,我任性!”。)
參考:
https://docs.microsoft.com/zh-cn/aspnet/overview
本文連結:http://www.cnblogs.com/selimsong/p/7645094.html
ASP.NET沒有魔法——目錄
作者:7m魚
出處:http://www.cnblogs.com/selimsong/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。