




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 jiangxi normal university 學(xué) 士 學(xué) 位 論 文thesis of bachelor(2005 2009年)題目:基于.net 3.5+mssql2005的網(wǎng)絡(luò)記事本系統(tǒng)的分析、設(shè)計(jì)與實(shí)現(xiàn)topic: the analysis、design and implement of webnote system based on .net framework 3.5and microsoft sql server 2005姓 名: 宋海根 學(xué) 號: 0567110147 學(xué) 院: 軟件學(xué)院 專 業(yè): 軟件工程 完成時(shí)間:2009年4月31日 指導(dǎo)老師: 戴麗萍 摘要在學(xué)習(xí)生
2、活工作中,需要存儲記憶許多的個(gè)人信息。例如博友信息,一些好的文摘 ,某些網(wǎng)站的帳號密碼等,這些信息往往是臨時(shí)性的,也很少記在日記本或者實(shí)體上 ,隨著時(shí)間的流失 ,需要的時(shí)候往往又都忘記了,不免給我們帶來麻煩與損失 。為了彌補(bǔ)這種遺憾,網(wǎng)絡(luò)記事本正是基于這種需求產(chǎn)生的,期望它能成為生活小管家,幫助管理需要的各種信息,留下生活的痕跡。本系統(tǒng)主要提供網(wǎng)絡(luò)日記,圖片存儲,文摘存儲,收藏,通信錄主要功能。在網(wǎng)絡(luò)日記上,可以記錄你的心情,同時(shí)也可以把日記共享,系統(tǒng)其它用戶也能夠分享你的心情。圖片存儲主要是存儲你的圖片,可以是照片,也可以是網(wǎng)上你喜歡的圖片,可以把這些圖片存儲在這里,同時(shí)也可以分享圖片,與他
3、人一起欣賞。網(wǎng)摘主要是看到的一些好的文章,例如一些優(yōu)美的散文,可以把這些文章存儲于此,分享與別人一起品嘗。收藏主要是遇到的一些好的網(wǎng)站或網(wǎng)頁的收藏,可以通過分享告知他人。期望通過本系統(tǒng),能免于一些生活瑣事 ,讓它成為真正的生活小管家。本篇論文主要通過網(wǎng)絡(luò)記事本來闡述如何設(shè)計(jì)出有彈性和可復(fù)用性的軟件,其中主要是通過七層架構(gòu)將整個(gè)項(xiàng)目進(jìn)行分離,對七層架構(gòu)中的物理數(shù)據(jù)層,數(shù)據(jù)訪問層,實(shí)體層,業(yè)務(wù)邏輯層,頁面結(jié)構(gòu)層,邏輯控制層,頁面呈現(xiàn)層分別做詳細(xì)的介紹,并對每一層的定義,每一層所工作的內(nèi)容,存在的意義進(jìn)行分析。并描述分層開發(fā)的優(yōu)勢。最后通過設(shè)計(jì)模式中的工廠模式,抽象工廠模式,適配器模式,生成器模式,
4、外觀模式,模板模式,狀態(tài)模式來闡述該項(xiàng)目中的設(shè)計(jì)模式的運(yùn)用,以及企業(yè)級的軟件所必須具備的低耦合和高內(nèi)聚的特點(diǎn)。在這個(gè)軟件日新月異的時(shí)代,一些沒有彈性的軟件即將被淘汰,而生存下來的便是具有彈性和可維護(hù)性的軟件。關(guān)鍵詞:七層架構(gòu) ,.net3.5,高內(nèi)聚,低耦合,設(shè)計(jì)模式abstractin our daily life, we need a lot of memory storage of personal information。for example,friends information,some good abstracts,web site account password。this
5、information is often temporary,we are also rarely recorded in the diaries,with the loss of time,when necessary, we are often forgotten,we can not help but to cause trouble and loss。to make up for this sorry,notepad is generated based on this demand,expecting to become a steward of your life, helping
6、 you manage all kinds of information needed , leaving traces of your life!the system is mainly provided by the network for your diary, photo storage, abstracts storage, collection, recorded in the main function of communication. you can record your feelings, at the same time you can share your diary
7、, the system can also be other users to share your feelings. image storage is storage of your pictures, can be your photo, it could be a line you like the picture, you can put these pictures are stored in here, at the same time you can share your pictures. pick your network is mainly to see some goo
8、d articles, such as some beautiful prose, you can store them in this article, you can also enjoy sharing with others. the main collection is that you encountered some good collection of web sites or web pages, you can inform others through the sharing. hope that through this system, you can live fre
9、e from chores and let it become your life in small housekeeper.in this paper,we describe webnote project to expoundhow to work out a flexibility and reused enterprise software. we use seven tier framework to separate the whole project. we introduce the seven structure tier, physics data tier, visit
10、data tier , entity tier, business method tier, logical control layer tier, cascading style sheets very particularly. we analyze every tier on definitions and what we should do on every tier, and what is the meaning for every tier .we talk about the advantages with multilayer develops .in the end we
11、use design pattern to explain our project, and shows what design pattern we have use in our project, there are factory, abstract factory , builder , adapter , facade , template method mode, state mode used in our project, we introduce how to put design pattern into a project , we said high cohesion
12、and low coupling is very important for a project. now software update with the needs, the software without flexibility will be wash out. only flexibility and reuse software will be stay.keywords:seven tier framework, highly connection, low coupling, design pattern目錄第1章 引言11.1 項(xiàng)目背景11.2 項(xiàng)目目標(biāo)及意義11.3 任務(wù)
13、概述1第2章 項(xiàng)目關(guān)鍵技術(shù)介紹32.1 c# 面向?qū)ο蠹夹g(shù)32.1.1 泛型32.1.2 抽象類32.1.3 接口32.1.4 動態(tài)反射42.1.5 方法重載52.2 技術(shù)52.2.1母板的使用52.2.2 listview的使用62.3建模62.3.1 面向?qū)ο笮枨蠼?2.3.2 面向?qū)ο笤O(shè)計(jì)建模72.3.3 數(shù)據(jù)庫建模72.4 設(shè)計(jì)模式82.4.1 工廠模式82.4.2 生成器模式模式92.4.3 適配器模式92.4.4 外觀模式92.4.5 模板方法模式92.4.6 狀態(tài)模式92.5 七層架構(gòu)102.5.1 七層架構(gòu)的定義102.5.2 物理數(shù)據(jù)層112.5.3 數(shù)據(jù)訪問層122.5.
14、4 實(shí)體層132.5.5 業(yè)務(wù)邏輯層142.5.6 頁面結(jié)構(gòu)層152.5.7 邏輯控制層152.5.8 頁面呈現(xiàn)層17第3章 項(xiàng)目分析與設(shè)計(jì)193.1 項(xiàng)目需求分析193.1.2 用例圖193.1.3 域模型類圖203.2 項(xiàng)目設(shè)計(jì)203.2.1 項(xiàng)目開發(fā)環(huán)境203.2.2 項(xiàng)目架構(gòu)213.2.3 用例實(shí)現(xiàn)213.2.4 設(shè)計(jì)項(xiàng)目類圖233.3 數(shù)據(jù)庫設(shè)計(jì)243.3.1 數(shù)據(jù)庫設(shè)計(jì)原則253.3.2 項(xiàng)目數(shù)據(jù)庫模型圖253.3.3 項(xiàng)目各個(gè)表的設(shè)計(jì)26第4章 項(xiàng)目編碼實(shí)現(xiàn)314.1 七層架構(gòu)的實(shí)現(xiàn)原理315.2 物理數(shù)據(jù)層的實(shí)現(xiàn)325.3 數(shù)據(jù)訪問層345.4 實(shí)體層的實(shí)現(xiàn)365.5 業(yè)務(wù)邏輯
15、層的實(shí)現(xiàn)375.6 用戶界面層實(shí)現(xiàn):38第5章 總結(jié)446.1 對項(xiàng)目多層開發(fā)的分析446.1.1 需求的波動以及應(yīng)對模式446.1.2 傳統(tǒng)三層架構(gòu)的弊端446.2 對項(xiàng)目的弱耦合和高內(nèi)聚的討論446.2.1 對柔耦合的討論446.2.2 對高內(nèi)聚的討論456.2.3 總結(jié)456.3 總結(jié)項(xiàng)目中的技術(shù)點(diǎn)456.3.1 七層架構(gòu)中讓我最滿意的三層456.3.2 收獲和總結(jié)46致謝47參考文獻(xiàn)48第1章 引言1.1 項(xiàng)目背景隨著社會的發(fā)展,互聯(lián)網(wǎng)網(wǎng)已經(jīng)成為我們生活中的不可缺少的一部分,人們開始網(wǎng)上購物、網(wǎng)上交友、網(wǎng)上閱讀新聞、網(wǎng)上查閱資料等 。伴隨著信息化得發(fā)展,我們需要記憶存儲許多的信息 。也
16、許你會把要記憶的信息存在筆記里,電腦上,又或者是你的頭腦里。隨著時(shí)間流逝 ,往往那些需要的東西已經(jīng)回憶不起來或者找不到,因此我們迫切需要一個(gè)我們網(wǎng)上的生活小管家 ,幫助我們打理這些信息。網(wǎng)絡(luò)記事本正是在這種需求下產(chǎn)生!1.2 項(xiàng)目目標(biāo)及意義在互聯(lián)網(wǎng)上,雖然存在一定一些網(wǎng)絡(luò)記事本系統(tǒng),但沒有專門專業(yè)的網(wǎng)絡(luò)記事本,通過本系統(tǒng),用戶可以再系統(tǒng)網(wǎng)站上寫網(wǎng)絡(luò)日記,保存各種圖片,保存文摘,保存收藏,同時(shí)本系統(tǒng)也將打造一定得互動功能,用戶可以分享自己的日記,圖片,文摘,收藏,別的用戶可以查看,評論,同時(shí)還可以跟你交流發(fā)站內(nèi)信。期望通過本網(wǎng)絡(luò)記事本系統(tǒng),擁有免于生活中的一些小事,讓它來幫你管理,分享自己的生活
17、,讓別人一起參與進(jìn)來,實(shí)現(xiàn)信息,思想的交流。本系統(tǒng)初步具有上述的5個(gè)基本功能,在系統(tǒng)后期,可以根據(jù)用戶需要,拓展一些功能,完善系統(tǒng)。當(dāng)系統(tǒng)足夠強(qiáng)大的時(shí)候,可以根據(jù)系統(tǒng) ,公布自己的api,讓更多的人參與進(jìn)來,成為一個(gè)真正的交流平臺。網(wǎng)絡(luò)記事本解決了現(xiàn)實(shí)需要的問題,通過網(wǎng)絡(luò)記事本,能夠真正方便你的網(wǎng)上生活,提高你的學(xué)習(xí),生活,工作效率,讓它真正成為你的生活小管家,成為你生活得一部分。在系統(tǒng)開發(fā)過程中,深入了解如果使用asp.net3.0開發(fā)基于w3c標(biāo)準(zhǔn)的web項(xiàng)目,并且深入體驗(yàn)高級的多層開發(fā)技術(shù),符合企業(yè)web開發(fā)的要求,能夠通過此項(xiàng)目真正了解面向?qū)ο蟮拈_發(fā)方式。1.3 任務(wù)概述網(wǎng)絡(luò)記事本系統(tǒng)
18、主要功能模塊及描述如下:1)日記模塊 負(fù)責(zé)日記的增刪改查,日記種類的增刪改查,日記的分享管理以及日記瀏覽評論管理。2)相冊模塊 負(fù)責(zé)圖片的增刪改查,相冊的增刪改查,圖片的分享管理以及圖片瀏覽評論管理。3)文摘模塊 負(fù)責(zé)文摘的增刪改查,文摘種類的增刪改查,文摘的分享管理以及日記瀏覽評論管理。4)收藏模塊 負(fù)責(zé)收藏的增刪改查,收藏種類的增刪改查,日記的分享管理。5)生活幫手模塊 一些生活中常用工具的管理6)今日焦點(diǎn)模塊 今日新聞焦點(diǎn)的管理7)用戶模塊 用戶注冊,登錄等的管理第2章 項(xiàng)目關(guān)鍵技術(shù)介紹2.1 c# 面向?qū)ο蠹夹g(shù)2.1.1 泛型1)泛型的定義 泛型指的是該類型在父類中定義后,繼承該類的子
19、類可以將父類的泛型轉(zhuǎn)換成自己的類型,從而在繼承父類的方法或?qū)傩詴r(shí)能夠?qū)⑵渲械姆盒皖愋?,轉(zhuǎn)換成子類的類型來使用,極大的減少了代碼的重復(fù)度,屬于在繼承中相當(dāng)靈活的方法。2)泛型的作用 巧妙有效的使用泛型,配合反射可以編寫非常優(yōu)雅和高效的實(shí)體類。這種類可以在原先沒有泛型時(shí)更體現(xiàn)出面向?qū)ο蟮耐?,并且提供更有效的約束和封裝。2.1.2 抽象類1)抽象類簡介抽象類的用途是提供多個(gè)派生類可共享的基類的公共定義,并使用abstract關(guān)鍵字定義。使用abstract關(guān)鍵字不僅可以創(chuàng)建僅用于繼承用途的類,也可以定義類成員,即定義派生的非抽象類的功能。2)抽象類的使用我們寫的基類就是定義為抽象類。在實(shí)現(xiàn)接口時(shí),
20、我們也常寫一個(gè)抽象類,來實(shí)現(xiàn)接口中的某些子類所需的通用方法,接著在編寫各個(gè)子類時(shí),即可繼承該抽象類來使用,省去在每個(gè)都要實(shí)現(xiàn)通用的方法的困擾。2.1.3 接口1)接口的簡介從面向?qū)ο蟮挠^點(diǎn)來看,接口就是對象的外觀,而對象實(shí)際的工作方式就是實(shí)現(xiàn)。和類一樣,接口也可以定義屬性、方法和事件。與類不同的是,接口并不提供實(shí)現(xiàn)。現(xiàn)在的接口,是由類來實(shí)現(xiàn)的,并從類中被定義為單獨(dú)的實(shí)體。我們可以這樣來理解,接口表示的是一種約定。實(shí)現(xiàn)接口的類必須嚴(yán)格按其定義來實(shí)現(xiàn)接口的每個(gè)方面。有了接口,就可以將功能定義為一些緊密相關(guān)成員的小組。可以在不危害現(xiàn)有代碼的情況下,開發(fā)接口的增強(qiáng)型實(shí)現(xiàn),從而使兼容性問題最小化。也可以
21、在任何時(shí)候通過開發(fā)附加接口和實(shí)現(xiàn)來添加新的功能。雖然接口實(shí)現(xiàn)可以進(jìn)化,但接口本身一旦被發(fā)布就不能再更改。對已發(fā)布的接口進(jìn)行更改會破壞現(xiàn)有的代碼。若把接口視為約定,很明顯約定雙方都各有其承擔(dān)的義務(wù)。接口的發(fā)布者同意不再更改該接口,接口的實(shí)現(xiàn)者則同意嚴(yán)格按設(shè)計(jì)來實(shí)現(xiàn)接口。接口的實(shí)現(xiàn)可以是類,也可以是結(jié)構(gòu)。接口的定義用的是interface關(guān)鍵字。通過接口,我們可以定義下某種對象的基本外觀,然后可以自由地進(jìn)行實(shí)現(xiàn)與擴(kuò)展,卻不涉及對原型的直接修改。我們在定義數(shù)據(jù)提供者的方法時(shí)就使用到了接口的方法。2)接口的使用在封裝ado.net,書寫數(shù)據(jù)提供者時(shí),我們就用到了接口,在此處使用接口的目的是在使用不同數(shù)
22、據(jù)庫時(shí),如果不調(diào)用來訪問數(shù)據(jù)提供者時(shí),如果數(shù)據(jù)庫更換的話,調(diào)用數(shù)據(jù)庫的代碼也需要改變,不滿足軟件開發(fā)中低耦合的要求,如果使用接口的話,可以讓不同的數(shù)據(jù)庫實(shí)現(xiàn)該接口,使用訪問數(shù)據(jù)庫的代碼不需要做更改,體現(xiàn)了低耦合的要求。2.1.4 動態(tài)反射1)反射的定義程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。您可以使用反射動態(tài)地創(chuàng)建類型的實(shí)例,將類型綁定到現(xiàn)有對象,或從現(xiàn)有對象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字段和屬性。2)反射的作用a.使用 assembly 定義和加載程序集,加載在程序集清單中列出的模塊,以及從此程序集中查找類型并創(chuàng)建該類型的實(shí)例
23、。 b.使用 module 了解如下的類似信息:包含模塊的程序集以及模塊中的類等。您還可以獲取在模塊上定義的所有全局方法或其他特定的非全局方法。 c.使用 constructorinfo 了解如下的類似信息:構(gòu)造函數(shù)的名稱、參數(shù)、訪問修飾符(如 public 或 private)和實(shí)現(xiàn)詳細(xì)信息(如 abstract 或 virtual)等。d.使用 type 的 getconstructors 或 getconstructor 方法來調(diào)用特定的構(gòu)造函數(shù)。 e.使用 methodinfo 來了解如下的類似信息:方法的名稱、返回類型、參數(shù)、訪問修飾符(如 public 或 private)和實(shí)現(xiàn)詳
24、細(xì)信息(如 abstract 或 virtual)等。使用 type 的 getmethods 或 getmethod 方法來調(diào)用特定的方法。 f.使用 fieldinfo 來了解如下的類似信息:字段的名稱、訪問修飾符(如 public 或 private)和實(shí)現(xiàn)詳細(xì)信息(如 static)等;并獲取或設(shè)置字段值。 g.使用 eventinfo 來了解如下的類似信息:事件的名稱、事件處理程序數(shù)據(jù)類型、自定義屬性、聲明類型和反射類型等;并添加或移除事件處理程序。 h.使用 propertyinfo 來了解如下的類似信息:屬性的名稱、數(shù)據(jù)類型、聲明類型、反射類型和只讀或可寫狀態(tài)等;并獲取或設(shè)置屬性
25、值。 j.使用 parameterinfo 來了解如下的類似信息:參數(shù)的名稱、數(shù)據(jù)類型、參數(shù)是輸入?yún)?shù)還是輸出參數(shù),以及參數(shù)在方法簽名中的位置等。2.1.5 方法重載1)什么是重載所謂函數(shù)重載是指同一個(gè)函數(shù)名可以對應(yīng)著多個(gè)函數(shù)的實(shí)現(xiàn)。函數(shù)重載要求編譯器能夠唯一地確定調(diào)用一個(gè)函數(shù)時(shí)應(yīng)執(zhí)行哪個(gè)函數(shù)代碼,即采用哪個(gè)函數(shù)實(shí)現(xiàn)。確定函數(shù)實(shí)現(xiàn)時(shí),要求從函數(shù)參數(shù)的個(gè)數(shù)和類型上來區(qū)分。這就是說,進(jìn)行函數(shù)重載時(shí),要求同名函數(shù)在參數(shù)個(gè)數(shù)上不同,或者參數(shù)類型上不同。否則,將無法實(shí)現(xiàn)重載。2)為什么要重載重載函數(shù)的目的很簡單,就是要滿足調(diào)用時(shí)不同的需求,使函數(shù)可以滿足各種參數(shù)類型,而不需要對參數(shù)進(jìn)行類型轉(zhuǎn)換,大大方便
26、了函數(shù)使用者。在我們的項(xiàng)目中大量的使用了方法重載 。2.2 技術(shù)2.2.1母板的使用1)母板的定義母板(motherboard)就是一種可以被重復(fù)利用的頁面格式。它是一種特殊的節(jié)點(diǎn)形式,它形成的頁面格式可以被其它的節(jié)點(diǎn)套用,甚至是被其它的母板節(jié)點(diǎn)套用。一個(gè)母板中,應(yīng)該有且只有一個(gè)替代因子。有效的替代因子節(jié)點(diǎn)可以是母板節(jié)點(diǎn)下任意層次的子節(jié)點(diǎn)。設(shè)計(jì)過程中你會發(fā)現(xiàn),其實(shí)母板設(shè)計(jì)就是將引用該母板的那些頁面的固定的頁面組件制作出來,頁面內(nèi)容變化的位置由替代因子取代。母板是webtea最具活力的特色之一,它使網(wǎng)站的開發(fā)效率大大提高。因?yàn)轫撁嫘问叫枰兓瘯r(shí),只需要修改母板,而數(shù)據(jù)是不需要重新編輯的。一個(gè)母板
27、發(fā)生變化,使用該母板的所有節(jié)點(diǎn)的形式都將隨之發(fā)生相應(yīng)變化。2)母板的使用設(shè)計(jì)頁面必須要有大局觀,一般先預(yù)設(shè)計(jì)所有頁面的功能,然后將整個(gè)系統(tǒng)結(jié)合起來觀察,檢查有哪些部分的結(jié)構(gòu)是所有(或部分)頁面的共性元素。在這個(gè)層面上可以從面向?qū)ο蟮慕嵌葋硭伎?,頁面從具有共性元素的頁面繼承擴(kuò)展。2.2.2 listview的使用1)listview控件的定義listview是microsoft visual studio 2008新提供的數(shù)據(jù)控件,該控件結(jié)合了以往控件的各不足,即提供了內(nèi)置的編輯、添加、刪除、選擇和分頁數(shù)據(jù)控制功能,也提供了用戶完全自定義的格式控制??梢砸阅褂媚0宥x的格式來顯示來自數(shù)據(jù)源的數(shù)
28、據(jù)。該模板包含有用于設(shè)置數(shù)據(jù)布局的格式、控件和綁定表達(dá)式。2)模板的靈活性和結(jié)構(gòu)化每一層模板的存在都有其意義,雖然在某一時(shí)刻部分模板不呈現(xiàn)在界面上,用戶不清楚該模板是否存在,因?yàn)橛脩舨恍枰涝撃0宓拇嬖?,?dāng)用戶需要執(zhí)行某些功能時(shí)該功能的模板便會體現(xiàn)。模板的交替使用使界面更具動感,滿足客戶對界面功能的需求,方便業(yè)務(wù)的控制,是業(yè)務(wù)能夠有條不紊的進(jìn)行。listview充分體現(xiàn)了模板的靈活性和結(jié)構(gòu)化,靈活性體現(xiàn)在listview模板的顯示靈活多變,在適當(dāng)?shù)臅r(shí)間顯示適當(dāng)?shù)哪0?,滿足客戶在理解業(yè)務(wù)上的需求。結(jié)構(gòu)化體現(xiàn)在listview對插入,更新,刪除都提供了不同的模板,把頁面的結(jié)構(gòu)分離的很徹底。滿足了
29、結(jié)構(gòu)的需求。2.3建模 一個(gè)模型代表了當(dāng)前系統(tǒng)的某個(gè)方面。由于系統(tǒng)很復(fù)雜,需要建立多個(gè)模型來涵蓋細(xì)節(jié)信息,還需要使用許多不同類型的模型在不同細(xì)節(jié)上表現(xiàn)系統(tǒng)。建立模型的過程能幫助軟件開發(fā)人員澄清和改良設(shè)計(jì)。它能描述信息系統(tǒng)的復(fù)雜性,便于對系統(tǒng)的交流,同時(shí)還能作為維護(hù)和升級系統(tǒng)的文檔。2.3.1 面向?qū)ο笮枨蠼C嫦驅(qū)ο蠓椒ㄖ杏幸徽椎膱D表集合,一起用來記錄用戶的需要和系統(tǒng)的需求,這些需求可以用以下的模型來說明:a.域模型類圖:在定義系統(tǒng)需求的時(shí),開發(fā)人員僅僅關(guān)注問題域類,問題域類是以后設(shè)計(jì)軟件類的基石,同時(shí)也驅(qū)動了所有其他類的定義。定義這些系統(tǒng)需求而建立起來的類成為域模型類圖,因?yàn)樗@示的類是永
30、恒問題域中的一部分。使用問題域類有兩個(gè)重要的目的。第一,它描述了必須由面向?qū)ο蟮木幊谭椒ㄟ\(yùn)行的淚的基本結(jié)構(gòu)。第二,它被當(dāng)做一種概念上的數(shù)據(jù)模型,描述用于數(shù)據(jù)庫定義的類。b.用例圖:一種可以顯示不同的用戶角色和這些用戶角色如何使用系統(tǒng)的圖。用例圖目的是識別系統(tǒng)的用例,換句話說,就是識別如何使用系統(tǒng),用戶記錄系統(tǒng)必須支持的所有功能的一種簡便方法。c.用例詳細(xì)模型:每個(gè)用例必須詳細(xì)描述。一種方法是詳細(xì)記錄下用戶和系統(tǒng)共同完成用例的步驟。另一方面,也可以用來描述包括手動和自動系統(tǒng)活動的過程,所有活動圖可以用來定義用例。d.系統(tǒng)順序圖:提供了用例處理需求的更詳細(xì)的說明,記錄了系統(tǒng)的輸入和輸出,每個(gè)系統(tǒng)順
31、序圖的應(yīng)用范圍通常是一個(gè)用例或者用例的一個(gè)場景,系統(tǒng)順序圖有參與者和系統(tǒng)兩部分組成,系統(tǒng)被看成是一個(gè)黑盒子,因?yàn)樗鼰o需記錄內(nèi)部處理。2.3.2 面向?qū)ο笤O(shè)計(jì)建模面向?qū)ο笤O(shè)計(jì)主要關(guān)注三個(gè)面向?qū)ο竽P?,既設(shè)計(jì)類圖,交互圖和包圖。設(shè)計(jì)是用例來驅(qū)動,也就是說設(shè)計(jì)師在用例的基礎(chǔ)上完成的。在設(shè)計(jì)過程中,兩個(gè)主要模型是設(shè)計(jì)類圖和順序圖。通過添加屬性類型,可見性信息以及方法特征,域模型類圖被轉(zhuǎn)化成設(shè)計(jì)圖。順序圖是系統(tǒng)順序圖的擴(kuò)展,通過驅(qū)動執(zhí)行用例所需的內(nèi)部進(jìn)程來創(chuàng)建。順序圖具體化了相互協(xié)作的類,以及他們協(xié)作的方式,具體化了他們之間為了完成用例進(jìn)程互相傳遞的信息。在分層設(shè)計(jì)中,包圖是用來將設(shè)計(jì)類圖分割成相關(guān)的功
32、能。2.3.3 數(shù)據(jù)庫建模數(shù)據(jù)建模指的是對現(xiàn)實(shí)世界各類數(shù)據(jù)的抽象組織,確定數(shù)據(jù)庫需管轄的范圍、數(shù)據(jù)的組織形式等直至轉(zhuǎn)化成現(xiàn)實(shí)的數(shù)據(jù)庫。 將經(jīng)過系統(tǒng)分析后抽象出來的概念模型轉(zhuǎn)化為物理模型后,在visio或erwin等工具建立數(shù)據(jù)庫實(shí)體以及各實(shí)體之間關(guān)系的過程。應(yīng)用程序和數(shù)據(jù)建模是為應(yīng)用程序確定、記錄和實(shí)現(xiàn)數(shù)據(jù)和進(jìn)程要求的過程。這包括查看現(xiàn)有的數(shù)據(jù)模型和進(jìn)程,以確定它們是否可被重復(fù)使用,并創(chuàng)建新數(shù)據(jù)模型和進(jìn)程,以滿足應(yīng)用程序的獨(dú)特要求。建模過程中的主要活動包括: a.確定數(shù)據(jù)及其相關(guān)過程(如實(shí)地銷售人員需要查看在線產(chǎn)品目錄并提交新客戶訂單)。 b.定義數(shù)據(jù)(如數(shù)據(jù)類型、大小和默認(rèn)值)。 c.確保數(shù)
33、據(jù)的完整性(使用業(yè)務(wù)規(guī)則和驗(yàn)證檢查)。 d.定義操作過程(如安全檢查和備份)。 e.選擇數(shù)據(jù)存儲技術(shù)(如關(guān)系、分層或索引存儲技術(shù))。 一定要知道建模通常會以意想不到的方式涉及公司的管理。例如,當(dāng)對哪些數(shù)據(jù)元素應(yīng)由哪些組織來維護(hù)有新的見解時(shí),數(shù)據(jù)所有權(quán)(以及數(shù)據(jù)維護(hù)、準(zhǔn)確性和及時(shí)性的隱含責(zé)任)通常會遭到質(zhì)疑。數(shù)據(jù)設(shè)計(jì)常常促使公司認(rèn)識到企業(yè)數(shù)據(jù)系統(tǒng)是如何相互依存的,并且鼓勵(lì)公司抓住協(xié)調(diào)后的數(shù)據(jù)規(guī)劃所帶來的效率提高、成本節(jié)約和戰(zhàn)略性機(jī)遇。在結(jié)束建模時(shí),您已經(jīng)完全定義了應(yīng)用程序的要求,確定了可能被其他企業(yè)級應(yīng)用程序重復(fù)使用的數(shù)據(jù)和服務(wù),并為將來擴(kuò)展奠定了強(qiáng)有力的基礎(chǔ)。2.4 設(shè)計(jì)模式2.4.1 工廠模
34、式在我們實(shí)例化對象時(shí),我們就要考慮到使用工廠模式,工廠模式是通過定義一個(gè)類,在該類中定義一個(gè)靜態(tài)的供外部調(diào)用的方法,該方法返回所需實(shí)例化的對象,于是當(dāng)我們要實(shí)例化對象是只需調(diào)用該方法就可以了,當(dāng)所需調(diào)用的對象發(fā)生變化時(shí)外部的代碼就不需要修改。在項(xiàng)目的實(shí)體層的基類中的提供創(chuàng)建實(shí)例方法時(shí),我們就用到了工廠設(shè)計(jì)模式,在每次創(chuàng)建實(shí)例時(shí),我們都要工廠化一個(gè)對象,于是我們把實(shí)例化對象放到方法中去完成。當(dāng)對象包含有參數(shù)的構(gòu)造函數(shù)時(shí),外部也不需要添加,可以在工廠內(nèi)部將參數(shù)賦給構(gòu)造函數(shù),返回該對象,而外部只需要調(diào)用該工廠的方法,滿足了開閉原則。工廠模式的另一個(gè)特點(diǎn)是可以通過條件判斷來約束是否返回對象實(shí)例,如果不
35、滿足條件則返回空值。大大提高了安全性和對對象的控制能力。2.4.2 生成器模式模式當(dāng)接受一連串復(fù)雜的字符串時(shí),我們就會考慮將該字符串進(jìn)行分離,在我們的項(xiàng)目中,數(shù)據(jù)提供者將要接受一條數(shù)據(jù)庫連接字符串,該字符串比較復(fù)雜,包括了服務(wù)器名,數(shù)據(jù)庫名,以及是否設(shè)置安全保護(hù)的功能,于是我們就將該字符串進(jìn)行分離,將變化的和不變的分離出來,服務(wù)器名和數(shù)據(jù)庫名是變化的,于是我們就將其分離出來,生成器模式的使用大大方便了使用者,也體現(xiàn)了低耦合的需要,更大大減小了程序出錯(cuò)的幾率。2.4.3 適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。adapter 模式使得原本由于接口不兼容而不能一起工作的那些類可以一起
36、工作。在我們的項(xiàng)目中在數(shù)據(jù)庫類型和c#類型轉(zhuǎn)換是就使用到了適配器模式,該模式的使用使我們在數(shù)據(jù)提供者中進(jìn)行類型匹配時(shí),可以讓其自動匹配,而不用擔(dān)心類型無法匹配的問題。2.4.4 外觀模式外觀模式的使用是為了讓外部通過調(diào)用一個(gè)類來完成所有所需的方法,得到所需的字段,所有需要的內(nèi)容都通過一個(gè)類來訪問。這種方法也是一種高內(nèi)聚的體現(xiàn),把所有的類都內(nèi)聚到一個(gè)外觀類中,因?yàn)橥獠空{(diào)用的是同一個(gè)類,所以在用戶的需求發(fā)生變化時(shí),外部就不需要修改對某個(gè)類的訪問,只要在外觀類中添加修要訪問的類,并提供該類的實(shí)例化方法就可以了。在我們的項(xiàng)目中,我們在數(shù)據(jù)提供者中將ado的不同層面通過一個(gè)類來實(shí)現(xiàn)。2.4.5 模板方法
37、模式我們在頁面結(jié)構(gòu)層中使用的list view控件便是使用了模板的方法,list view中有7個(gè)模板,每一層模板的存在都有其意義,雖然在某一時(shí)刻部分模板不呈現(xiàn)在界面上,用戶不清楚該模板是否存在,因?yàn)橛脩舨恍枰涝撃0宓拇嬖?,?dāng)用戶需要執(zhí)行某些功能時(shí)該功能的模板便會體現(xiàn)。模板的交替使用使界面更具動感,滿足客戶對界面功能的需求,方便業(yè)務(wù)的控制,是業(yè)務(wù)能夠有條不紊的進(jìn)行。2.4.6 狀態(tài)模式狀態(tài)模式的意圖是允許一個(gè)對象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。狀態(tài)模式的原理是封裝狀態(tài)相關(guān)的行為到狀態(tài)對象中,每一個(gè)狀態(tài)對象屬于抽象狀態(tài)類的子類。狀態(tài)模式的特征是a.抽象狀態(tài)角(state)色:定義一個(gè)接口,用
38、以封裝語境(context)對象的一個(gè)特定的狀態(tài)所對應(yīng)的行為。 b.具體狀態(tài)(concrete state)角色:一個(gè)具體狀態(tài)類,實(shí)現(xiàn)了語境(context)對象的一個(gè)狀態(tài)所對應(yīng)的行為。c.語境(context)角色:定義客戶端所感興趣的接口,并且保留一個(gè)具體狀態(tài)類的實(shí)例,這個(gè)具體狀態(tài)類的實(shí)例給出此環(huán)境對象的現(xiàn)有狀態(tài)。 通過使用多態(tài),可以動態(tài)地改變語境(context)對象的屬性state的內(nèi)容,使其從指向一個(gè)具體狀態(tài)類到指向另外一個(gè)具體狀態(tài)類,從而改變語境(context)對象的行為。多態(tài)原則是狀態(tài)模式的核心。在我們的項(xiàng)目中的list view中的增加刪除修改查詢方法,就用到了狀態(tài)模式,狀態(tài)
39、模式體現(xiàn)在對語境對象的行為,在list view中體現(xiàn)在對事件的處理上,list view中的事件就意味著狀態(tài)發(fā)生了變化。 2.5 七層架構(gòu)2.5.1 七層架構(gòu)的定義1)七層架構(gòu)背景三層架構(gòu)的基礎(chǔ)上,我們對數(shù)據(jù)訪問層以及表示層進(jìn)行了更細(xì)致的劃分。將數(shù)據(jù)訪問層分成了物理數(shù)據(jù)層,數(shù)據(jù)訪問層和實(shí)體層。將表示層分為了頁面結(jié)構(gòu)層,邏輯控制層,和表現(xiàn)層。該分層方法是三層架構(gòu)的一種優(yōu)化。2)七層的定義物理數(shù)據(jù)層主要包括業(yè)務(wù)的建模和數(shù)據(jù)庫的設(shè)計(jì)。數(shù)據(jù)訪問層主要包括數(shù)據(jù)訪問組件(ado.net)的設(shè)計(jì)和實(shí)現(xiàn)。實(shí)體層類對數(shù)據(jù)庫的映射。業(yè)務(wù)邏輯層根據(jù)客戶需求所定義的方法,包括,增加,刪除,修改,查詢的方法,這些方法
40、的提供是保證項(xiàng)目功能實(shí)現(xiàn)的基礎(chǔ)。頁面結(jié)構(gòu)層包括html元素等頁面元素,但不包括樣式,也就是頁面要呈現(xiàn)的數(shù)據(jù)內(nèi)容。邏輯控制層邏輯控制層控制頁面要呈現(xiàn)的內(nèi)容,也就是對頁面結(jié)構(gòu)層進(jìn)行控制,并且訪問業(yè)務(wù)邏輯層,在結(jié)構(gòu)上起到承上啟下的作用。表現(xiàn)層對(div+css)的使用,滿足客戶對頁面外觀的需求,和頁面結(jié)構(gòu)層分離。3)七層架構(gòu)意義在使用七層架構(gòu)之后,程序出錯(cuò)之后我們可以輕松的找到錯(cuò)誤是發(fā)生在哪一層,并能很快找到錯(cuò)誤的位置予以修正,因?yàn)椴捎闷邔蛹軜?gòu)之后,我們對項(xiàng)目進(jìn)行了更好的封裝??蓮?fù)用性體現(xiàn)在對于一些和項(xiàng)目無關(guān)的工具類進(jìn)行封裝,這些工具類和項(xiàng)目無關(guān),可以提供給其他項(xiàng)目使用,比如封裝好的數(shù)據(jù)提供者。七層
41、架構(gòu)的彈性體現(xiàn)在可擴(kuò)展性和可維護(hù)性,對七層架構(gòu)的擴(kuò)展不需要對原有程序進(jìn)行修改,而由于七層架構(gòu)的低耦合性,修改會變的很簡便。2.5.2 物理數(shù)據(jù)層1)基礎(chǔ)數(shù)據(jù)表的建立我們將原先三層架構(gòu)中的數(shù)據(jù)訪問層分成了物理數(shù)據(jù)庫層,數(shù)據(jù)訪問層和實(shí)體層。在本項(xiàng)目的物理數(shù)據(jù)庫層中,建立了21張數(shù)據(jù)表,詳細(xì)見第三章數(shù)據(jù)庫設(shè)計(jì)。2)數(shù)據(jù)完整性的物理實(shí)現(xiàn)a.主鍵和外鍵的關(guān)系主鍵是數(shù)據(jù)表中的具有唯一性,且不可為空,我們?yōu)槊恳粋€(gè)數(shù)據(jù)表設(shè)置一個(gè)主鍵id,而如果公共關(guān)鍵字在一個(gè)關(guān)系中是主鍵,那么這個(gè)公共關(guān)鍵字被稱為另一個(gè)關(guān)系的外鍵。我們通過外鍵約束將數(shù)據(jù)表聯(lián)系起來,使數(shù)據(jù)表之間建立聯(lián)系。b.數(shù)據(jù)類型所有的字段都應(yīng)該定義數(shù)據(jù)類型
42、,數(shù)據(jù)類型使我們明確我們所獲得的數(shù)據(jù)的類型,用來約束類型不相符的數(shù)據(jù)的插入。c.檢查約束進(jìn)一步使用戶在進(jìn)行數(shù)據(jù)插入或數(shù)據(jù)更新的時(shí)候能夠保證數(shù)據(jù)的準(zhǔn)確性,也保證的數(shù)據(jù)庫數(shù)據(jù)的完整型和有效性。如果不進(jìn)行檢查約束,用戶很有可能看到不符合邏輯的數(shù)據(jù)呈現(xiàn)在數(shù)據(jù)表上,導(dǎo)致數(shù)據(jù)的準(zhǔn)確性降低。d.空將字段設(shè)為非空的目的是保證數(shù)據(jù)庫數(shù)據(jù)的完整性,防止數(shù)據(jù)庫中數(shù)據(jù)的丟失。e.觸發(fā)器觸發(fā)器可通過數(shù)據(jù)庫中的相關(guān)表實(shí)現(xiàn)級聯(lián)更改;不過,通過級聯(lián)引用完整性約束可以更有效地執(zhí)行這些更改。觸發(fā)器可以強(qiáng)制比用 check 約束定義的約束更為復(fù)雜的約束。與 check 約束不同,觸發(fā)器可以引用其它表中的列。例如,觸發(fā)器可以使用另一
43、個(gè)表中的 select 比較插入或更新的數(shù)據(jù),以及執(zhí)行其它操作,如修改數(shù)據(jù)或顯示用戶定義的錯(cuò)誤信息。觸發(fā)器也可以評估數(shù)據(jù)修改前后的表狀態(tài),并根據(jù)其差異采取對策。一個(gè)表中的多個(gè)同類觸發(fā)器(insert、update 或 delete)允許采取多個(gè)不同的對策以響應(yīng)同一個(gè)修改語句。3)封裝復(fù)雜業(yè)務(wù)的數(shù)據(jù)實(shí)現(xiàn)a.視圖 視圖是一個(gè)虛擬表,其內(nèi)容由查詢定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫中以存儲的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來自由定義視圖的查詢所引用的表,并且在引用視圖時(shí)動態(tài)生成。b.存儲過程sql語句執(zhí)行的時(shí)候要先編譯,然后執(zhí)行。存儲過程(stored pro
44、cedure)是一組為了完成特定功能的sql語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中。用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。存儲過程是數(shù)據(jù)庫中的一個(gè)重要對象,任何一個(gè)設(shè)計(jì)良好的數(shù)據(jù)庫應(yīng)用程序都應(yīng)該用到存儲過程。c.自定義函數(shù)通過編寫一系列的自定義函數(shù)來封裝一些數(shù)據(jù)庫的復(fù)雜操作,在物理數(shù)據(jù)層完成一些數(shù)據(jù)的操作。2.5.3 數(shù)據(jù)訪問層1)數(shù)據(jù)訪問層的必要性用戶通過數(shù)據(jù)訪問層來訪問數(shù)據(jù)庫要比直接訪問數(shù)據(jù)庫的安全性提高很多,在數(shù)據(jù)訪問層可以設(shè)計(jì)很多對數(shù)據(jù)庫訪問的約束條件,以及將c#類型和數(shù)據(jù)庫類型做轉(zhuǎn)換,方便了在訪問數(shù)據(jù)庫時(shí)的類型匹配。并且數(shù)據(jù)訪問層提供了更多對數(shù)據(jù)庫訪問的功能
45、,調(diào)用更加方便,查詢數(shù)據(jù),刪除數(shù)據(jù),插入數(shù)據(jù),更新數(shù)據(jù)的操作都會變的更加安全和方便。2)設(shè)計(jì)數(shù)據(jù)提供者組件的思考1接口的定義和設(shè)計(jì)思路在數(shù)據(jù)提供者中定義接口的目的是為了滿足切換多種不同的數(shù)據(jù)庫,是一種設(shè)計(jì)模式的中工廠模式的體現(xiàn)。2映射sql數(shù)據(jù)類型和c#數(shù)據(jù)類型sql中的數(shù)據(jù)類型char, nchar, ntext, nvarchar, text, varchar在c#類型中都是string類型,sql中的datetime, smalldatetime, date, time, datetime2, datetimeoffset在c#中都是datetime類型,sql中的,binary, im
46、age, timestamp, varbinary類型在c#中都是byte數(shù)組類型。為了將c#和sql數(shù)據(jù)類型轉(zhuǎn)換的方便,我們使用適配器模式對c#類型和數(shù)據(jù)庫類型進(jìn)行轉(zhuǎn)換。3使用datatable替代datareader使用datatable來獲取數(shù)據(jù)表比用datareader獲取字段更加方便快捷。并且datatable可以用適配器來填充數(shù)據(jù),并且在后期能提供反射的功能。反射使封裝更為完善,徹底。2.5.4 實(shí)體層1)實(shí)體層的必要性通過數(shù)據(jù)訪問層與數(shù)據(jù)庫進(jìn)行交流,其中一般會用到代碼生成器。直接將數(shù)據(jù)庫中的表名、字段映射到實(shí)體層。實(shí)體層作用,一般用到批量增加、修改時(shí)候用實(shí)體會比較好,因?yàn)椴挥脤?shù)
47、據(jù)直接與數(shù)據(jù)庫打交道。1.弱耦合參數(shù)的傳遞在傳遞參數(shù)時(shí),我們通過實(shí)體來傳遞,封裝了實(shí)體中所包含的字段,當(dāng)實(shí)體中的字段發(fā)生變化時(shí),我們只需要修改實(shí)體中的字段就可以了,外部代碼都可以保持原樣,體現(xiàn)了弱耦合的作用。2.內(nèi)聚函數(shù)的返回值當(dāng)返回一連串的參數(shù)時(shí),如果不使用實(shí)體,返回大量參數(shù)會變的很麻煩,如果我們把參數(shù)放到實(shí)體中,通過返回實(shí)體來返回實(shí)體中的參數(shù),返回參數(shù)就會變的很輕松,出錯(cuò)的概率也大大降低,體現(xiàn)了高內(nèi)聚的作用。2)封裝實(shí)體的共同屬性和方法1.公共屬性我們把所有實(shí)體的公共字段在基類中定義,并添加get,set方法,以便于子類的繼承,減少代碼的重復(fù)度。2.公共方法3)實(shí)體的構(gòu)造方式1.傳統(tǒng)的構(gòu)造
48、方式普通的通過datareader構(gòu)造實(shí)體的方式。需要構(gòu)造一個(gè)讀寫器,從中讀取數(shù)據(jù)。表 2.1 datareader構(gòu)造實(shí)體while(dr.read() city city=new city(); city.id = (int)drcityid; city.postalcode = drpostalcode.tostring(); city.name= drname.tostring(); city.distancecode=drdistancecode.tostring(); city.longitude=(decimal) drlongitude; city.latitude=(deci
49、mal)drlatitude; city.province=drprovince.tostring(); cities.add(city); 2.使用table進(jìn)行構(gòu)造我們可以在構(gòu)造函數(shù)中把這些值讀取出來,從而大量的減少代碼的重復(fù)度,同時(shí),我們可一把公共的字段值放到基類中去讀取,這樣又大大的減少了代碼的重復(fù)度。4)對實(shí)體對象的組件描述a.對實(shí)體中類的組件描述 serializable指示一個(gè)類是否可序列化。dataobject描述類是否是數(shù)據(jù)對象。表 2.2類的組件描述system.serializablesystem.componentmodel.dataobject(true)b.對實(shí)體中
50、屬性的組件描述對實(shí)體中的屬性有3種判斷:是否是主鍵,是否是數(shù)據(jù)庫標(biāo)識字段,是否允許為空。表2.3屬性的組件描述system.componentmodel.dataobjectfield(false,false,true)2.5.5 業(yè)務(wù)邏輯層1)業(yè)務(wù)邏輯層的定義業(yè)務(wù)邏輯層包含在類中定義的方法,包括,增加,刪除,修改,查詢的方法,這些方法的提供是保證項(xiàng)目功能實(shí)現(xiàn)的基礎(chǔ),項(xiàng)目所有的功能都必須通過這些方法來實(shí)現(xiàn)。所以該層的強(qiáng)大也是項(xiàng)目功能強(qiáng)大的基礎(chǔ)。我們在項(xiàng)目中定義了很多可能會使用到的方法,根據(jù)需求添加這些方法,使項(xiàng)目的功能更完善。2) 業(yè)務(wù)邏輯層提供的方法的分類1.直接描述業(yè)務(wù)的直接描述業(yè)務(wù)的方法
51、指的是以上類似城市所列出的方法,這些方法都會在業(yè)務(wù)的創(chuàng)建時(shí)被使用,是和業(yè)務(wù)息息相關(guān)的,這些方法必須非常詳細(xì),考慮到業(yè)務(wù)需求的各種可能,提供各種有可能被使用的方法。2.構(gòu)造實(shí)體構(gòu)造實(shí)體的方法和業(yè)務(wù)無關(guān),構(gòu)造實(shí)體是設(shè)計(jì)模式中的工廠模式的體現(xiàn),在構(gòu)造實(shí)體時(shí)我們還使用到了system.activator類來幫助構(gòu)造實(shí)體,這些方法對實(shí)體的構(gòu)造進(jìn)行了封裝,滿足了低耦合的需求,增加了系統(tǒng)的可維護(hù)性。2.5.6 頁面結(jié)構(gòu)層1)傳統(tǒng)頁面呈現(xiàn)的弊端傳統(tǒng)的頁面將頁面結(jié)構(gòu)和頁面呈現(xiàn)混合在了一起,如果要對頁面的外觀進(jìn)行修改,工作量會變的非常龐大,如果客戶要求更改頁面的外觀,修改的時(shí)間相當(dāng)于重新制作頁面的時(shí)間,這樣的頁面
52、是不符合可維護(hù)性的,無法維護(hù)是企業(yè)級軟件所不允許的。2)將結(jié)構(gòu)和呈現(xiàn)分離于是在頁面結(jié)構(gòu)層我們只將頁面的層次劃分清楚,而不考慮頁面的修飾,將頁面所需的數(shù)據(jù)元素統(tǒng)統(tǒng)呈現(xiàn)在頁面上,并將所有數(shù)據(jù)元素的層次用劃分清楚,雖然在頁面上看來非常的古板和單調(diào),沒有任何的修飾。但這種方式對樣式的改變有很大的簡化作用。3)使用xhtml描述語意化的頁面結(jié)構(gòu)(文檔結(jié)構(gòu))xhtml是the extensible hypertext markup language(可擴(kuò)展超文本標(biāo)識語言)的縮寫。html是一種基本的web網(wǎng)頁設(shè)計(jì)語言,xhtml是一個(gè)基于xml的置標(biāo)語言,看起來與html有些相象,只有一些小的但重要的區(qū)別
53、,xhtml就是一個(gè)扮演著類似html的角色的xml,所以,本質(zhì)上說,xhtml是一個(gè)過渡技術(shù),結(jié)合了部分xml的強(qiáng)大功能及大多數(shù)html的簡單特性。2.5.7 邏輯控制層1)邏輯控制層的工作意義 邏輯控制層的意義在于承上啟下。承上體現(xiàn)在邏輯控制層對頁面結(jié)構(gòu)層的控制作用。其目的是采集數(shù)據(jù)。啟下體現(xiàn)在邏輯控制層對業(yè)務(wù)邏輯層提供的業(yè)務(wù)方法的使用,并把這些業(yè)務(wù)的所需的功能體現(xiàn)在頁面結(jié)構(gòu)層上,其目的是加載數(shù)據(jù)。對采集數(shù)據(jù)和加載數(shù)據(jù)做進(jìn)一步的解析。a .采集數(shù)據(jù) 將用戶在界面的錄入和操作的數(shù)據(jù),以實(shí)體對象的方式,傳遞給業(yè)務(wù)邏輯層。比如說用戶在使用郵箱和密碼登陸時(shí),用戶把郵箱和密碼在文本框中輸入,并點(diǎn)擊提
54、交按鈕,在點(diǎn)擊提交按鈕式觸發(fā)了點(diǎn)擊按鈕的事件,通過該事件我們就能將文本框的數(shù)據(jù)傳到業(yè)務(wù)邏輯層,通過一個(gè)驗(yàn)證郵箱和密碼的方法來確認(rèn)這個(gè)郵箱和密碼是否存在與數(shù)據(jù)庫的數(shù)據(jù)表中,以驗(yàn)證用戶的身份,并判斷輸入的郵箱和密碼是否有效。b .加載數(shù)據(jù) 將業(yè)務(wù)邏輯層返回的實(shí)體數(shù)據(jù),加載到用戶界面的控件上。邏輯控制層通過listview和objectdatasource來獲取數(shù)據(jù)庫的數(shù)據(jù),我們可以通過itextcontorl來返回所需獲得的數(shù)據(jù)字段,并顯示到用戶界面上。2)邏輯控制層的數(shù)據(jù)交互模式a.數(shù)據(jù)源控件objectdatasource支持用戶自定義的實(shí)體對象參與并控制數(shù)據(jù)和界面的關(guān)系,是開發(fā)多層應(yīng)用的良好
55、選擇。我們采用objectdatasource配合listview實(shí)現(xiàn)數(shù)據(jù)的獲取,編輯和呈現(xiàn)。bsessionasp.net提供了session對象,從而允許程序員識別、存儲和處理同一個(gè)瀏覽器對象對服務(wù)器上某個(gè)特定網(wǎng)絡(luò)應(yīng)用程序的若干次請求的上下文信息。我們在進(jìn)行用戶登陸和返回某歷史頁面的時(shí)候就需要用到session。我們在登陸的事件發(fā)生時(shí),我們在驗(yàn)證登陸名和密碼正確之后,可以向所有的頁面?zhèn)鬟f該登陸用戶的個(gè)人信息。如果某個(gè)頁面需要登陸后才能訪問,我們在訪問該頁后就直接將也面轉(zhuǎn)到登陸界面,并用session記錄下該頁的頁名,當(dāng)用戶登陸后就直接轉(zhuǎn)到該頁。如表 2.4 session的用法 sessi
56、onid = components.user.login(username, password).id;c查詢字符串querystring是向單個(gè)頁面?zhèn)鬟f參數(shù)的方法,如果想要從某個(gè)頁面跳轉(zhuǎn)到另一個(gè)頁面,并帶給另一個(gè)頁面相關(guān)的信息,就可以使用querystring來傳遞相關(guān)的參數(shù)。如:表 2.5 querystring的用法entity = request.querystringentity;update = request.querystringupdate;id = request.querystringid;3)組件的事件和屬性listview中的下拉菜單中的數(shù)據(jù)需要做綁定處理表 2.6數(shù)據(jù)項(xiàng)創(chuàng)建激發(fā)事件protected void listview1_itemcreated(object sender, listviewitemeventargs e) listviewdataitem dataitem = (listviewdataitem)e.i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3725-2024 固定污染源廢氣非甲烷總經(jīng)連續(xù)監(jiān)測系統(tǒng)
- T-ZJBS 002-2024 城市公共標(biāo)識系統(tǒng)施工規(guī)范
- 二零二五年度戶口分家及遺產(chǎn)評估協(xié)議范本
- 二零二五年度股東退股及公司未來發(fā)展方向與投資布局協(xié)議
- 二零二五年度教育培訓(xùn)機(jī)構(gòu)春季招生促銷合同范本
- 二零二五年度高速公路施工安全責(zé)任豁免合同樣本
- 二零二五年度員工績效評估與職業(yè)發(fā)展輔導(dǎo)協(xié)議書
- 商業(yè)智能軟硬件開發(fā)合作協(xié)議
- 五年級數(shù)學(xué)探索圖形變化教學(xué)教案
- 優(yōu)化辦公室工作環(huán)境的策略
- 《化工生產(chǎn)技術(shù)》配套教學(xué)課件
- 液壓與氣壓傳動技術(shù)全套課件
- GB∕T 17587.1-2017 滾珠絲杠副 第1部分:術(shù)語和符號
- 中國傳媒大學(xué)《紀(jì)錄片創(chuàng)作教程》課件
- 蛋白電泳在腎臟疾病中的實(shí)際臨床應(yīng)用
- T∕CCCMHPIE 1.3-2016 植物提取物 橙皮苷
- 毫火針療法PPT課件
- 三年級部編版語文下冊第二單元日積月累
- 前輪轂止口不合格8D報(bào)告
- 蝴蝶蘭溫室工廠化栽培管理技術(shù)
- 銀行對賬單(共9頁)
評論
0/150
提交評論