我在第一次接觸.NET時候隨便整理的資料 .NET C# MVC

來源:互聯網
上載者:User
net是什麼?首先 他是一個環境.其不光可以實現開發 控制台應用程式 web 應用程式,windows應用程式,移動開發,web service開發 分布式開發 伺服器與用戶端開發 水晶報表開發而且將來可以實現將分布在不同地方的電腦群組共同合作開發其次 其核心 :CLR和龐大的類庫.CLR(通用語言運行時)為程式運行提供服務,例如:記憶體管理,線程管理,代理管理,安全管理,垃圾管理,錯誤修正功能,提升程式運行速度.當然NET還支援非受控代碼也就是其不受CLR管理,這樣就不能享受CLR提供的安全 垃圾等一些服務.第三:NET有一個龐大的野心:也是NET的設計核心概念:也就是分布式的發展  ,從單機 用戶端/伺服器模型 和web網站的方式向分布式方向發展,通過跨平台,與無言無關的soap協議,web服務,把各種不同功能的介面由在軟體的一個組件中提升到網路上,從而實現了分布式開發,使用"服務"第三:NET其實只有一種語言:MSIL(microsoft中繼語言),但其卻支援20多種語言,而且msil是開源的,也就是說只要開發出相應的轉換程式 就可以支援任意的語言  架構學習:垃圾管理 :managed Heap 受控堆程式集:自描述的主體中繼資料  裝載卸載方便  版本控制  dell地區  安全性:GUID 延遲簽名 應用程式定義域比曆史上進程的優點:曆史上 進程是隔絕每個應用程式的 ,如果進程間要交換資料,可以通過代理應用程式定義域:1一個進程可以有多個應用程式定義域,這樣一個應用程式定義域出錯,不用關掉整個應用程式,只需關掉出現錯誤的應用程式定義域,然後重新載入2一個應用程式定義域中的錯誤不會影響其他應用程式定義域3一個應用程式定義域不能訪問另一個應用程式定義域,可以通過拷貝應用程式定義域中的需要用到的對象來訪問一個應用稱西域(本地訪問)還可以通過代理的方法 實現遠端存取4程式集與應用程式定義域: 程式啟動並執行時候先載入 程式集,可以把一些對象經常使用的封裝稱共用組件,裝載到一個中立應用程式定義域中,這樣所有的程式都可以訪問      載入到中立應用程式定義域中,而不是都載入,這樣節省了記憶體空間5:應用程式定義域與線程1微軟打算用270億美元來傳播 .netnet出發點就是分布式,2webService就相當於是API函數,或者類的方法的介面,只不過 其不是分布在軟體的不同部分中 而是分布在不同的網路上 3實現了 software as service  軟體即服務 的理念   以後可以把軟體分布在網路上,根據需要訂購不同功能的"服務 4 soap 和 web服務 成為.net的核心 web服務定義: 是一種自描述,自包含,模組化的應用,可以為web上其他應用程式調用 web服務三大協議: soap使用XML,這樣便屏蔽了平台之間的差異 使其與平台無關,與作業系統無關 soap:簡易物件存取通訊協定 (SOAP):soap 提供是在分布式系統中  wsdl web服務描述語言 DISCO :web服務發現協議  優點: 1平台無關性  對於服務要求者 與 服務提供者之間的互動 被設計成完全與平台無關  ,通過WSDL語言和現在平台都支援的HTTP協議來保證平台無關性  2Just in time integration  即時整合技術    DISCO確保探索服務 是自配置的,健壯的,其直接把請求服務與提供服務者綁定一起,     從而實現分布式,各人做個人的事情,而不存在一個主機了  3 封裝性,使用者只需只要服務的介面 就可以使用條用服務    webService體系:  部署Deploy:將web服務部署到web上,並使用WSDL描述  發布Publish:將web服務發布到web上,服務代理(Server Broker)協助服務提供者與服務要求者(Service Requestor)互相發現  返回:指代理處理使用者請求,並返回結果,然後將要求者與服務綁定(Bind),從而使得要求者可以調用服務  服務導向架構SOA:  三種角色:  Service Provider:發布服務  Service broker:註冊應經發布的Service Provider 並對其進行分類,並提供搜尋服務,方便Service requester尋找,  Service requester:  三種操作:  publish:Service Provider 向Service broker註冊自己的功能及其提供者  find: service requester通過Service broker尋找特定的功能的服務  bind:使Service requester 能夠真正使用web服務功能  web 服務平台是:  XML HTTP SOAP WSDL UDDI  未來會增加的:XMAL XLANG XKMS XFS  SOAP:Simple Object Access Protocol 簡易物件存取通訊協定 (SOAP):  定義了傳遞XML資料的方式,以及如何在底層通訊協定HTTP基礎上執行遠程調用(RPC)的方法  它有三個內容:  1XML-envelope:1定義了如何把一般資訊,資料描述成xml形式的資料,資訊  2遠程調用的約定:RPC  3HTTP  簡單的說SOAP=XML+RPC+HTTP 2UDDI:Universal Description Discovery and Integration :提供了描述 發現商務服務的架構     核心組件: UDDI商業註冊,其提供的資訊包含三個方面的內容:白頁:提供了地址,聯絡方法和已知的企業標示黃頁;提供了:基於標準分類法的行業類別綠葉:包括了該企業所提供的Web Service的技術資訊 3WSDL webService 定義語言:用於定義WebService, 描述一個WebService的功能,它在哪裡,如何調用等內容                UDDI描述了一個web Service的大部分方面,而UDDI可以看做是其一個子集                怎麼樣A地方的使用者明白B地方的web 服務是什麼意思呢,這是需要共同的標準來定義                IBM與MICROSOFT都支援WSDL作為WEB SERVICE的標準語言  4XLAN:資料庫中交易處理的傳統概念是:原子性 也就是要麼不做,要麼全做,在分布式系統中維持這種概念  即使用 兩項承諾的方式 處理事務;  XLAN是未來的方向:  XLAN概念:每一個動作都有一個互補的動作,例如取出100元,互補的就會存入100元,這項技術還在研究之中        例如對於這個簡單的web service: 其soap:  [WebMethod(Description = "返回兩個數的和")]    public int Add(int num1, int num2)    {        return num1 + num2;    }      請求時候:  Host是要請求的主機地址,  length是一個變數,會根據使用者輸入的int 數值的長度變化  表示請求的soap的總的位元組數  POST /vs2005/WEB%20SERVICE/WebService.asmx HTTP/1.1Host: localhostContent-Type: application/soap+xml; charset=utf-8Content-Length: length <?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">  <soap12:Body>    <Add xmlns="http://tempuri.org/">      <num1>int</num1>      <num2>int</num2>    </Add>  </soap12:Body></soap12:Envelope>HTTP/1.1 200 OKContent-Type: application/soap+xml; charset=utf-8Content-Length: length 響應的時候:返回結果給調用者,響應也是一個xml檔案<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">  <soap12:Body>    <AddResponse xmlns="http://tempuri.org/">      <AddResult>int</AddResult>    </AddResponse>  </soap12:Body></soap12:Envelope>  WSDL是對WeB SERVICE進行所有的描述的語言,可以讓不同平台,不同的公司能夠識別web service的功能,調用方法 等等一切資訊例如下面是對 兩數相加的 有關需要的參數的類型的描述部分:WSDL是xml-shema形式的定義檔案 - <s:element name="Add">- <s:complexType>- <s:sequence>  <s:element minOccurs="1" maxOccurs="1" name="num1" type="s:int" />   <s:element minOccurs="1" maxOccurs="1" name="num2" type="s:int" />   </s:sequence>  </s:complexType>  </s:element>- <s:element name="AddResponse">- <s:complexType>- <s:sequence>  <s:element minOccurs="1" maxOccurs="1" name="AddResult" type="s:int" />   </s:sequence>  </s:complexType>  </s:element> SOA:面向服務,與AJAX結合 可以實現一種飛躍 Web2.0技術 就是WEB SERVICE +AJAX  把網站上別人辛苦的東西 都聚集起來,用創新的思想整合成自己的網站,例如有一個網站,把baidu google 的搜尋結果 都放在自己的網站上,供使用者選擇,這樣使用者就直接瀏覽這個網站,其他很多 ,只要很好的創新 就可以設計出賺錢的web.2.0網站加入你有一個宏偉的網站目標,但是你一個人沒有這麼多經曆去做,我們就可以從別人做好的比較成熟的網站上提取我們需要的功能整合起來 組織成一個網站,這就是web 2.0AJAX不是新技術,但是 web2.0思想是新思想,只要創新就可以賺錢 Web 2.0AJAX RSS技術Web service  必須要學會定製服務,所以 底層的saop相關技術要學習實現自己的夢想必須要認真學習以上技術例如 網站的體育新聞來自sina不同的遊戲來自不同的遊戲主運行商然後把所有的資訊組織起來,一個網站整合所有的東西可以定製頁面,可以給使用者提供一個案頭 :現在案頭映像化介面 什麼檔案夾是在電腦上面,可以把電腦的相關技術 引入互連網例如 開啟一個網頁是各種 表徵圖, 我的電腦有我的檔案,完全由使用者自己組織,每一個人都有一個網路案頭,有開始菜單,對應於電腦的每一個方面都認真思考創新都可以 與當前的電腦關聯 還可以與遠端電腦關聯,遠程操作其他的電腦傻瓜化管理都可以  還有定製服務,還有添加功能,為使用者提供服務,遊戲裡面的攻略全部採用 魔獸世界的小表徵圖,開始菜單程式放置使用者定製的所有的功能開始菜單放置使用者常用,可以有虛擬桌面背景,音樂串連各大網站,每一個人都有一個管家,是用戶端的形式,一起組成一個網路電腦介面,每個人都有一個家真正讓使用者實現 開啟一個網站 不用再開啟其他任何網站,而且完全友好 由使用者自己管理自己需要的東西,1有索引的地方都要有RSS2當使用者輸入連絡人的時候 可以實現自動顯示以a開頭的所有人的名字,這是AJAX的一個應用3可以隨便的拖拽,在網頁上隨便拖拽某個圖形或者其他東西 這個也是需要的4網站推廣:炒作不錯  例如 以前 一個女的  描述一下  踩死貓,可以引起人思考的事件 AJAX設計模式”:<擁抱變化> 這本書 有設計模式的相關內容《人月神話》1重構2封裝(因為不同的瀏覽器使用不同的AJAX原理,所以必須要把一些技術封裝起來,AJAX封裝底層的一些瀏覽器的不同,使得開發人員不用寫這麼if語句.微軟幫我們設計號了)設計模式是軟體開發最流行的詞語,也是面試中最具誘惑的閃光點!軟體腐化的原因:--可維護性才是王道1過於僵硬?? 相反:要使軟體具有 可擴充性(新效能可以很容易加入系統)2過於脆弱?? 靈活性(修改不會波及其它)3複用率低?? 4粘度過高?? 可插入性(新功能容易加入系統(氣囊加入方向盤))解釋:過於僵硬、過於脆弱、複用率低、粘度過高的系統都必然導致可維護性的減弱。反過來,可擴充、可插入、靈活的設計是提高可維護性的基礎,但不一定能夠保證可維護性。 有些人開發的系統高度靈活,所有資料庫欄位都可以動態添加、刪除,表也可以動態構建。可以說靈活性高、可插入、可擴充性也很強。但導致代碼超級複雜,讀起來根本就找不到北,更不用說修改了。這時候,可維護性就顯得很低。甚至在維護代碼時,不小心觸動一些關鍵組件造成系統出現問題。  有時候我提倡為開發人員寫代碼(注意:不是注釋)。有些代碼不是給客戶用的,而是給開發人員用的。包括必要的錯誤定位工具,內部調試斷點,效能計數器等等。這些代碼可以協助提高系統的可維護性。  總之,可維護性是一個綜合的概念,任何人都無法預料客戶需求會發生什麼樣的變化,“未雨綢繆”和“亡羊補牢”都是提高可維護性的一個很好切入點。測試驅動開發以及契約式開發對提高可維護性也有不少協助。?提高系統可複用性的幾點原則:傳統複用:1. 代碼的粘帖複用2. 演算法的複用3. 資料結構的複用* 可維護性與可複用性並不完全一致應用下面原則可以調高程式的可維護性:一、 "開放-封閉"原則(OCP)Open-Closed Principle原則講的是:一個軟體實體應當對擴充開放,對修改關閉。二、 裡氏代換原則(LSP)Liskov Substitution Principle(裡氏代換原則):子類型(subtype)必須能夠替換它們的基底類型。三、?依賴倒置原則(DIP) 四、?介面隔離原則(ISP)五、?合成/彙總複用原則(CARP)六、?迪米特法則(LoD)一、 "開放-封閉"原則(OCP)要求我們在設計軟體的時候,應儘可能使軟體有擴充性,封閉性Open-Closed Principle原則講的是:一個軟體實體應當對擴充開放,對修改關閉。優點:??? 通過擴充已有軟體系統,可以提供新的行為,以滿足對軟體的新的需求,使變化中的軟體有一定的適應性和靈活性。??? 已有軟體模組,特別是最重要的抽象層模組不能再修改,這使變化中的軟體系統有一定的穩定性和延續性。生動的例子:例子:玉帝招安美猴王當年大鬧天宮便是美猴王對玉帝的新挑戰。美猴王說:"'皇帝輪流做,明年到我家。'只教他搬出去,將天宮讓於我!"對於這項挑戰,太白金星給玉皇大帝提出的建議是:"降一道招安聖旨,宣上界來…,一則不勞師動眾,二則收仙有道也。"換而言之,不勞師動眾、不破壞天規便是"閉",收仙有道便是"開"。招安之道便是玉帝天庭的"開放-封閉"原則。招安之法的關鍵便是不允許更改現有的天庭秩序,但允許將妖猴納入現有秩序中,從而擴充了這一秩序。用物件導向的語言來講,不允許更改的是系統的抽象層,而允許更改的是系統的實現層。二、 裡氏代換原則(LSP)Liskov Substitution Principle(裡氏代換原則):子類型(subtype)必須能夠替換它們的基底類型。反過來的代換不成立《墨子•小取》說:"娣,美人也,愛娣,非愛美人也……"娣便是妹妹,哥哥喜愛妹妹,是因為兩人是兄妹關係,而不是因為妹妹是個美人。因此,喜愛妹妹不等同於喜愛美人。用物件導向語言描述,美人是基類,妹妹是美人的子類。哥哥作為一個有"喜愛()"方法,接受妹妹作為參數。那麼,這個"喜愛()"方法一般不能接受美人的執行個體。三、?依賴倒置原則(DIP) 依賴倒置(Dependence Inversion Principle)原則講的是:要依賴於抽象,不要依賴於具體。簡單的說,依賴倒置原則要求用戶端依賴於抽象耦合。原則表述:抽象不應當依賴於細節;細節應當依賴於抽象;要針對介面編程,不針對實現編程。反面例子:  缺點:耦合太緊密,Light發生變化將影響ToggleSwitch。解決辦法一:將Light作成Abstract,然後具體類繼承自Light。 優點:ToggleSwitch依賴於抽象類別Light,具有更高的穩定性,而BulbLight與TubeLight繼承自Light,可以根據"開放-封閉"原則進行擴充。只要Light不發生變化,BulbLight與TubeLight的變化就不會波及ToggleSwitch。缺點:如果用ToggleSwitch控制一台電視就很困難了。總不能讓TV繼承自Light吧。解決方案二:?優點:更為通用、更為穩定。結論:使用傳統過程化程式設計所建立的依賴關係,策略依賴於細節,這是糟糕的,因為策略受到細節改變的影響。依賴倒置原則使細節和策略都依賴於抽象,抽象的穩定性決定了系統的穩定性。四、?介面隔離原則(ISP)介面隔離原則(Interface Segregation Principle)講的是:使用多個專門的介面比使用單一的總介面總要好。換而言之,從一個客戶類的角度來講:一個類對另外一個類的依賴性應當是建立在最小介面上的。過於臃腫的介面是對介面的汙染。不應該強迫客戶依賴於它們不用的方法。五、?合成/彙總複用原則(CARP)合成/彙總複用原則(Composite/Aggregate Reuse Principle或CARP)經常又叫做合成複用原則(Composite Reuse Principle或CRP),就是在一個新的對象裡面使用一些已有的對象,使之成為新對象的一部分;新對象通過向這些對象的委派達到複用已有功能的目的。簡而言之,要盡量使用合成/彙總,盡量不要使用繼承。六、?迪米特法則(LoD)迪米特法則(Law of Demeter或簡寫LoD)又叫最少知識原則(Least Knowledge Principle或簡寫為LKP),也就是說,一個對象應當對其它對象有儘可能少的瞭解。其它表述:??只與你直接的朋友們通訊??不要跟"陌生人"說話??每一個軟體單位對其它的單位都只有最少的知識,而且局限於那些與本單位密切相關的軟體單位。迪米特法則與設計模式Facade模式、Mediator模式使民無知《老子》第三章曰:"是以聖人之治,虛其心,實其腹,弱其志,常使民無知無欲。"使被"統治"的對象"愚昧"化,處於"無知"的狀態,可以使"統治"的成本降低。所謂"最少知識"原則,實際上便是老子的"使民無知"的統治之術。不相往來《老子》云:"小國寡民……鄰國相望,雞犬之聲相聞,民至老死,不相往來。"將被統治的對象隔離開來,使它們沒有直接的通訊,可以達到分化瓦解,繼而分而治之的效果。迪米特法則與老子的"小國寡民"的統治之術不謀而合。      MVC 是三個字母的縮寫:MODOL模式controller 控制器VIEW 視圖 傳統的MVC  view就是網頁,顯示各種內容CONTROLler控制器是 CGI  或php  或者 ASP.NET的與伺服器動態互動傳統的MVC 資料流被整合到VIEW中,根據互動來顯示響應的資料  AJAX中 使用MVC 設計網頁  :好處:可以實現分工操作,是未來的主流美工的搞美工,編程的搞編程,等等 AJAX中 VIEW 作用:提供可視化介面,負責監視介面的操作與controller互動 來把需要的資料顯示出來VIEW舉例:例如一個網頁 :設計網頁的顯示樣式,這個網頁要顯示什麼,有什麼控制項,至於商務邏輯完全不用懂,不用設計,只設計網頁的外觀因此不需要其他知識,只需要會設計網頁就可以了,還有利用CSS來設計樣式 VIEW中 不要包含邏輯部分:<input type="button" value="hello" onclick="showresult("data.xml","name")" />上面使用雖然正確,但是不符合MVC,因為這會給美工人員帶來困惑,正確的方法: 好的美工人員可是天才哦  就想美術家畢加索  有時候 一個網頁的外表可以起到決定性的作用所以有必要 讓美工人員專業化(也不是太好,美工人員還必須知道 onclike是什麼意思,這樣會使美工人員的專業化降低但是這種方式是美工人員可以接受的)<input type="button" value="hello" onclick="showresult()" />然後在商務邏輯層裡面 設計這樣的函數function abc (event){showresult("data.xml","name");}美工設計人員可以只用一個函數名字,其他都不用知道,只需要知道這是一個點擊事件,一個好的美工人員應該專註於 利用已有的組件 創造出美麗的網頁介面,而不用理會太多,美工的工作越專業 有助於設計,越能創造出介面迷人的網頁  最好的方法:只需要告訴美工人員 ,這裡需要一個DIV或者這裡應有一個button:<DIV ID="TEST"> 或<input type="button" id="TEST" value="hello" />美工人員只需要會上面的就可以,連事件的表層知識都不用知道 下面完全利用AJAX知識 來寫事件:首先要擷取節點:FUNCTION ABC("TEST.XML","name"){}然後在window.onload中添加回呼函數var butu= document.getElementById('TEST');butu.onclike=ABC;//注意利用這種方法回呼函數的時候,不用(),只是用函數名字 這樣便進一步分工,降低美工人員的知識需求,從而可以專註研究如何使網頁美工 商務邏輯層的人員設計頁面的商務邏輯,這裡需要一個button,需要事件,點擊後會有什麼功能,設計的時候 用一個函數名字代替,然後告訴程式員這個button事件的功能,底層的如何寫這個函數 完全是 程式員的工作 這樣便更好的分工:商務邏輯人員負責設計總的商務邏輯(指明網頁的顯示效果,這個地區怎麼顯示,顯示button,還是textbox',只需要告訴美工人員需要的顯示方式,至於具體設計以及css的設計不用取設計,還有還要規劃商務邏輯,把整個網頁的功能規劃好,)設計好之後把美工需求交給 美工人員,  一些函數的編寫交給 程式員這樣 程式員 會得到一個函數名字,還有這個函數實現的功能描述,這樣,商務邏輯層的人員不用具體去設計網頁的顏色顯示等, 也不用取編寫具體的程式, 同時,程式員 可以只關注於如何寫程式,其他也不用關注,從而實現了分工  VIEW方面 ,美工完全不用理會與業務方面的 東西  則 越符合MVC   controller:就是網頁中控制項需要響應的處理方法:傳統的CONTROLLER:myDocument.onclick=showAnimatedMoney的就是事件型AJAX中的Controller:DOM對象的內建處理函數列表:onmouseover:滑鼠第一次經過空間地區onmouseout:滑鼠第一次離開空間地區onmouseover:滑鼠在控制項地區內移動onclick:shubiao單擊onleypress:當控制項擷取輸入焦點時的按鍵事件onfocus:擷取焦點onblur:失去焦點現在使用的方法:這裡多使用觀察著模式監聽程式,  MODAL實體:就是在AJAX中 把資料封裝到一個JAVASCRIPT類中一切對資料庫的操作都是在這個類中進行,這個類包含進行資料操作的一切方法 MODAL的AJAX使用方式:1使用ORM工具從資料庫中取出資料模型(伺服器端)2使用xml封裝該模型3建立javaScript層的模型4建立一個從javaScript返回資料庫模型的機制    在AJAX開發中,盡量少使用表格 而使用css來操作一切, HTML語言只是把零件放在頁面 上,所有的排版.位置擺放都用css來控制根據需要適當的使用的JAVASCRIPT來控制控制項的位置   AJAX伺服器開發: 雖然ajax是對用戶端技術的整合,但其實ajax真正有用的是與伺服器的互動也就是我們通用的一些ajax技術伺服器端結構 兩層架構三層架構七層架構 三層架構:就是顯示介面 ,資料庫,商務邏輯顯示介面負責與資料庫連接把需要的資料取出來, 商務邏輯與資料庫的操作都寫在一起. n層架構:狗咬刺蝟,無從下手 1實體層把資料庫封裝起來,例如一個表 都可以封裝起來2資料介面層接受資料對象(即前面封裝好的實體) 來處理實體,裡面含有各種對資料庫的操作,如果SQL語句好,ADO.NET好,就可以專心功課資料介面層注意:這裡 其接受的參數是 實體 即封裝好的對象3商務邏輯層(起到承上啟下的作用)專門負責 整個頁面的商務邏輯, 處理所有的點擊事件,控制項點擊需要什麼樣的效果需要哪個資料庫,都是商務邏輯層的工作 適合非常熟悉使用者需求的人 ,先點哪個,後點哪個,使用者看了之後 很合胃口,用起來很舒服,這些都是商務邏輯層的工作4展示層:提倡多用模板頁,使用者控制項,來顯示頁面,可以提高頁面的複用性 ajax設計裡面經常使用的泛型服務器架構:1原始的:最早的 不適用任何架構,例如PHP,適合不需要太多的維護的,就是把一切都組織在一起,沒有什麼明確的分工一個人要知道各種知識,一個人來設計,沒有美工,商務邏輯等的區別優點:設計簡單,效率相對還不錯,缺點:維護成本高,變更不靈活 2三層架構模式JSP,J2EE就是使用這種架構  3元件伺服器模式工作--組件做的最好的就是ASP.NET4以服務為導向的架構聯合工作 以web Service 為基礎 實現網上定製服務也就是SOA模式, 現在實現按需索取,付費服務的功能效果還不是很理想,不過這是未來的發展趨勢  專案經理,上級給你一項任務,可以對老闆說,我要開個會議,進行頭腦風暴,和員工一起討論這個任務,搜集員工的意見,聽取員工意見的時候,就把自己當成一個旁聽的,記者,不發火,然後根據員工的發言,提取出開發這個項目需要什麼,缺少什麼,然後向老闆彙報成績例如 需要多少資金,需要什麼樣的人才,然後由老闆決定是否開發這個項目,要把老闆給的工作下分給員工,讓每個員工都參與,分擔自己的壓力,分配好工作才是專案經理的首要技能 開發軟體 有三個要注意的:時間,品質.資源time resource quality   交換資料1僅用戶端指令碼的資料互動適合:用戶端具有大量的瑣碎的資料計算工作計算結構不需要大量傳遞最後把一個結果傳給伺服器減少與伺服器的互動能用用戶端來完成 的任務,就盡量使用用戶端來完成就是一個頁面,裡面有很多js技術,所有的商務邏輯全部封裝在用戶端2以內容為核心的互動結構設計,把所有的商務邏輯都放在伺服器,使用者只需要提交一個請求,然後 伺服器的商務邏輯調用這個請求,這些操作都在伺服器處理,使用者只需要提交請求,其他什麼都不做處理好之後,返回給使用者一個網頁,這個頁面是根據使用者的請求產生的頁面這個是傳統的資料交換方式選擇伺服器端架構編寫伺服器端代碼3以指令碼為核心的資料互動例如:編寫一個DOM 建立一個架構 然後動態構建這個架構類,利用JS技術來為這個架構增加各種屬性,最終完善這個架構,需要用到的資料可來自其他頁面,都是由JS結合DOM技術 動態產生的相當於 ASP.NET中的WEB PARTS這是以前AJAX產生之前 的 類似 AJAX的技術和AJAX技術差不多 用XMLHTTP作為資料轉送協議  3以資料為核心的資料互動就是現在的AJAX技術資料交換模型 傳送 XML 而不是HTML以前開發 都是根據使用者得到請求然後傳送一個HTML而AJAX 是把請求封裝成XML 傳給伺服器, 伺服器處理後返回的還是XML,而且 是非同步呼叫 把要處理的資料 送給另一個頁面另一個空白頁面專門負責與伺服器互動,這樣減少原來頁面的部分工作只有第一個頁面處理好之後,第一個頁面才會去從第二個頁面接受資料  可結合 xml 與 XSLT 來顯示XML檔案  編寫伺服器端的代碼:1最簡單的就是使用form表單,裡面是各種控制項,最後提交 <form id="myForm" method="POST" action="" onsubmit="validateForm();return false;"><input type="text" name="username" id="username"><input type="password" name="password" id="password"><input type="submit" name="submit" id="submit"></form> 可以使用JS檢測提交內容:思想:就是利用DOM技術擷取form表單的需要的項根據需要取捨,選取重要資料,也可根據需要增加節點,最後才與伺服器互動function validateForm()(){var form=document.getElementById('myForm');var user=form.elements[0].value;var pwd=form.elements[1].value;if(user && user.length>0 && pwd && pwd.length>0){form.action='myFormHandlerURL.php';form.submit();}else{alert("輸入帳號密碼");}} 在一個html頁面上 可以有多個form  一個html的不同的form可以提交給不同的伺服器,  也可以提交給同一個伺服器  這裡就需要利用js技術來擷取不同的form      2  使用JAVASCRIPT技術建立提交對象然後提交  //為form表單添加一個input控制項  function addParam(from,key,value)  {var input=document.createElement("input");input.name=key;input.value=value;form.appendChild(input);  }  //建立一個form對象,並在其中建立多個input控制項,  //控制項的value值儲存在數組data中  function submitData(url,data)  {var form=document.createElement("form");form.action=url;form.method="POST";for(var i in data){addParam(form,i,data[i]);}form.style.display="none";//把元素的顯示模式設定為不顯示document.body.appendChild(form);form.submit();  }  //下面的參數傳遞.查資料  submitData("myFormHandlerURL.php",{username:"dave",password:"letmein"});    上面的方法 可以看到,頁面什麼很簡單,什麼代碼都用jS自己建立    3使用xmlHTTP對象提交  代碼和我們使用的AJAX代碼差不多,具體參考AJAX書籍    蘇朋的各人網站,電子郵件  主要從事網站開發 公司專屬應用程式方面    supper3000@gmail.com  www.supengcast.net      提高使用者體驗:    一:  高品質的軟體產品應用 1 響應度: 也就是使用者點擊後 響應度  例如 出現一個進度條,至少不會給人的感覺 想死機一樣,要給客戶一個  進度條,就算等待  也比看上去死死的好,  2效能  3一致性:主要是開發軟體的時候 會因為不同的分工可能會出現 就是點擊一個  按鈕 只有一種操作,一般不會出現這種失誤  4可用性  二:  保證使用者關注度:  1當使用者點擊一個內容 在等待內容出現的時候,要使用JS指令碼給使用者一個  體驗,這樣能留住使用者,不會因為等待時間長而使使用者離開,這樣使使用者可以  使使用者一直關注這個頁面,  2對多使用者提交資料進行集中處理  例如與伺服器互動,當使用者點擊提交按鈕的時候,可以不提交,  至少將其儲存到XML檔案中,第二個使用者單擊提交後,也儲存到  xml檔案中,等xml檔案到達一定的長度,然後提交,這樣降低與伺服器的互動  主要用於 使用者不是很需要的功能 可以等待的情況 也可是一群人做一項工作,因為工作是一個整體,所以可以 把每一個人的提交 送給xml儲存起來,當整體都搞完再提交 三AJAX效能 JS在ajax中 是利用MOM樹執行,  而每個dom樹都要在記憶體中構建一個 DOM樹 然後對其處理,當DOM樹撤銷的時候,是不是真的把記憶體中的 dom樹 徹底刪除了,如果沒有處理好記憶體,沒有很好的 釋放記憶體,會使記憶體冗餘 從而降級系統效能  測量JavaScipt的已耗用時間: function MyTimeConsumingFunction() {var beginning=new Date();var ending=new Date();//中間是要執行的代碼var duration =ending-beginning;alert(duration); }   atlas概說 1實現了AJAX的組件的開發模式,幫我們封裝好了 而且沒有什麼瀏覽器的區別,它自動建立使用所有瀏覽器 的組件應用,微軟第一次使用所有的代碼 2允許使用者做任何開發擴充,就像可以開發自訂控制項一樣 也可以任意擴充ajax控制項功能  3其他fromework還有很多,但是談到快速開發,談到與  asp.net整合 其無疑是最優秀的,而且以後功能還會提升    
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.