【AaronYang第一講】ASP.NET MVC企業開發的基本環境[資源服務器概念]


學完了ASP.NET MVC4 IN ACTION 六波以后 企業開發演習

標簽:AaronYang  茗洋  EasyUI1.3.4   ASP.NET MVC 3

本篇博客地址:http://www.cnblogs.com/AaronYang/p/3324014.html

開發准備(AaronYang原味)

1你需要從EasyUI官網下載最新的EasyUI,我用的是EasyUI 1.3.4 (百度雲下載)你可以從這里進入官網下載

2既然是覺得有企業味道,公司發布產品使用最后都是通過域名訪問我們做的產品,為了模擬域名的訪問模式,我們需要修改host,這里我使用 SwitchHost(百度雲下載)

3我跟大家一樣,窮屌絲。有一台自己的馬馬虎虎的小筆記本本就夠了。所以很多編程實驗,我只能簡單模擬,但會提供嘗試的方向

來這里學習,簡單的ASP.NET程序寫好后,發布讓web可以在局域網訪問,這里應該都會的,假設你會了吧。很多初學者寫項目,都喜歡直接把圖片,js文件,樣式文件直接在項目中建對應的文件夾放着。但是企業的項目,可能有很多很多的項目。所以此時我們需要一個資源服務器,把常用的多個系統公用的資源放到上面,然后通過鏈接訪問得到資源。這個服務器你可以是Linux的,也可以是windows的,本人linux不怎么樣,所以還是微軟的iis部署吧,你也可以用其他的web服務器,比如Apache,tomcat。這里只是提供一種分離的思想。放到不同的服務器上,讓服務器術業有專攻。不同的硬盤對應的讀寫的速度都不一樣,有的讀速度快,有的寫快,寫的快的服務器,我們可以做,比如說日志服務器,這里我們可能需要對硬盤的讀的要求高點,我們普通的demo當然不會有壓力測試的,所以沒事
接下來你需要想一個你的域名,我直接用我的域名了,例如http:// www.yyang.com,當然這個域名不存在的。但是通過SwitchHost,我們可以模擬出來。接下來,我的資源服務器域名就叫 http://res.yyang.com
對於資源服務器,可能你的網站圖片是重點,且訪問叫頻繁,所以你可以在單獨分出來一個例如 http://image.yyang.com來減小服務器壓力,單獨特殊處理。
我在D盤新建了一個文件夾,直接叫yyang了
image
接下來,我們新建一個空的ASP.NET網站,這里我沒有用MVC,我覺得ASP.NET就夠了,當然你也可以PHP,隨便了
這里我取了個Yyang.Res.Web作為這個項目的名字
image image
接下來,新建幾個文件夾- image,css,js,res
再建立一個空的頁面 Default.aspx,寫上簡單的你的大名
image image
按下F5,我們試下能不能運行
image
接下來,我們打開下載好的Easyui1.3.4
我只是刪掉簡單的txt文件。其實demo,api,我們根本就不要的,你可以選擇刪掉,或者不刪掉。我只是覺得初學的時候,對EasyUI不熟悉的可以參考學習下,所以沒有去掉,這里已經包括了jquery包,所以不想在放其他的jquery包到項目中去了
image
拷貝該文件夾到項目的res文件夾去,當然你自己隨便怎么好管理怎么放。我們運行項目,直接訪問easyui的demo頁面
image image
image
都可以了,我們可以把這個項目部署到IIS上

4基本部署方法

打開IIS管理器,運行窗口輸入inetmgr,前提 操作系統中裝了 IIS
(開始> 控制面板>程序>打開或關閉Windows功能 wps_clip_image-13252>里面的全部選中然后確定 即可安裝)
1.4.1.  開始發布
我們可以在D盤建立一個wwwroot的文件夾,專門用來放發布好的項目
然后在wwwroot中新建一個 res.yyang.com的文件夾,用來放資源系統的網站
發布web22
image但是似乎沒有image等空文件夾
我們可以在image文件里放一個logo,在css和js放一個空的css文件和js文件,然后重新發布
我的css代碼如下:
 
