基于Web+Services的商務(wù)網(wǎng)站研究_第1頁
基于Web+Services的商務(wù)網(wǎng)站研究_第2頁
基于Web+Services的商務(wù)網(wǎng)站研究_第3頁
基于Web+Services的商務(wù)網(wǎng)站研究_第4頁
基于Web+Services的商務(wù)網(wǎng)站研究_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

廣東師范畢業(yè)論文基于WebServices的商務(wù)網(wǎng)站研究指導(dǎo)教師:肖化昆老師計(jì)算機(jī)科學(xué)系專業(yè)名稱:計(jì)算機(jī)科學(xué)與技術(shù)論文提交日期:2006。5.22論文答辯日期:2006。5.29論文評閱人:摘要Ⅰ第一章緒論1-摘要介紹了Web服務(wù)的體系結(jié)構(gòu)和一些主要的相關(guān)技術(shù),在分析了WebServices體系結(jié)構(gòu)的基礎(chǔ)上,針對當(dāng)前網(wǎng)上書店系統(tǒng)存在的一些缺陷,研究并給出了一個(gè)基于WebServices的網(wǎng)上書店的設(shè)計(jì)方案。該網(wǎng)上書店分為前臺服務(wù)和后臺管理兩部分,主要功能模塊包括圖書管理、購物車管理、訂單管理、用戶管理、系統(tǒng)管理等.在總體結(jié)構(gòu)上,采用了現(xiàn)今流行的多層體系結(jié)構(gòu)和組件技術(shù),邏輯上劃分成數(shù)據(jù)層、中間層和表示層,表示層運(yùn)用ASP。NET的網(wǎng)頁技術(shù),中間層由WebServices組件提供業(yè)務(wù)服務(wù),數(shù)據(jù)層采用MicrosoftSQLServer2000數(shù)據(jù)庫系統(tǒng)。關(guān)鍵字:三層體系結(jié)構(gòu),組件,Web服務(wù),網(wǎng)上書店,ASP。NETAbstractAbstractPAGEIIPAGEⅢAbstractItisintroducedWebServicesarchitectureandsomeofthemajorrelatedtechnologies。BasedontheanalysisoftheWebServicesarchitectureandthecurrentsystemonlinebookstoreexistingsomeshortcomings,wegivearesearch-basedWebServicesonlinebookstoredesignprograms.Theonlinebookstoreisdividedintotwoparts:prospectsservicesandmanagementbackground。Andthemainfunctionalmodulesmakeoflibrarymanagement,ashoppingcartmanagement,ordermanagement,usermanagement,andsystemsmanagement。Intheoverallstructure,throductionofthecurrentepidemicofmulti-storeystructureandcomponentstechnology,logicallydividedintodatalayer,middlelayerandpresentationlayer。ThepresentationlayeruseASP。NETwebsitetechnology,themiddlelayerprovideoperationalservicesfromcomponentsofWebServices,andthedatalayeruseMicrosoftSQLServer2000databasesystem。Keywords:three(cuò)-tierarchitecture,components,WebServices,onlinebookshop,ASP。NET廣東技術(shù)師范學(xué)院計(jì)算機(jī)科學(xué)系畢業(yè)論文目錄PAGEIVPAGEIII目錄TOC\o"1—3"\h\z\uHYPERLINK\l"_Toc135983049"摘要?PAGEREF_Toc135983049\hIHYPERLINK\l”_Toc135983052"第一章緒論 PAGEREF_Toc135983052\h—1—HYPERLINK\l”_Toc135983053"第二章相關(guān)知識 PAGEREF_Toc135983053\h—3—HYPERLINK\l"_Toc135983054”2.1ASP.NET簡介 PAGEREF_Toc135983054\h-3—HYPERLINK\l"_Toc135983055”2.1.1ASP。NET的新性能?PAGEREF_Toc135983055\h-3-HYPERLINK\l”_Toc135983056"2。2XMLWebService簡介 3056\h—4—HYPERLINK\l”_Toc135983057"2。2.1簡單對象訪問協(xié)議--SOAP PAGEREF_Toc135983057\h—5-HYPERLINK\l”_Toc135983058"2.2.2Web服務(wù)描述語言--WSDL PAGEREF_Toc135983058\h-6—HYPERLINK\l"_Toc135983059”2.2.3通用發(fā)現(xiàn)、說明和集成――UDDI PAGEREF_Toc135983059\h-7-HYPERLINK\l"_Toc135983060"第三章網(wǎng)站功能分析及設(shè)計(jì)?PAGEREF_Toc135983060\h-9-HYPERLINK\l"_Toc135983061"3.1需求分析 PAGEREF_Toc135983061\h-9-HYPERLINK\l"_Toc135983062”3.2總體體系結(jié)構(gòu)圖?PAGEREF_Toc135983062\h—9—HYPERLINK3。3網(wǎng)站功能模塊設(shè)計(jì)?PAGEREF_Toc135983063\h—10—HYPERLINK\l"_Toc135983064"3。4網(wǎng)站功能模塊示意圖 PAGEREF_Toc135983064\h-11—HYPERLINK\l”_Toc135983065"3。4。1圖書管理模塊示意圖 PAGEREF_Toc135983065\h-11-HYPERLINK\l”_Toc135983066"3.4.2購物車管理模塊示意圖 PAGEREF_Toc135983066\h—14-HYPERLINK\l"_Toc135983067"3。4.3訂單管理模塊示意圖 PAGEREF_Toc135983067\h-14-HYPERLINK\l”_Toc135983068"3.4.4用戶管理模塊示意圖 PAGEREF_Toc135983068\h—17-HYPERLINK\l"_Toc135983069"3.4.5管理員信息管理模塊示意圖?PAGEREF_Toc135983069\h—19—HYPERLINK\l"_Toc135983070”第四章網(wǎng)站數(shù)據(jù)庫層設(shè)計(jì)及實(shí)現(xiàn)?PAGEREF_Toc135983070\h—21-HYPERLINK\l”_Toc135983071”4.1數(shù)據(jù)庫分析?PAGEREF_Toc135983071\h-21-HYPERLINK\l”_Toc135983072"4.2數(shù)據(jù)庫設(shè)計(jì) PAGEREF_Toc135983072\h-23-HYPERLINK\l"_Toc135983073"4.2.1數(shù)據(jù)表設(shè)計(jì)?PAGEREF_Toc135983073\h—23-HYPERLINK5。1。3設(shè)計(jì)過程及編碼?PAGEREF_Toc135983079\h—28-HYPERLINK\l"_Toc135983080"5.1.4測試?PAGEREF_Toc135983080\h-31-HYPERLINK\l"_Toc135983081"5.1.5客戶端調(diào)用 PAGEREF_Toc135983081\h-33—HYPERLINK\l"_Toc135983082"5。2bookWebService?PAGEREF_Toc135983082\h-33—HYPERLINK\l”_Toc135983083”5.2.1功能描述?PAGEREF_Toc135983083\h—33—HYPERLINK\l”_Toc135983084”5.2。2接口描述 PAGEREF_Toc135983084\h-33—HYPERLINK\l"_Toc135983085"5。2。3設(shè)計(jì)過程及編碼 35983085\h—34-HYPERLINK\l"_Toc135983086"5。2.4測試 PAGEREF_Toc135983086\h-43-HYPERLINK\l"_Toc135983087"5.2.5客戶端調(diào)用 PAGEREF_Toc135983087\h-44-HYPERLINK5.3。2orderWebService PAGEREF_Toc135983090\h-44-HYPERLINK\l"_Toc135983091”5。3.3customerWebService?135983091\h—45-HYPERLINK\l"_Toc135983092"5.3。4adminWebService PAGEREF_Toc135983092\h—46-HYPERLINK\l"_Toc135983093"第六章表示層設(shè)計(jì)及實(shí)現(xiàn) 135983093\h-49—HYPERLINK\l”_Toc135983094"6.1clientWebApplication應(yīng)用程序?PAGEREF_Toc135983094\h-49—HYPERLINK7。1.1創(chuàng)建Web安裝程序?PAGEREF_Toc135983097\h-65-HYPERLINK\l"_Toc135983098"7.1.2數(shù)據(jù)庫的備份?PAGEREF_Toc135983098\h-68—HYPERLINK\l”_Toc135983099"7。1.3運(yùn)行環(huán)境的配置 PAGEREF_Toc135983099\h-69-HYPERLINK\l”_Toc135983100”7.2部署圖?PAGEREF_Toc135983100\h—69—HYPERLINK\l"_Toc135983101"7.2.1表示層部署圖 PAGEREF_Toc135983101\h—69-HYPERLINK\l"_Toc135983102”7。2.2中間層部署圖 PAGEREF_Toc135983102\h—70—HYPERLINK\l"_Toc135983103"7。3部署過程?PAGEREF_Toc135983103\h-70-HYPERLINK\l”_Toc135983104"7。3.1表示層部署過程?PAGEREF_Toc135983104\h—70-HYPERLINK\l”_Toc135983105”7.3。2中間層部署過程 PAGEREF_Toc135983105\h-71—HYPERLINK\l"_Toc135983106”7.3.3數(shù)據(jù)庫部署過程?PAGEREF_Toc135983106\h-72-HYPERLINK\l”_Toc135983107"7.4部署完成的測試 PAGEREF_Toc135983107\h—73—HYPERLINK\l"_Toc135983108”結(jié)論 PAGEREF_Toc135983108\h-75—HYPERLINK\l"_Toc135983109"參考文獻(xiàn):?PAGEREF_Toc135983109\h—77—HYPERLINK\l"_Toc135983110"致謝?PAGEREF_Toc135983110\h-79-HYPERLINK\l”_Toc135983111"附錄A搭建開發(fā)平臺和運(yùn)行環(huán)境 PAGEREF_Toc135983111\h—81-HYPERLINK\l”_Toc135983112”A.1Windows.NETFramework安裝 PAGEREF_Toc135983112\h-81-HYPERLINK\l”_Toc135983113”A。2MicrosoftVisualStudio.NET2003安裝?PAGEREF_Toc135983113\h-82-HYPERLINK\l"_Toc135983114"A.3MicrosoftSQLServer2000安裝?PAGEREF_Toc135983114\h—84-HYPERLINKA.4客戶端軟件安裝?PAGEREF_Toc135983115\h—86-HYPERLINK附錄B工作說明 PAGEREF_Toc135983116\h-87—第一章緒論1-第一章緒論.NET是微軟公司的XMLWeb服務(wù)平臺,它是為了解決互聯(lián)網(wǎng)應(yīng)用存在的普通問題而預(yù)先建立的基礎(chǔ)設(shè)施。即將程序開發(fā)的側(cè)重點(diǎn)從連接到互聯(lián)網(wǎng)的單一網(wǎng)站或設(shè)備上,轉(zhuǎn)移到計(jì)算機(jī)、設(shè)備和服務(wù)群組上,使其通力合作,提供更加廣泛、更加豐富的解決方案。用戶將能夠控制信息的傳送方式、時(shí)間和內(nèi)容.計(jì)算機(jī)、設(shè)備和服務(wù)將能夠相輔相成,從而提供豐富的服務(wù),而不是像信息孤島那樣,由用戶提供惟一的集成。網(wǎng)上商店,目前已累見不鮮,但基于WebServices并在.NET平臺上開發(fā)的就寥若晨星。本次畢業(yè)設(shè)計(jì)題目:“基于WebServices的商務(wù)網(wǎng)站研究",主要目的是通過在.NET平臺上開發(fā)網(wǎng)站這一實(shí)例詳細(xì)介紹WebServices的應(yīng)用及功能.通過實(shí)際的操作深入了解WebServices這一現(xiàn)今流行的技術(shù),當(dāng)然也包括學(xué)習(xí)Web服務(wù)器控件、用戶控件、數(shù)據(jù)綁定技術(shù)、多層分布式設(shè)計(jì)等。本網(wǎng)上書店系統(tǒng)是基于集中統(tǒng)一規(guī)劃的數(shù)據(jù)庫數(shù)據(jù)管理新模式設(shè)計(jì)的。在對書本、用戶、訂單、管理員信息的管理,其實(shí)是對書本、用戶、訂單、管理員數(shù)據(jù)的管理。它的開發(fā)過程也就是多層分布式應(yīng)用程序的創(chuàng)建過程,其中包括:數(shù)據(jù)層、中間層、表示層,開發(fā)多層分布式應(yīng)用程序的一個(gè)可能的方案是一次創(chuàng)建一層,多半是從數(shù)據(jù)層開始,然后移到中間層業(yè)務(wù)規(guī)則對象,最后創(chuàng)建用戶界面層。對于開發(fā)工具我們選擇:InternetInformat(yī)ionServices6。0(IIS6.0)+MicrosoftVisualStudio.NET2003+MicrosoftSQLServer2000。在附錄里,我們會介紹他們的安裝過程。本網(wǎng)上書店的整個(gè)設(shè)計(jì)及實(shí)現(xiàn)過程,我們采取的是分工合作的模式:陳棣燃同學(xué)負(fù)責(zé)表示層的設(shè)計(jì)及實(shí)現(xiàn);陳韶記同學(xué)負(fù)責(zé)中間層和數(shù)據(jù)層的設(shè)計(jì)及實(shí)現(xiàn)。相應(yīng)的,該論文的編寫,我們采取的是誰做那塊,就負(fù)責(zé)那塊的編寫,而其余部分,就是大家共同努力的結(jié)果了。詳細(xì)分工,請參看附錄B工作說明。廣東技術(shù)師范學(xué)院計(jì)算機(jī)科學(xué)系畢業(yè)論文第二章相關(guān)知識1045-第二章相關(guān)知識2。1ASP.NET簡介ASP.NET是Microsoft.NET的一部分,作為戰(zhàn)略產(chǎn)品,不僅僅是ActiveServerPage(ASP)的下一個(gè)版本;它還提供了一個(gè)統(tǒng)一的Web開發(fā)模型,其中包括開發(fā)人員生成企業(yè)級Web應(yīng)用程序所需的各種服務(wù).ASP。NET的語法在很大程度上與ASP兼容,同時(shí)它還提供一種新的編程模型和結(jié)構(gòu),可生成伸縮性和穩(wěn)定性更好的應(yīng)用程序,并提供更好的安全保護(hù).可以通過在現(xiàn)有ASP應(yīng)用程序中逐漸添加ASP.NET功能,隨時(shí)增強(qiáng)ASP應(yīng)用程序的功能.ASP.NET是一個(gè)已編譯的、基于.NET的環(huán)境,可以用任何與.NET兼容的語言(包括VisualBasic.NET、C#和JScript.NET等)創(chuàng)作應(yīng)用程序.另外,任何ASP。NET應(yīng)用程序都可以使用整個(gè).NETFramework。開發(fā)人員可以方便地獲得這些技術(shù)的優(yōu)點(diǎn),其中包括托管的公共語言運(yùn)行庫環(huán)境、類型安全、繼承等等。ASP.NET可以無縫地與WYSIWYGHTML編輯器或其他編程工具(包括MicrosoftVisualStudio.NET)一起工作.這不僅使得Web開發(fā)更加方便,而且還能提供這些工具必須提供的所有優(yōu)點(diǎn),包括開發(fā)人員可以用來將服務(wù)器控件拖放到Web頁的GUI(GraphicalUserInterface的簡稱,即圖形用戶接口)和完全集成的調(diào)試支持。微軟為ASP。net設(shè)計(jì)了這樣一些策略:易于寫出結(jié)構(gòu)清晰的代碼、代碼易于重用和共享、可用編譯類語言編寫等等,目的是讓程序員更容易開發(fā)出Web應(yīng)用,滿足計(jì)算向Web轉(zhuǎn)移的戰(zhàn)略需要。2.1。1ASP。NET的新性能ASP.NET提供了穩(wěn)定的性能、優(yōu)秀的升級性、更快速的開發(fā)、更簡便的管理、全新的語言以及網(wǎng)絡(luò)服務(wù)。貫穿整個(gè)ASP。NET的主題就是系統(tǒng)幫用戶做了大部分不重要的瑣碎的工作.全新的構(gòu)造新的ASP。NET引入代碼托管(ManagedCode)這樣一個(gè)全新概念,橫貫整個(gè)視窗開發(fā)平臺.受管代碼在NGWSRuntime下運(yùn)行,而NGWSRuntime是一個(gè)時(shí)間運(yùn)行環(huán)境,它管理代碼的執(zhí)行,使程序設(shè)計(jì)更為簡便。高效率對于一個(gè)程序,速度是一件非常令人渴望的東西。一旦代碼開始工作,接下來你就得盡可能地讓它運(yùn)作得快些快些再快些。在ASP中你只有盡可能精簡你的代碼,以至于不得不將它們移植到一個(gè)僅有很少一點(diǎn)性能的部件中。而現(xiàn)在,ASP。NET會妥善地解決這一問題。易控制在ASP.NET里,你將會擁有一個(gè)“Data—Bounds"(數(shù)據(jù)綁定),這意味著它會與數(shù)據(jù)源連接,并會自動裝入數(shù)據(jù),使控制工作簡單易行。語言支持ASP.NET支持多種語言,支持編譯類語言,支持比如VB、VC++、C#等,它比這些編譯類語言運(yùn)行速度快,更適合編寫大型應(yīng)用.更好的升級能力快速發(fā)展的分布式應(yīng)用也需要更快速、更模塊化、更易操作、更多平臺支持和重復(fù)利用性更強(qiáng)的開發(fā),需要一種新的技術(shù)來適應(yīng)不同的系統(tǒng),網(wǎng)絡(luò)應(yīng)用和網(wǎng)站需要提供一種更加強(qiáng)大的可升級的服務(wù).ASP。NET能夠適應(yīng)上面的要求。讓你的生活更簡單對于今天的Web程序員來說,最大的挑戰(zhàn)就是不斷變化的瀏覽器兼容性以及它們不斷升級的復(fù)雜性.在保證頁面能在所有瀏覽器下工作的同時(shí),又得盡量使用每個(gè)瀏覽器的最新屬性來建立更具交互性的頁面,這簡直就是一場噩夢。更加可怕的是,需要對不同的用戶設(shè)備建立不同的網(wǎng)頁.最簡單的解決辦法就是動態(tài)地對不同的用戶生成不同的輸出,或者就是對不同的用戶寫多個(gè)頁面。大多數(shù)開發(fā)者都會選擇第一種方法。但是,這就意味著用戶的每次點(diǎn)擊都會讓服務(wù)器判斷應(yīng)該向用戶顯示什么。而通過ASP。NET,我們可以看到一個(gè)新的服務(wù)控制的概念,它封裝了一些普通的任務(wù),提供了一種清晰的編程模塊,有助于管理和處理不同的用戶類型。簡單地說,ASP.NET把這些過程自動化了.2.2XMLWebService簡介 XMLWebService是在Internet上進(jìn)行分布式計(jì)算的基本構(gòu)造塊,它通過SOAP在Web上提供軟件服務(wù),使用WSDL文件進(jìn)行說明,并通過UDDI進(jìn)行注冊。開放的標(biāo)準(zhǔn)以及對用戶和應(yīng)用程序之間的通信和協(xié)作的關(guān)注產(chǎn)生了這樣一種環(huán)境,在這種環(huán)境下,XMLWebService成為應(yīng)用程序集成的平臺。應(yīng)用程序是通過使用多個(gè)不同來源的XMLWebService構(gòu)造而成的,這些服務(wù)相互協(xié)同工作,而不管它們位于何處或者如何實(shí)現(xiàn).XMLWebService體系結(jié)構(gòu)的主要優(yōu)點(diǎn)之一是:允許在不同平臺上、以不同語言編寫的各種程序以基于標(biāo)準(zhǔn)的方式相互通信。相對以前的方案而言,XMLWebService的另一大優(yōu)點(diǎn)是使用標(biāo)準(zhǔn)的Web協(xié)議:XML、HTTP和TCP/IP.許多公司都已經(jīng)建立了Web基礎(chǔ)結(jié)構(gòu),同時(shí)它們的員工在維護(hù)方面也都具備相應(yīng)的知識和經(jīng)驗(yàn)。因此,引入XMLWebService與引入以前的技術(shù)相比,其成本要低得多。 有多少個(gè)構(gòu)建XMLWebService的公司,就可能有多少種XMLWebService定義。不過幾乎所有定義都具有以下共同點(diǎn):XMLWebService通過標(biāo)準(zhǔn)的Web協(xié)議向Web用戶提供有用的功能.多數(shù)情況下使用SOAP協(xié)議。XMLWebService可以非常詳細(xì)地說明其接口,這使用戶能夠創(chuàng)建客戶端應(yīng)用程序與它們進(jìn)行通信。這種說明通常包含在稱為Web服務(wù)說明語言(WSDL)文檔的XML文檔中。XMLWebService已經(jīng)過注冊,以便潛在用戶能夠輕易地找到這些服務(wù),這是通過通用發(fā)現(xiàn)、說明和集成(UDDI)來完成的。接下來我們就介紹一下這三種技術(shù)。2.2.1簡單對象訪問協(xié)議--SOAPSOAP(SimpleObjectAccessProtocol)是XMLWebService的通信協(xié)議。它是一種規(guī)范,用來定義消息的XML格式,這是規(guī)范中所必需的部分。包含在一對SOAP元素中的、結(jié)構(gòu)正確的XML段就是SOAP消息.SOAP規(guī)范的其他部分介紹如何將程序數(shù)據(jù)表示為XML,以及如何使用SOAP進(jìn)行遠(yuǎn)程過程調(diào)用(RPC).這些可選的規(guī)范部分用于實(shí)現(xiàn)RPC形式的應(yīng)用程序,其中客戶端將發(fā)出一條SOAP消息(包含可調(diào)用函數(shù),以及要傳送到該函數(shù)的參數(shù)),然后服務(wù)器將返回包含函數(shù)執(zhí)行結(jié)果的消息.目前,多數(shù)SOAP實(shí)現(xiàn)方案都支持RPC應(yīng)用程序,這是因?yàn)榱?xí)慣于開發(fā)COM或CORBA應(yīng)用程序的編程人員熟悉RPC形式。SOAP還支持文檔形式的應(yīng)用程序,在這類應(yīng)用程序中,SOAP消息只是XML文檔的一個(gè)包裝.文檔形式的SOAP應(yīng)用程序非常靈活,許多新的XMLWebService都利用這一特點(diǎn)來構(gòu)建使用RPC難以實(shí)現(xiàn)的服務(wù)。SOAP規(guī)范的最后一個(gè)可選部分定義了包含SOAP消息的HTTP消息的樣式。此HTTP綁定非常重要,因?yàn)閹缀跛挟?dāng)前的OS(以及許多以前的OS)都支持HTTP。HTTP綁定雖然是可選的,但幾乎所有SOAP實(shí)現(xiàn)方案都支持HTTP綁定,因?yàn)樗荢OAP的唯一標(biāo)準(zhǔn)協(xié)議。由于這一原因,人們通常誤認(rèn)為SOAP必須使用HTTP。其實(shí),有些實(shí)現(xiàn)方案也支持MSMQ、MQ系列、SMTP或TCP/IP傳輸,但由于HTTP非常普遍,幾乎所有當(dāng)前的XMLWebService都使用它。由于HTTP是Web的核心協(xié)議,因此大多數(shù)組織的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)都支持HTTP。如今,已經(jīng)建立了用于HTTP的安全保護(hù)、監(jiān)視和負(fù)載平衡的基礎(chǔ)結(jié)構(gòu).開始使用SOAP時(shí),最容易混淆的是SOAP規(guī)范及其許多實(shí)現(xiàn)方案之間的差異。多數(shù)使用SOAP的用戶并不直接編寫SOAP消息,而是使用SOAP工具包來創(chuàng)建和分析SOAP消息.這些工具包通常將函數(shù)調(diào)用從某種語言轉(zhuǎn)換為SOAP消息.例如,MicrosoftSOAPToolkit2.0將COM函數(shù)調(diào)用轉(zhuǎn)換為SOAP,而ApacheToolkit將JAVA函數(shù)調(diào)用轉(zhuǎn)換為SOAP。函數(shù)調(diào)用的類型和支持的參數(shù)的數(shù)據(jù)類型隨每個(gè)SOAP實(shí)現(xiàn)方案的不同而不同,因此適用于一個(gè)工具包的函數(shù)可能并不適用于另一個(gè)工具包。這并不是SOAP的限制,而是所使用的特定實(shí)現(xiàn)方案的限制。到目前為止,SOAP最引人注目的特征是它可以在許多不同的軟件和硬件平臺上實(shí)現(xiàn).這意味著SOAP可用于鏈接企業(yè)內(nèi)部和外部的不同系統(tǒng).過去曾試過多種方法以提出一個(gè)可用于系統(tǒng)集成的通用通信協(xié)議,但它們都沒有像SOAP一樣獲得廣泛的認(rèn)可。為什么呢?因?yàn)榕c許多早期的協(xié)議相比,SOAP更小巧,而且更易于實(shí)現(xiàn)。例如,DCE和CORBA的實(shí)現(xiàn)需要數(shù)年時(shí)間,所以只發(fā)布了很少幾個(gè)實(shí)現(xiàn)方案。而SOAP可以利用現(xiàn)有的XML分析器和HTTP庫完成大部分艱苦的工作,因此SOAP實(shí)現(xiàn)方案在數(shù)月內(nèi)便可完成。這就是為什么現(xiàn)在已經(jīng)有70多個(gè)SOAP實(shí)現(xiàn)方案的原因。當(dāng)然,SOAP并不具備DCE或CORBA的全部功能,雖然功能減少了,但由于其復(fù)雜程度大大降低了,因此SOAP更易于應(yīng)用。2.2.2Web服務(wù)描述語言--WSDLWSDL(WebServicesDescriptionLanguage)表示W(wǎng)eb服務(wù)說明語言。我們可以認(rèn)為WSDL文件是一個(gè)XML文檔,用于說明一組SOAP消息以及如何交換這些消息。換句話說,WSDL對于SOAP的作用就像IDL對于CORBA或COM的作用。由于WSDL是XML文檔,因此很容易進(jìn)行閱讀和編輯;但大多數(shù)情況下,它由軟件生成和使用.WSDL文件用于說明消息格式的表示法以XML架構(gòu)標(biāo)準(zhǔn)為基礎(chǔ),這意味著它與編程語言無關(guān),而且以標(biāo)準(zhǔn)為基礎(chǔ),因此適用于說明可從不同平臺、以不同編程語言訪問的XMLWebService接口。除說明消息內(nèi)容外,WSDL還定義了服務(wù)的位置,以及使用什么通信協(xié)議與服務(wù)進(jìn)行通信。也就是說,WSDL文件定義了編寫使用XMLWebService的程序所需的全部內(nèi)容.有幾種工具可以讀取WSDL文件,并生成與XMLWebService通信所需的代碼.其中一些最強(qiáng)大的工具可在MicrosoftVisualStudio。NET中找到.當(dāng)前,許多SOAP工具包都包括從現(xiàn)有程序接口生成WSDL文件的工具,但卻幾乎沒有直接用于編寫WSDL的工具,而且WSDL的工具支持也很不完整。但不久就會出現(xiàn)編寫WSDL文件的工具,接著還會有生成代理和存根的工具(與COMIDL工具很相似),這些工具將成為多數(shù)SOAP實(shí)現(xiàn)方案的一部分。到那時(shí),WSDL將成為創(chuàng)建XMLWebService的SOAP接口的首選方法。2。2.3通用發(fā)現(xiàn)、說明和集成――UDDIUDDI(UniversalDescriptionDiscoveryandIntegration)是Web服務(wù)的黃頁。與傳統(tǒng)黃頁一樣,您可以搜索提供所需服務(wù)的公司,閱讀以了解所提供的服務(wù),然后與某人聯(lián)系以獲得更多信息。當(dāng)然,你也可以提供Web服務(wù)而不在UDDI中注冊,就像在地下室開展業(yè)務(wù),依靠的是口頭吆喝;但是如果您希望拓展市場,則需要UDDI以便能被客戶發(fā)現(xiàn)。UDDI目錄條目是介紹所提供的業(yè)務(wù)和服務(wù)的XML文件.UDDI目錄條目包括三個(gè)部分。“白頁”介紹提供服務(wù)的公司:名稱、地址、聯(lián)系方式等等;“黃頁"包括基于標(biāo)準(zhǔn)分類法(例如NorthAmericanIndustryClassificat(yī)ionSystem和StandardIndustrialClassificat(yī)ion)的行業(yè)類別;“綠頁"詳細(xì)介紹了訪問服務(wù)的接口,以便用戶能夠編寫應(yīng)用程序以使用Web服務(wù)。服務(wù)的定義是通過一個(gè)稱為類型模型(或tModel)的UDDI文檔來完成的。多數(shù)情況下,tModel包含一個(gè)WSDL文件,用于說明訪問XMLWebService的SOAP接口,但是tModel非常靈活,可以說明幾乎所有類型的服務(wù)。UDDI目錄還包含若干種方法,可用于搜索構(gòu)建您的應(yīng)用程序所需的服務(wù).例如,您可以搜索特定地理位置的服務(wù)提供商或者搜索特定的業(yè)務(wù)類型。之后,UDDI目錄將提供信息、聯(lián)系方式、鏈接和技術(shù)數(shù)據(jù),以便您確定能滿足需要的服務(wù)。到現(xiàn)在為止,我們已經(jīng)知道了如何與XMLWebService通信(SOAP),XMLWebService是怎樣進(jìn)行說明的(WSDL),以及如何查找XMLWebService(UDDI)。這些內(nèi)容構(gòu)成了一套基本規(guī)范,為應(yīng)用程序的集成和聚合提供了基礎(chǔ)。根據(jù)這些基本規(guī)范,我們可以構(gòu)建實(shí)際的解決方案,并從中獲益。但在這里卻有了一個(gè)問題:我們要怎樣用這個(gè)XMLWebService呢?有一個(gè)很簡單的方法,就是創(chuàng)建代理對象。.NETXMLWeb服務(wù)代理(通常簡稱為代理)是連接。NETFramework和XMLWeb服務(wù)的一座橋梁,它使得編程人員可以方便快速的使用服務(wù)。在VisualStudio.NET里,可以自動創(chuàng)建代理對象,因此編程人員無需詳細(xì)了解底層技術(shù)。這就大大減少了出錯(cuò)的概率,這也是為何我們選用VisualStudio.NET2003作為開發(fā)工具的原因之一.在以下的章節(jié)中,我們將介紹如何用ASP。NET創(chuàng)建XMLWebService,及如何使用代理對象來使用所創(chuàng)建的XMLWebService提供的服務(wù)。第三章網(wǎng)站功能分析及設(shè)計(jì)第三章網(wǎng)站功能分析及設(shè)計(jì)3.1需求分析網(wǎng)上書店系統(tǒng)主要是處理網(wǎng)上購書和庫存的系統(tǒng)。一個(gè)典型的網(wǎng)上書店系統(tǒng)應(yīng)該提供具有圖書分類檢索和搜索、購物車管理、在線訂單、商品推薦、顧客評論等功能和強(qiáng)大的后臺管理功能。根據(jù)網(wǎng)上書店基本需求,本系統(tǒng)需要完成的任務(wù)如下:書籍信息管理:管理員對書類和書本的添加、刪除、修改、查詢的操作,查看書籍的庫存,如果書籍低于安全庫存能及時(shí)進(jìn)貨。訂單信息管理:管理員可以查詢新訂單、歷史訂單及刪除歷史訂單,通過訂單上的信息可以進(jìn)行送貨及了解書本銷售情況。在線購物管理:用戶可以瀏覽不同類別的所有書本信息,也可以對書本進(jìn)行查找,網(wǎng)上書店可以實(shí)現(xiàn)類別、書名、作者、出版社等綜合搜索功能,也可以查看用戶對書籍的評語,只當(dāng)注冊用戶登錄后,才能對書籍進(jìn)行評論.用戶無需登錄,就可以把喜愛的若干書籍放入購物車,同一本書也可以購買多冊;同時(shí)可以修改里面的購書情況,直至購書完畢,確定所需書籍無誤后提交訂單,但此時(shí)系統(tǒng)會檢測用戶是否已經(jīng)登錄,如還沒登錄,就會引導(dǎo)用戶登錄。只有登錄后的用戶才能成功提交訂單.用戶管理:分前臺服務(wù)和后臺管理兩部分。在前臺服務(wù)中,用戶必須注冊才能成功購買店內(nèi)書籍,用戶注冊成為會員后,系統(tǒng)會在數(shù)據(jù)庫中添加用戶信息,包括用戶名、用戶密碼、住址、聯(lián)系電話等,用戶可自行修改個(gè)人資料;在后臺管理中,管理員可以對用戶的注冊信息進(jìn)行查看,并對用戶的注冊信息進(jìn)行驗(yàn)證(通過,或者刪除)。管理員信息管理:管理員可以更新自己的個(gè)人信息。3.2總體體系結(jié)構(gòu)圖在本設(shè)計(jì)中,我們將創(chuàng)建一個(gè)多層的分布式商務(wù)網(wǎng)站(網(wǎng)上書店)。此商務(wù)網(wǎng)站由三個(gè)邏輯層組成:數(shù)據(jù)層、中間層和表示層。數(shù)據(jù)層是SQLServer中的數(shù)據(jù)庫.中間層處理如何訪問數(shù)據(jù)以及如何將數(shù)據(jù)分發(fā)到客戶端。表示層由基于Web的應(yīng)用程序組成.圖3。1描述了此商務(wù)網(wǎng)站的體系結(jié)構(gòu)。Web客戶端應(yīng)用程序Web客戶端應(yīng)用程序Web窗體業(yè)務(wù)邏輯的WebServicesbookWebService,orderWebService,customerWebServicecommentWebServiceadminWebService表示層中間層數(shù)據(jù)層JY_EStore數(shù)據(jù)庫對數(shù)據(jù)庫操作的WebServicesdataBaseWebService通過SOAP調(diào)用WebServices通過SOAP調(diào)用WebServices圖3。1體系結(jié)構(gòu)圖3.3網(wǎng)站功能模塊設(shè)計(jì)根據(jù)對網(wǎng)上書店系統(tǒng)的需求分析,網(wǎng)上書店系統(tǒng)應(yīng)該包括圖書管理模塊、訂單管理模塊、購物車管理模塊、用戶管理模塊和管理員信息管理模塊。圖書管理模塊圖書管理包括前臺與后臺。前臺是面向顧客的,它允許用戶瀏覽圖書列表、快速查詢所需要的圖書、查看和添加圖書評論;后臺是面向管理員的,允許管理員添加、刪除、修改、查詢書類與書籍。需要注意的一點(diǎn)是,在刪除書籍的時(shí)候,不能把它真的從數(shù)據(jù)庫里刪除,只能把它的狀態(tài)設(shè)為0(不可用)。因?yàn)槿绻娴陌阉鼜臄?shù)據(jù)庫里刪除的話,會引起數(shù)據(jù)的不完整性。購物車管理模塊顧客可以把要買的圖書放入購物車,可以查看、刪除、修改購物車的內(nèi)容,確認(rèn)購物情況無誤后可以提交訂單。訂單管理模塊前臺訂單主要實(shí)現(xiàn)用戶結(jié)賬功能,當(dāng)然也包括顧客查看歷史訂單的功能。后臺訂單功能模塊包括顯示新訂單信息和顯示訂單的詳細(xì)信息。顯示新訂單負(fù)責(zé)顯示所有的新訂單記錄,顯示訂單詳細(xì)信息負(fù)責(zé)顯示某個(gè)指定訂單的詳細(xì)信息,包括用戶名稱、所訂書籍名稱及數(shù)量、金額、聯(lián)系電話、地址信息。用戶管理模塊用戶管理模塊包含用戶注冊、用戶登錄、修改用戶個(gè)人信息(以上為前臺服務(wù))和管理員驗(yàn)證用戶注冊信息(這個(gè)為后臺管理的)等功能。管理員信息管理模塊管理員更新自己的個(gè)人信息。3.4網(wǎng)站功能模塊示意圖3.4.1圖書管理模塊示意圖該模塊有兩部分:前臺服務(wù)和后臺管理。3。4.1.1圖書管理模塊的前臺服務(wù)示意圖index.aspxindex.aspxallBookInCategory.aspxsearchBook.aspxbookDetail.aspxsearchBookResult.aspx表示層中間層book.asmx對書籍操作的Web服務(wù)dataBase.asmx對數(shù)據(jù)庫操作的Web服務(wù)JY_EStore數(shù)據(jù)庫數(shù)據(jù)層每類銷量前二的書籍某類全部書籍信息某書籍詳細(xì)信息搜索結(jié)果comment.asmx對書籍評論操作的Web服務(wù)書籍評論信息廣東技術(shù)師范學(xué)院計(jì)算機(jī)科學(xué)系畢業(yè)論文第三章網(wǎng)站功能分析及設(shè)計(jì)18-3。4.1。2圖書管理模塊的后臺管理示意圖manageBook.aspxmanageBook.aspxaddBookCategory.aspxaddOrUpdateSafeStock.aspxdelBook.aspxdelBookCategory.aspx表示層searchBook.aspxbookSearchResult.aspxbook.asmx對書籍操作的Web服務(wù)中間層dataBase.asmx對數(shù)據(jù)庫操作的Web服務(wù)JY_EStore數(shù)據(jù)庫數(shù)據(jù)層搜索結(jié)果添加書類刪除書類得需進(jìn)貨書籍添加書籍刪除書籍更新安全庫存量comment.asmx對數(shù)據(jù)庫操作的Web服務(wù)書籍評論addBookCover.aspx、addBook.aspx3.4.2購物車管理模塊示意圖showCart.aspxshowCart.aspxbook.asmx對書籍操作的Web服務(wù)中間層表示層JY_EStore數(shù)據(jù)庫dataBase.asmx對數(shù)據(jù)庫操作的Web服務(wù)數(shù)據(jù)層得到書籍信息3.4.3訂單管理模塊示意圖該模塊有兩部分:前臺服務(wù)和后臺管理。3.4.3.1訂單管理模塊前臺服務(wù)示意圖orderDetail.aspxorderDetail.aspxcheckOut.aspxorder.asmx對訂單操作的Web服務(wù)下訂信息歷史訂單表示層中間層數(shù)據(jù)層JY_EStore數(shù)據(jù)庫dataBase.asmx對數(shù)據(jù)庫操作的Web服務(wù)3.4。3.2訂單管理模塊后臺管理示意圖manageOrder.aspxmanageOrder.aspxdeliverGoodsYet.aspxorder.asmx對訂單操作的Web服務(wù)表示層中間層數(shù)據(jù)層JY_EStore數(shù)據(jù)庫dataBase.asmx對數(shù)據(jù)庫操作的Web服務(wù)orderDetail.aspxcustomer.asmx對顧客操作的Web服務(wù)deliverGoodsDetail.aspxorderSearchResult.aspx注:頁面與訂單Web服務(wù)的數(shù)據(jù)流都是訂單信息;而與顧客Web服務(wù)的數(shù)據(jù)流則是顧客信息。3。4.4用戶管理模塊示意圖該模塊同樣分為前臺服務(wù)和后臺管理兩部分。3.4.4。1用戶管理模塊前臺服務(wù)示意圖register.aspxregister.aspxchangeInformation.aspxgetPassword.aspxlogin.aspx中間層數(shù)據(jù)層JY_EStore數(shù)據(jù)庫dataBase.asmx對數(shù)據(jù)庫操作的Web服務(wù)customer.asmx對顧客操作的Web服務(wù)表示層顧客注冊信息顧客密碼信息登錄信息顧客新信息3.4。4。2用戶管理模塊后臺管理示意圖manageCustomer.aspxmanageCustomer.aspxcustSearchResult.aspxcustomerDetail.aspxcustomer.asmx對顧客信息操作的Web服務(wù)數(shù)據(jù)層JY_EStore數(shù)據(jù)庫dataBase.asmx對數(shù)據(jù)庫操作的Web服務(wù)中間層表示層顧客詳細(xì)信息新注冊顧客信息搜索結(jié)果3。4.5管理員信息管理模塊示意圖manageAdminInfo.aspxmanageAdminInfo.aspxadmin.asmx對管理員信息操作的Web服務(wù)數(shù)據(jù)層JY_EStore數(shù)據(jù)庫dataBase.asmx對數(shù)據(jù)庫操作的Web服務(wù)中間層表示層新管理員信息廣東技術(shù)師范學(xué)院計(jì)算機(jī)科學(xué)系畢業(yè)論文第四章網(wǎng)站數(shù)據(jù)庫層設(shè)計(jì)及實(shí)現(xiàn)24-第四章網(wǎng)站數(shù)據(jù)庫層設(shè)計(jì)及實(shí)現(xiàn)一個(gè)成功的系統(tǒng),是由:50%的“數(shù)據(jù)庫”+50%的“程序”所組成,數(shù)據(jù)庫設(shè)計(jì)的好壞是一個(gè)關(guān)鍵。如果把企業(yè)的數(shù)據(jù)比做生命所必需的血液,那么數(shù)據(jù)庫的設(shè)計(jì)就是應(yīng)用中最重要的一部分。4.1數(shù)據(jù)庫分析根據(jù)上一章對網(wǎng)上書店的功能分析及設(shè)計(jì),該系統(tǒng)的E-R模型共有八個(gè)實(shí)體:書類(編號,名稱,狀態(tài))書籍信息(編號,條形碼,類別編號,書名,作者,出版社,出版日期,價(jià)格,封面名稱,書本介紹,銷售量,庫存量,狀態(tài))圖書評論(編號,書的ISBN,用戶名,評論內(nèi)容,日期)用戶信息(編號,用戶名,密碼,地址,電話,提取密碼問題,問題答案)訂單(編號,用戶編號,日期,總額,狀態(tài))訂單項(xiàng)(編號,所屬訂單號,圖書ISBN,數(shù)量,小計(jì))安全庫存信息(編號,安全庫存量)管理員信息(編號,姓名,密碼)各實(shí)體的E—R圖及相互聯(lián)系如下圖:管理員管理員安全庫存編號姓名密碼編號安全庫存書類書類編號名稱狀態(tài)書籍編號條形碼類別編號書名作者書本介紹銷售量庫存量狀態(tài)屬于封面名稱評論編號日期評論內(nèi)容用戶名編號訂單項(xiàng)書的ISBN顧客訂單用戶名密碼提取密碼問題電話地址問題答案數(shù)量圖書ISBN所屬訂單號編號小計(jì)編號用戶編號日期狀態(tài)總額存在包含評論包含下訂N11N11N1N11N出版社出版日期價(jià)格4.2數(shù)據(jù)庫設(shè)計(jì)4.2.1數(shù)據(jù)表設(shè)計(jì)根據(jù)上一節(jié)的E-R模型,可得下列數(shù)據(jù)表:1。書本種類信息表如下:表4.1bookCategories書本種類信息表列名是否主鍵類型是否為空說明默認(rèn)值id是intNotNull書類編號—name-Varchar-書類名稱—status-bit—狀態(tài)12.書本信息表如下:表4。2Books書本信息表列名是否主鍵數(shù)據(jù)類型是否為空說明默認(rèn)值id-int-編號—ISBN是VarcharNotNull條形碼—categoryId—int-書類編號-name-Varchar—名稱—author-Varvhar—作者-publisher-Varchar—出版社-publishdate-Dat(yī)etime-出版日期—price-Money—價(jià)格—coverName—Varchar-封面名—description-Text-介紹-sale-Int-銷售量0stock-int-庫存0status-bit-狀態(tài)13。書本評論信息表如下:表4.3bookComments書本評論信息表列名是否主鍵數(shù)據(jù)類型是否為空說明默認(rèn)值id是intNotNull編號-bookISBN-Varchar-書本條形碼—customerName-Varchar-用戶名-comment-Text—評論-commentDate-datetime-評論日期-4.用戶信息表如下:表4.4customerInformations用戶信息表列名是否主鍵數(shù)據(jù)類型是否為空說明默認(rèn)值id是intNotNull編號-name—Varchar-名稱-password—Varchar—密碼-address-Varchar-地址—telephone-Varchar—電話-question-Varchar—取回密碼問題-answer-Varchar-取回密碼答案—status-Bit-狀態(tài)05.訂單信息表如下:表4.5Orders訂單信息表列名是否主鍵數(shù)據(jù)類型是否為空說明默認(rèn)值id是intNotNull訂單編號—customerId-Int—用戶編號-orderDate-Datetime-訂單日期—status—Int-狀態(tài)0total—money-總額-6。訂單項(xiàng)信息表如下:表4.6orderItems訂單類信息表列名是否主鍵數(shù)據(jù)類型是否為空說明默認(rèn)值id是intNotNull編號-orderId-Int—所屬訂單號-bookISBN—Dat(yī)etime-書本條形碼-Quantity-Int-數(shù)量—total-money-小計(jì)-7.安全庫存信息表如下:表4.7safeStock安全庫存信息表列名是否主鍵數(shù)據(jù)類型是否為空說明默認(rèn)值id是intNotNull庫存編號—safeStock-int-庫存量08.管理員信息表如下:表4.8Admins管理員信息表列名是否主鍵數(shù)據(jù)類型是否為空說明默認(rèn)值id是intNotNull編號-name-Varchar—姓名—password—varchwr-密碼-4.2。2各數(shù)據(jù)表的相互聯(lián)系廣東技術(shù)師范學(xué)院計(jì)算機(jī)科學(xué)系畢業(yè)論文第五章中間層設(shè)計(jì)及實(shí)現(xiàn)44-第五章中間層設(shè)計(jì)及實(shí)現(xiàn)中間層是用戶界面和后臺數(shù)據(jù)庫的連接橋梁,負(fù)責(zé)對整個(gè)網(wǎng)上書店系統(tǒng)的業(yè)務(wù)進(jìn)行處理。為了使本網(wǎng)上書店系統(tǒng)更加通用且方便與其他應(yīng)用系統(tǒng)集成或者交換商業(yè)信息,中間層實(shí)現(xiàn)為多個(gè)ASP.NETWebServer項(xiàng)目(包括dataBaseWebService、bookWebService、commentWebService、customerWebService、orderWebService、adminWebService),在Web服務(wù)器上運(yùn)行,從而任何平臺的客戶端都可以通過標(biāo)準(zhǔn)的Internet協(xié)議調(diào)用該業(yè)務(wù)邏輯,所以第三方使用它可以快速構(gòu)建具有基本功能的網(wǎng)上書店系統(tǒng)。5.1dataBaseWebService5。1.1功能描述這個(gè)Web服務(wù)的功能主要是對數(shù)據(jù)庫進(jìn)行基本操作的。5。1.2接口描述提供了三個(gè)公共接口(方法):publicvoidexeNonQuery(stringstrSQL)——進(jìn)行插入、更新、刪除操作,沒有返回值。publicintexeScalar(stringstrSQL)——進(jìn)行查詢操作,返回結(jié)果集中的第一行的第一列,該返回值被強(qiáng)行轉(zhuǎn)化成整形.publicDataSetgetDataSet(stringstrSQL)——進(jìn)行查詢操作,返回一個(gè)數(shù)據(jù)集。5.1.3設(shè)計(jì)過程及編碼打開VisualStudio。NET,在文件菜單中選擇新建——〉項(xiàng)目,接著在彈出的“新建項(xiàng)目"中的“新建類型”選擇“VisualStudioC#項(xiàng)目",在“模板"中選擇“ASP。NETWeb服務(wù)”,最后輸入要保存該項(xiàng)目的位置(一定要放在IIS的根目錄或者是它的虛擬目錄下),按確定就可以了。如圖5.1圖5.1新建ASP.NETWeb服務(wù)在解決方案資源管理器中打開Web。config配置文件,在<configuration〉</configuration〉節(jié)之間添加 〈!--數(shù)據(jù)庫連接字符串——〉?<appSettings>??<addkey="strConnection"value="server=J—8REMKYFUV71K1;uid=sa;pwd=912912;database=JY_EStore"/>〈/appSettings〉其它保持默認(rèn)配置就可以了。在解決方案資源管理器中把Service1.a(chǎn)smx改名為dataBase.asmx,接著雙擊dataBase。asmx.cs視圖設(shè)計(jì)器,就出現(xiàn)代碼編輯窗口了.完整代碼如下://dataBase。asmx。csusingSystem;usingSystem。Collections;usingSystem.ComponentModel;usingSystem。Data;usingSystem.Diagnostics;usingSystem.Web;usingSystem.Web.Services;usingSystem。Configuration;usingSystem。Data。SqlClient;namespacedataBaseWebService{?[WebService(Namespace="http://localhost/JY_EStore_WebServices/”,Name="dataBaseWebService",Description=”對數(shù)據(jù)庫的一些基本操作。")] publicclassdat(yī)aBase:System.Web.Services。WebService?{ //數(shù)據(jù)庫連接語句? protectedstringstrConn=ConfigurationSettings。AppSettings[”strConnection”]; publicdataBase() ?{ InitializeComponent(); } ?#region組件設(shè)計(jì)器生成的代碼? …… ?#endregion? [WebMethod(Description="進(jìn)行插入、更新、刪除操作,沒有返回值.”)]??publicvoidexeNonQuery(stringstrSQL)??{? SqlConnectionconn=newSqlConnection(strConn);???SqlCommandcomm=newSqlCommand(strSQL,conn);???try?? {? ??conn。Open();?? ?comm。ExecuteNonQuery(); ?} ??catch(SqlExceptione)?? {?? thrownewException(e.Message); ??} ?finally? {??? comm.Dispose(); ??conn.Close();?? } } ?[WebMethod(Description=”進(jìn)行查詢操作,返回結(jié)果集中的第一行的第一列,該返回值被強(qiáng)行轉(zhuǎn)化成整形?!保??publicintexeScalar(stringstrSQL)??{ ? SqlConnectionconn=newSqlConnection(strConn); SqlCommandcomm=newSqlCommand(strSQL,conn);???try? ?{? conn.Open();?? ?return(int)comm.ExecuteScalar();?? } ?catch(SqlExceptione)???{?? ?thrownewException(e.Message); }? finally?? {?? ?comm。Dispose();? ? conn。Close();?? }? } [WebMethod(Description=”進(jìn)行查詢操作,返回一個(gè)數(shù)據(jù)集。")]??publicDataSetgetDataSet(stringstrSQL) {?? SqlConnectionconn=newSqlConnection(strConn);?? try? {? conn。Open();??? SqlDataAdapterdtAdapter=newSqlDat(yī)aAdapter(strSQL,conn);? DataSetdtSet=newDataSet("dtSet");? ? dtAdapter。Fill(dtSet);?? ?returndtSet; } catch(SqlExceptione)? { ???thrownewException(e.Message); } ?finally? ?{? ?conn.Close(); }??} }}5.1。4測試按F5運(yùn)行該項(xiàng)目,出現(xiàn)測試窗口。如圖5.2圖5.2dataBaseWebService幫助窗口我們以第一個(gè)方法為例進(jìn)行測試。在圖5.3中,輸入strSQL的值,如select*frombookswhereISBN=’7111179900',按“調(diào)用”,如果返回如圖5.4的結(jié)果,就證明該方法測試成功。圖5.3dat(yī)aBaseWebService測試窗口圖5.4dataBaseWebService測試結(jié)果5.1。5客戶端調(diào)用該過程將在下一節(jié)的實(shí)際調(diào)用中介紹.5.2bookWebService5.2.1功能描述該WebService提供了很多與書籍操作相關(guān)的方法,并且它通過代理調(diào)用了dat(yī)aBaseWebService服務(wù)所提供的方法。5.2。2接口描述publicvoidaddBook(stringISBN,intcategoryId,stringname,stringauthor,stringpublisher,DateTimepublishDate,Decimalprice,stringcoverName,intstock,stringdescription)-—添加書籍信息.publicDataSetsearchBookByISBN(stringISBN)——根據(jù)ISBN搜索書籍信息。publicbooldelBookByISBN(stringISBN)--根據(jù)ISBN刪除書籍信息(并不是真的把其從數(shù)據(jù)庫里刪除,只是把它的狀態(tài)置為0)。publicboolbookIsExist(stringISBN)——確定書籍是否存在。publicvoidreSetBookCanUse(stringISBN)—-根據(jù)ISBN重新設(shè)定書籍為可用狀態(tài)。publicvoidaddBookStockByISBN(stringISBN,intstock)-—根據(jù)書的ISBN添加庫存量.publicvoidaddOrUpdateSafeStock(intsafeStock)-—設(shè)定/更新安全庫存量。publicintgetOldSafeStock()--返回舊的安全庫存量。publicDat(yī)aSetgetBookBecauseStockLower()——得到庫存量低于安全庫存的書籍信息。publicbooladdBookCategory(stringname)——添加書的類別.publicDataSetgetBookCategoryAll()—-得到書的所有類別。publicvoiddelBookCategoryById(intid)—-根據(jù)編號,刪除書類別(并不是真的把其從數(shù)據(jù)庫里刪除,只是把它的狀態(tài)置為0).publicvoidreUseCat(yī)egory(stringname)——重用該書類。publicDataSetgetSaleTopTwo(stringname)—-根據(jù)類名得到該類銷量前二的書籍信息。publicDataSetgetBookByCategoryId(intcat(yī)egoryId)-—得到一個(gè)類中的所有書籍。publicDataSetgetBookByISBN(stringISBN)——根據(jù)書編號得到書籍信息。publicDat(yī)aSetsearchBook(stringISBN,stringcategoryName,stringpublisher,stringauthor,stringname)——根據(jù)多種條件搜索書籍信息。5.2。3設(shè)計(jì)過程及編碼參照5。1.3節(jié)的第一個(gè)步驟建立bookWebService項(xiàng)目。在解決方案資源管理器中,右鍵項(xiàng)目名bookWebService,在彈出的菜單選擇“添加Web引用”,如圖5。5圖5.5添加Web引用1在“添加Web引用”窗口,如圖5.6,輸入你要引用的WebService的URL,或者通過“瀏覽至:”查找你所需要的WebService。在這里,我們利用“瀏覽至:本地計(jì)算機(jī)上的Web服務(wù)"添加對dataBase服務(wù)的引用,并更改該Web引用的默認(rèn)名localhost為dataBaseService,如圖5.7圖5。6添加Web引用2圖5.7添加Web引用3至此,添加Web引用完成,亦即創(chuàng)建了一個(gè)前面所說的WebService代理對象。這樣,在bookWebService里就可以很方便的調(diào)用dataBaseWebService提供的服務(wù)了.在bookWebService的代碼編輯窗口添加方法,完整代碼如下://book.asmx.csusingSystem;usingSystem。Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Diagnostics;usingSystem.Web;usingSystem.Web。Services;usingSystem。Data。SqlClient;usingbookWebService.dataBaseService;//通過代理引用dataBaseWebSevice服務(wù)namespacebookWebService{?[WebService(Namespace="http://localhost/JY_EStore_WebServices/",Name=”bookWebService”,Description=”與書籍操作相關(guān)的各種數(shù)據(jù)庫操作方法?!保?publicclassbook:System.Web.Services.WebService?{ ?publicstringstrSQL; dat(yī)aBaseWebServicedtBase=newdat(yī)aBaseWebService();//創(chuàng)建一個(gè)dataBaseWebService的實(shí)例,以后就是通過這個(gè)實(shí)例調(diào)用dataBaseWebService所提供的方法的 ?publicbook()? { InitializeComponent();??}? #region組件設(shè)計(jì)器生成的代碼 ?…… #endregion ??[WebMethod(Description="添加書籍信息?!?] ?publicvoidaddBook(stringISBN,intcategoryId,stringname,stringauthor,stringpublisher,DateTimepublishDate,Decimalprice,stringcoverName,intstock,stringdescription) ?{ ??stringstrSQL=”insertintobooks(ISBN,categoryId,name,author,publisher,publishDate,price,coverName,stock,description)values('"+ISBN+"',’"+categoryId+”','"+name+"',’”+author+"','”+publisher+"','”+publishDat(yī)e+”',convert(money,'"+price+"'),'"+coverName+"',’”+stock+"’,'"+description+"’)"; ??dtBase。exeNonQuery(strSQL);? } [WebMethod(Description="根據(jù)ISBN搜索書籍信息。")]??publicDataSetsearchBookByISBN(stringISBN) ?{ strSQL="selectISBN,bookCategories。nameascategoryName,books。nameasbookName,author,publisher,publishDate,price,coverName,description,sale,stock,books.statusasbookStatusfrombooksjoinbookCategoriesonbooks.categoryId=bookCategories.idwhereISBN=’"+ISBN+”'";? ?returndtBase.getDataSet(strSQL); ?}? [WebMethod(Description="根據(jù)ISBN刪除書籍信息(并不是真的把其從數(shù)據(jù)庫里刪除,只是把它的狀態(tài)置為0)。")] publicbooldelBookByISBN(stringISBN)? {?? if(bookIsExist(ISBN))???{ ???strSQL=”updatebookssetstatus=0whereISBN=’”+ISBN+"'";?? ?dtBase。exeNonQuery(strSQL);? returntrue;?? }? ?else { ??returnfalse; ??}? }? [WebMethod(Description="確定書籍是否存在。")]??publicboolbookIsExist(stringISBN) {? ?strSQL=”selectidfrombookswhereISBN=’”+ISBN+”'”; try ? {?? ?dtBase.exeScalar(strSQL);?? returntrue; }? ?catch?? {? returnfalse; } ?} [WebMethod(Description="根據(jù)ISBN重新設(shè)定書籍為可用狀態(tài)?!保? publicvoidreSetBookCanUse(stringISBN)? {? ?strSQL="updat(yī)ebookssetstatus=1whereISBN='”+ISBN+”'”;? ?dtBase.exeNonQuery(strSQL);??} [WebMethod(Description="根據(jù)書的ISBN添加庫存量。")]? publicvoidaddBookStockByISBN(stringISBN,intstock) {? strSQL="updatebookssetstock=stock+’”+stock+”'whereISBN='"+ISBN+"'";? dtBase。exeNonQuery(strSQL);??}??[WebMethod(Description="設(shè)定/更新安全庫存量。”)] publicvoidaddOrUpdat(yī)eSafeStock(intsafeStock)? { ? strSQL="updatesafeStocksetsafeStock='”+safeStock+”’”; dtBase.exeNonQuery(strSQL); } [WebMethod(Description="返回舊的安全庫存量.")] publicintgetOldSafeStock() {? strSQL="selectsafeStockfromsafeStock"; ?returndtBase。exeScalar(strSQL);??} [WebMethod(Description="得到庫存量低于安全庫存的書籍信息.")] publicDat(yī)aSetgetBookBecauseStockLower() {???strSQL="selectISBN,name,author,publisher,stockfrombookswherestock〈(selectsafeStockfromsafeStock)andstatus=1"; returndtBase.getDat(yī)aSet(strSQL);? }??[WebMethod(Description=”添加書的類別。”)]??publicbooladdBookCategory(stringname)? {? if(cat(yī)egoryIsExist(name))? {?? ?returnfalse;?? } ??else ?{?? ?strSQL=”insertbookCategories(name)values(’”+name+”')";? ??dtBase.exeNonQuery(strSQL);? ?returntrue; }??}??//判斷書類是否已經(jīng)存在 ?privateboolcategoryIsExist(stringname) ?{ ?strSQL="selectidfrombookCategorieswherename='”+name+”’"; try? {? ? dtBase。exeScalar(strSQL); ? returntrue; ??}? ?cat(yī)ch { ??returnfalse; } ?} ?[WebMethod(Description="得到書的所有類別.")]? publicDataSetgetBookCategoryAll() ?{ ? strSQL="select*frombookCategorieswherestatus=1”; ? returndtBase。getDataSet(strSQL);? }? [WebMethod(Description="根據(jù)編號,刪除書類別(并不是真的把其從數(shù)據(jù)庫里刪除,只是把它的狀態(tài)置為0)。")] publicvoiddelBookCat(yī)egoryById(intid)? { ??strSQL=”updatebookCategoriessetstatus=0whereid=’"+id+"'";? dtBase.exeNonQuery(strSQL); ? delBookByCategoryId(id);??}? //通過類的編號刪除書籍(并不是真的把其從數(shù)據(jù)庫里刪除,只是把它的狀態(tài)置為0)??privatevoiddelBookByCategoryId(intcategoryId) { ??strSQL="updatebookssetstatus=0wherecategoryId='”+categoryId+”'";? dtBase。exeNonQuery(strSQL); ?} ?[WebMethod(Description="重用該書類。”)] ?publicvoidreUseCategory(stringname) ?{? strSQL=”updat(yī)ebookCategoriessetstat(yī)us=1wh='”+name+"'";?? dtBase。exeNonQuery(strSQL);? ?reUseBookByCategoryId(name); } //通過類編號重用該類的所有書籍??privat(yī)evoidreUseBookByCategoryId(stringcategoryName)? {?? strSQL="updat(yī)ebooks

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論