@charset "utf-8";
/*
 * 將具有默認margin和padding的標記置零
 * @overlay *
 * @desc    所有標記的margin、padding都在使用時具體定義
 */
*{margin:0;padding:0;}
/*
 * 修正IE5.x和IE6的斜體溢出bug
 * @bugfix
 * @css-for IE 5.x/Win, IE6
 */
* html body{
overflow: visible;
}
* html iframe, * html frame{
overflow: auto;
}
* html frameset{
overflow: hidden;
}

/* @group 常用標簽 */
/*
* 基本標簽默認樣式取消
* @overlay HTML標簽
* @desc 取消基本標簽默認樣式,防止不同瀏覽器顯示效果不同
* @Prop text-align:center; 解決不同瀏覽器劇中問題
*/
body{color:#000;background:#fff;font:12px/22px Verdana,Arial,sans-serif,"Times New Roman",宋體;text-align:center;}
body,ul,ol,li,p,h1,h2,h3,h4,h5,h6,form,fieldset,table,td,img,div,tr{margin:0;padding:0;}
input,select{font-size:12px;vertical-align:middle;}
/*
* 設置內容左對齊
* @overlay div
* @desc 恢復因BODY設置劇中產生的繼承
*/
body div{text-align:left;}

/*
* 標簽屬性
* @overlay textarea,input
* @desc 強制輸入時內容超出時換行
*/
textarea,input{    word-wrap:break-word;word-break:break-all;padding:0px;}
/*
* 清除ul列表標記的樣式
* @overlay li
* @desc    ul列表更多的用在不需要列表前置符號的樣式里
*/
li{list-style-type:none;}
/*
* 定義圖片邊框
* @overlay img
* @desc    當圖片作為鏈接內容被填充時,會有默認邊框出現,重定義掉
*/
img{border:0 none;}
/*
* 定義默認的鏈接樣式
* @overlay a
* @desc    僅僅是作為默認樣式提供,可以在各自的實例中覆蓋掉
*/
a:link, a:visited{
color:#000;
text-decoration: none;
}
a:hover{
color:#F60;
text-decoration: underline;
}
/* 去掉鏈接的虛線框 */
/* a {outline: none; a {star:expression(this.onFocus=this.blur()); */  

/*
* 定義H系列標簽
* @overlay HN
* @desc 覆蓋H系列標簽默認屬性
*/
h1{ font-size:24px;}
h2{ font-size:20px;}
h3{ font-size:18px;}
h4{ font-size:16px;}
h5{ font-size:14px;}
h6{ font-size:12px;}

/* @end */


/* @group 通用屬性定義 */
/* 鼠標樣式 */
.pointer{cursor:pointer;}
/* 取消邊框 */
.NoBorder{border:0 none;}
/* 文本對齊方式 */
.t-l{text-align:left;}
.t-c{text-align:center;}
.t-r{text-align:right;}

/*
* 字母和單詞換行設置
* @class Break 強制內容換行
* @class Nobreak 強制內容不換行
*/
.Break{word-break:break-all;word-wrap:break-word;}
.Nobreak{word-break:keep-all;word-wrap:normal;}

/* 浮動定義 */
.FL{float:left;}
.FR{float:right;}

/* 定義文本下划線 */
.UnLine{text-decoration:underline;}
.DisunLine{text-decoration:none;}

/* 定位關系 */
.absolute{position:absolute;}
.relative{position:relative;}

/* 下划點虛線 */
/*
.dotLine{ background:url(../image/dot01.gif) repeat-x left bottom;}
*/


/* ul列表
.ul-fl li{
float:left; height:23px; line-height:23px; padding-left:20px;
}
.ul-fl-d li{
float:left; height:23px; line-height:23px; background:url(../images/dot/dot3-3.jpg) no-repeat 8px 10px; padding-left:20px;
}
.ul-no-f li{
height:23px; width:100%; overflow:hidden; line-height:23px; background:url(../images/dot/dot3-3.jpg) no-repeat 8px 10px; padding-left:20px;
}
*/
/* @end */  


/* 通用容器 */
.wrapper{
clear: both;
overflow: hidden;
}

/* @group 隱藏元素 */

/*
* 隱藏元素
* @class o-hidden
* @desc 當元素內容內容超出元素height 或 width 時,隱藏之
*/
.o-hidden{overflow:hidden;}
/*
* 隱藏元素
* @class invisible
* @desc    visibility可以隱藏元素,但是還是會在布局中占位
*/
.invisible{
visibility:hidden;
}

/*
* 從頁面布局上隱藏元素
* @class hidden
* @desc    從布局上隱藏元素
*/
.hidden{
display: none;
}
.block {display:block;}
/* @end */

/*
 * 清理元素
 * @class clear
 * @desc    清理浮動元素,當浮動換行時后面元素不希望浮動,添加此屬性,防止IE BUG
 */
 .clear{clear:both; height:0px; width:100%; font-size:1px; line-height:0px; visibility:hidden; overflow:hidden;}
 


/* 常用樣式定義 */

/*
* 邊框定義
* @Pro 由大寫B開頭,表示系統公用邊框樣式
* @desc 常用樣式可更具一個項目的樣式使用頻率重新定義,擴展
*/
.BTW{ border-top-width:1px;}
.BRW{ border-right-width:1px;}
.BLW{ border-left-width:1px;}
.BBW{ border:0px; border-bottom-width:1px;}
.Bord1{border:1px solid #999;}
.Bord2{border:2px solid #999;}

/* 邊框寬度 (BW開頭) */
.BW1{ border-width:1px;}
.BW2{ border-width:2px;}
.BW3{ border-width:3px;}
.BW4{ border-width:4px;}
.BW5{ border-width:5px;}
/* 邊框樣式 (Bs開頭) */
.BsS{ border-style:solid;}
.BsD{ border-style:dotted;}
/* 邊框顏色 (Bc開頭) */
.BcBlue{ border-color: #0000FF;}
.BcBlack{ border-color: #000;}
/* 下划線 */
.BotLine{ border-bottom:1px solid #CFCFCF; overflow:hidden;}
/*.BotDotLine{ background: url(../image/dot01.gif) repeat-x left bottom;}*/
.BotDotLine01{ width:95%; margin:0 auto; background: url(../image/dot01.gif) repeat-x; height:1px; line-height:1px; overflow:hidden;}
/*.BotDasLine{ border-bottom:1px dashed #CFCFCF; overflow:hidden; height:1px; line-height:1px;}*/
/*.border-r-dot{ background:url(../image/dot02.gif) repeat-y right top;}*/

/*
* 寬度定義
* @Pro 由小寫C開頭,表示color
* @desc 常用樣式可更具一個項目的樣式使用頻率重新定義,擴展
*/
.W1024,.W786,.W975,.W972{width:968px;margin:0 auto;}
.W1024{width:1024px;}
.W786{width:786px;}
.W975{width:975px;}
.W972{width:972px;}

/*
* 顏色功能定義
* @Pro 由小寫C開頭,表示color
* @desc 常用樣式可更具一個項目的樣式使用頻率重新定義,擴展
*/
.cRed{color: #F00;}
.cWhite{color: #FFF;}
.cGreen{color:#0F0;}
.cGray{color: #666;}
.cBlue{ color: #00F;}
.cblack{ color:#000;}
/* 定義某個項目常用顏色 */
.c001{color:#663;}

/*
* 定義字體樣式
* @Pro 由大寫字母F開頭,表示FONT
* @desc 常用樣式可更具一個項目的樣式使用頻率重新定義,擴展
*/

/* 字體樣式 */
.FB{font-weight:bold;}
.FN{ font-weight:normal;}
.FI{font-style:italic;}
/* 字體大小 */
.F10{font-size:10px;}
.F11{font-size:11px;}
.F12{font-size:12px;}
.F13{font-size:13px;}
.F14{font-size:14px;}
.F16{font-size:16px;}
.F18{font-size:18px;}

/*
* 定義間距,上下2個DIV間距
* @Pro 使用DIVH開頭.
* @desc 上下DIV有間距時使用,盡量不使用margin/padding值,防止不同瀏覽器出現BUG,
*     使用下面屬性可兼容大多瀏覽器.
*/
.DivH5,.DivH10,.DivH15,.DivH20,.DivH25,.DivH30,DivH1,.DivH40{width:100%;overflow:hidden;}
.DivH1{ height:1px;}
.DivH5{height:5px;}
.DivH10{height:10px;}
.DivH15{height:15px;}
.DivH20{height:20px;}
.DivH25{height:25px;}
.DivH30{height:30px;}
.DivH40{height:40px;}

/*
* 定義行高
* @class LH
* @desc 使用較少,主要定義line-height屬性
*/
.LH1{ line-height:1px; }
.LH10{ line-height:10px; }
.LH15{ line-height:15px; }
.LH18{ line-height:18px; }
.LH20{ line-height:20px; }
.LH25{ line-height:25px;}
.LH30{ line-height:30px;}
.LH35{ line-height:35px;}

/*
* 標題樣式定義
* @Pro PTit
* @desc 在定義p標簽元素或其它元素時,需要同時定義行高和高度,一般使用在標題顯示中.
*/

.PTit25,.PTit20,.PTit18,.PTit30,.PTit,.PTit1,.PTit22{    width:100%;    overflow:hidden;}
.PTit30{line-height:30px;height:30px;}
.PTit25{line-height:25px;height:25px;}
.PTit22{line-height:22px;height:22px;}
.PTit20{line-height:20px;height:20px;}
.PTit18{line-height:18px;height:18px;}
.PTit15{line-height:15px;height:15px;}
.PTit10{line-height:10px;height:10px;}
.PTit1{line-height:1px;height:1px;}

/*
* MORE更多樣式設計
* @Pro MORE
* @desc 顯示在右側更多/MORE樣式,可根據需求擴展
*/

.More{text-align:right;position:absolute; top:0; right:3px;}
.MoreR5{ position:absolute; top:0px; right:3px; font:12px normal; }
.MoreR15{ position:absolute; top:0px; right:15px; font:12px normal;}

/*
* 普通列表樣式定義
* @desc 文章列表樣
* @use 一般列表使用,ul li列表
*/
.ArtList,.ArtList25,.ArtList22,.ArtList24{ width:100%; overflow:hidden; margin:0 auto;}
.ArtList li{ width:100%; height:20px; line-height:20px; overflow:hidden;}
.ArtList25 li{ width:100%; height:25px; line-height:25px; overflow:hidden;}
.ArtList24 li{ width:100%; height:24px; line-height:24px; overflow:hidden;}
.ArtList22 li{ width:100%; height:22px; line-height:22px; overflow:hidden;}

/* @end */



/* 備注 */
/*在終極頁面中調用該通用樣式時,應該注意顯示效果的不同,因為后台上傳信息時編輯器里面樣式並沒有調用本默認樣式表.
 *
 *所以在編輯器中標簽會有默認的屬性,用戶在添加信息時,這些信息都是附帶默認樣式的.
 *如果用我們在終極頁面也調用本默認CSS文件的話,許多標簽如:p,td,li......標簽默認樣式都被取消,因此顯示效不同.
 *
 *解決辦法:
 *    在終極頁面顯示內容區域還原這些標簽的默認屬性.
 *
 */
  
 /*
 ul,ol,li,p,h1,h2,h3,h4,h5,h6,form,fieldset,table,td,img,div,tr{ margin:auto; padding:inherit;}
 input,select{ font-size:inherit;}
 img{border: inherit;}
 ul,li{margin:auto; padding:inherit;}
 li{
list-style-type:disc;
 }
*/
CSS通用樣式集合

Logo我直接使用博客園的了

logo

js我直接新建一個空的js文件commom.js

完成后,我們重新發布一下

imageimage

打開IIS管理器 (Win+R  輸入inetmgr也可以打開)

imageimageimage

完成后,我們打開瀏覽器輸入

http://res.yyang.com/res/jquery-easyui-1.3.4/index-demo.html

發現運行不了,因為這個域名根本不存在,此時我們需要switchhost的幫助

打開Switchhost.我們先建立一個 開發的host環境,刪掉默認的方案一,方案二,添加一個開發方案

imageimage

一個開發嚴格的公司,往往有好幾台服務器,一個產品的發布都要經過好幾個服務器環境的測試才可以驗收

一台開發環境服務器,一般都是自己電腦(127.0.0.1),一台基本測試服務器(例如192.168.10.110),另一台測試服務器(例如192.168.10.120),最后一台測試服務器是跟真實部署環境比較像的服務器環境,我們叫P版環境(例如192.169.10.188),最后就是真實的最終要使用的發布的服務器環境了。我們在建立幾個方案,當然這里很多開發者只有一台電腦,我建議還是不要用虛擬機,哎,我的電腦配置不好。。。開虛擬機會卡卡滴。有條件的多買幾個電腦,模擬公司的開發環境。(為了實踐更多的技術,我必須努力賺錢買自己的電腦,我的目標,今年買3台電腦,當然不是服務器級別的了,加油!!!)

imageimage

雙擊某個方案,就可以立即切換環境。我們雙擊開發環境,添加如下host配置

127.0.0.1 www.yyang.com
127.0.0.1 res.yyang.com

 

此時我們打開瀏覽器,輸入:

http://res.yyang.com:1001/res/jquery-easyui-1.3.4/index-demo.html

效果會如下:

image

這就是Switchhost的作用,我們以后在代碼獲得域名的時候,就不會是什么localhost了,與真實的環境更接近。

接下來,我們訪問默認的Default.aspx頁面

image

很明顯,.net framework沒有對的上,解決方法如下:

image

image

此時刷新瀏覽器,會有如下的錯誤

image

解決辦法:

image

image

修改成

image

此時,我們輸入res.yyang.com:1001/default.aspx或者 res.yyang.com:1001都可以訪問我們一開始的初始頁面

imageimage

imageimage

此時我們訪問圖片資源和樣式資源,還有js文件資源都可以訪問了

其實這里我講多了,其實我們只需要能訪問基本的資源文件就夠了,aspx頁面都不要能否訪問到都可以,這里只是為以后的ASP.NET MVC發布做簡單的引入。為了安全起見,我們還是不要讓訪問者可以訪問其他資源吧

關於發布,還有兩個地方順便講一下:

image

打開默認文檔,我們刪掉里面的默認頁面default.aspx頁面,這樣子

當我們輸入 res.yyang.com:1001 的時候,由於沒有指定默認的頁面,所以服務器會禁止訪問,但是其他靜態資源我們都可以訪問的

image

此時訪問,會出現403

image

我們此時如果想讓開發者查看到 easyui下的目錄結構,但是也是被禁止的

image

我們可以通過如下修改,就可以讓開發者看到了,但是這樣子往往是不安全的,這里我們還沒用到真實環境給人家用,我們只是自己用,所以打開,我們有時可以看看easyui目錄的結構,然后可以針對性的打開demo學習

image

image

單擊啟用后,勾選長日期,不勾選也沒事。然后點擊應用,就可以了

image

刷新瀏覽器:

image

作為一個嚴格的資源服務器,是禁止顯示目錄結構,但這里我們只是自己用,當然你隨時可以關掉目錄瀏覽的權限

 

作為一個資源服務器,特殊文件格式的文件的訪問的需求,我們還是要滿足的,例如 .json格式的文件,企業里有的都是把json文件后綴名直接變成js格式的來避免

我們試圖瀏覽到如下目錄

http://res.yyang.com:1001/res/jquery-easyui-1.3.4/demo/accordion/

image

當我們單擊.json文件時候,發現禁止訪問

image

解決方法:

image

 

image

 

imageimage

刷新瀏覽器:

image

此時,我們已經可以訪問 第三方格式的文件了。我們的MVC項目就可以通過Get請求方式獲得資源服務器資源,然后解析了

關於IIS  資源服務器 發布就到這里結束了,以后我們還需要一個文件服務器,以后再說吧

 

 

相關代碼下載:   點我下載
 

在下一講里面我們主要講搭建 第一個使用EasyUI1.3.4 的ASP.NET MVC3企業項目使用和特別事項,還有些企業的忌諱。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM