第一篇:《web應用程序開發》(網絡技術專業)教學大綱
《web應用程序開發》課程教學大綱
課程編號:
課程類別:
專業選修課
計劃學時:64
其中理論講授:32
實驗或實踐:
適用專業:計算機網絡技術 教材與主要參考資料:
1、《ASP.NET程序設計》,尚俊杰,清華大學出版社。
2、《WEB程序設計技術---ASP.NET》, 秦學禮,清華大學出版社
3、《ASP.NET簡明教程》,金雪云,清華大學出版社
4、《ASP.NET基礎教程》,馮方方,清華大學出版社。
課程的教學目的與任務
對于微軟環境下的開發人員來說,.NET的重要性無論如何強調都不為過。因此全面透徹理解這種新技術,對于每一位希望與時俱進的架構師、程序員和技術管理人員來書,都至關重要。本課程將介紹開發 ASP.NET 程序所涉及的開發工具和運行環境、VB.NET 程序設計基礎和 ASP.NET 的程序設計基礎等有關內容。通過本課程的學習,掌握開發 ASP.NET 程序的基礎知識和基本方法,對.net平臺下的程序設計有一個全面的認識和了解,并能夠獨立自主開發留言板、BBS、聊天室等web應用程序。
課程的基本要求 1.掌握.NET框架結構及如何搭建運行環境; 2.掌握VB.NET程序設計語言基礎;
3.掌握HTML服務器控件和Web服務器控件的使用;
4.掌握Request、Response等重要的內部對象的基本知識和基本方法; 5.掌握數據庫的基礎知識和SQL語言,能利用ASP.NET進行數據庫程序設計;
6.掌握對文件和文件夾操作的基本方法;
7.掌握利用隱藏代碼和業務對象實現程序代碼和HTML代碼分離; 8.了解.NET的最新特性Web服務;
9.掌握配置Global.asax、web.Config文件和網絡安全、使用緩存、調試程序等高級應用。
課程內容、教學方法及學時分配建議
第一章: ASP.NET 入門 建議學時:2 其中講授: 1 實驗或實踐:1 教學重點:掌握 ASP.NET 的開發工具和運行環境;
教學難點:掌握新建一個 ASP.NET 的基本流程和建立應用程序的意義和方法;
教學方法:講授、演示
教學內容:第一節 網絡程序設計概述
第二節 ASP.NET簡介 第三節 ASP.NET的運行環境 第四節 ASP.NET的開發工具 第五節 新建一個簡單的ASP.NET文件
第二章: VB.NET 程序設計基礎 建議學時: 8 其中講課: 4 實驗或實踐:4 教學重點:掌握數據類型、常量、變量、函數、過程、循環語句、選擇語句等;
教學難點:是類的定義、屬性、方法、繼承、重寫、共享屬性、共享方法等;
教學方法:講授、演示
教學內容:第一節 ASP.NET的數據類型
第二節 ASP.NET常量 第三節 ASP.NET變量 第四節 ASP.NET數組 第五節 ASP.NET運算符 第六節 流程控制語句
第三章: 服務器控件
建議學時: 12 其中講課: 6 實驗或實踐:6 教學重點:Web 服務器控件的使用;
教學難點:用戶控件的使用和控件的綁定、樣式等高級操作; 教學方法:講授、演示 教學內容:第一節 控件簡介 第二節 HTML服務器控件 第三節 WEB服務器控件 第四節 驗證控件 第五節 用戶控件 第六節 對控件的高級操作
第四章: 內部對象
建議學時: 12 其中講課: 6 實驗或實踐:教學重點:Request、Response、Cookie、Application、Server 等對象的基本知識;
教學難點:Request、Response、Cookie、Application、Server 等對象的基本方法 教學方法:講授、演示
教學內容:第一節 ASP.NET內部對象概述
第二節 Page對象 第三節 Request對象 第四節 Response對象 第五節 HttpCookie對象 第六節 Session對象 第七節 Application對象 第八節 Server對象 第九節 Mail對象
Session Session、、第五章: 數據庫基礎知識 建議學時: 4 其中講課: 2 實驗或實踐:2 教學重點:數據庫的基本概念;
教學難點:SQL語言中的Select、Insert、Update和Delete語句。; 教學方法:講授、演示
教學內容:第一節 數據庫基本概念
第二節 建立數據庫 第三節 SQL語言簡介
第六章: ASP.NET 存取數據庫 建議學時: 8 其中講課: 4 實驗或實踐:4 教學重點:掌握利用 ASP.NET 連接數據庫,查詢、添加、刪除和更新刪除的基本方法;
教學難點:利用 DataGrid 控件刪除和更新記錄的方法; 教學方法:講授、演示
教學內容:第一節 ADO.NETT簡介
第二節 簡單存取數據庫
第三節 使用DataGrid 控件存取數據庫
第七章: 深入進行數據庫編程 建議學時: 8 其中講課: 4 實驗或實踐:4 教學重點:DataGrid、DataList 和 Repeater 控件的使用方法; 教學難點:在 SQL 語句中使用參數和對 DataSet 對象的操作; 教學方法:講授、演示
教學內容:第一節 ADO的內部對象
第二節 Connection對象 第三節 Command對象
第四節 存取SQL Server數據庫 第五節 對多個表進行組合查詢 第六節 開發實例---在線通訊錄
第八章:文件及文件夾操作 建議學時: 2 其中講課: 1 實驗或實踐:1 教學重點:掌握對文件和文件夾操作的基本方法;
教學難點:文件和文件夾的新建、復制、移動和刪除等,以及對文本文件的操作;
教學方法:講授、演示
教學內容:第一節 文件存取組件
第二節 廣告輪顯組件 第三節 瀏覽器兼容組件 第四節 文件超級鏈接組件 第五節 計數器組件
第九章:隱藏代碼與業務對象 建議學時: 2 其中講課: 1 實驗或實踐:1 教學重點:在普通 ASP.NET 文件中使用隱藏代碼和使用不包含界面的業務對象;
教學難點:使用包含界面的業務對象(自定義控件); 教學方法:講授、演示
教學內容:普通 ASP.NET 文件中使用隱藏代碼
第十章:Web 服務
建議學時: 4 其中講課: 2 實驗或實踐:2 教學重點:理解 Web 服務的基本概念,并能夠建立、通過代理類調用一個簡單的 Web 服務;
教學難點:理解 Web 服務的基本概念,并能夠建立、通過代理類調用一個簡單的 Web 服務; 教學方法:講授、演示 教學內容:Web 服務的基本概念
第十一章:配置應用程序及其它應用 建議學時: 2 其中講課: 1 實驗或實踐:1 教學重點:配置 Global.asax 和 Web.Config 文件; 教學難點:網站的安全考慮; 教學方法:講授、演示
教學內容:第一節 配置 Global.asax文件
第二節 配置Web.Config 文件
第二篇:《web應用程序開發》(網絡技術專業)實驗教學大綱
《web應用程序開發》實驗教學大綱
課程代碼: 課程性質: 課程分類:專業選修課 實驗學時:32學時
適用專業:計算機網絡技術 開課單位:數學與信息技術分院 教材與主要參考資料:
教
材:《ASP.NET程序設計》,尚俊杰,清華大學出版社 參 考 書:
《WEB程序設計技術---ASP.NET》, 秦學禮,清華大學出版社
《ASP.NET簡明教程》,金雪云,清華大學出版社
《ASP.NET程序設計及應用》,蘇英如,中國水利水電出版社,2006.4
實驗教學目標
《web應用程序開發》實訓是教學的一個必要組成部分,不屬于單獨的實驗課程。通過理論教學和實驗等環節的教學,使學生加深對教學內容的理解與認識,培養學生的網絡程序設計、調試和動態頁面制作的能力。
主要儀器設備名稱(軟件名稱及安裝環境): Windows XP +IIS(Internet服務管理器)
實驗基本要求
《web應用程序開發》的實驗教學主要以上機編程方式進行,使學生掌握.NET框架結構及如何搭建運行環境;掌握VB.NET程序設計語言基礎;掌握HTML服務器控件和Web服務器控件的使用;掌握Request、Response等重要的內部對象的基本知識和基本方法; 掌握數據庫的基礎知識和SQL語言,能利用ASP.NET進行數據庫程序設計;掌握對文件和文件夾操作的基本方法;掌握利用隱藏代碼和業務對象實現程序代碼和HTML代碼分離;了解.NET的最新特性Web服務; 掌握配置Global.asax、web.Config文件和網絡安全、使用緩存、調試程序等高級應用。
實驗項目設置、內容學及學時分配建議
實驗項目:ASP.NET的運行環境的安裝和配置 建議學時:2 實驗目的:掌握ASP.NET運行環境的安裝;熟悉ASP.NET應用程序的配置;掌握Web頁的發布。實驗內容:
1、搭建 ASP.NET 的運行環境;
2、利用 EditPlus 或記事本等工具開發第一個簡單的 ASP.NET;
3、建立第一個應用程序。
實驗項目:VB.NET編程 建議學時:4 實驗目的:掌握VB.NET的數據類型,以及變量、常量的定義;掌握VB.NET的條件語句、循環語句的使用;掌握VB.NET的過程和函數;掌握VB.NET類的屬性和方法的使用。實驗內容:
1、字符串、數字、日期等數據的使用;
2、有關函數、運算符的使用方法。
實驗項目:使服務器控件的應用 建議學時:6 實驗目的:熟悉ASP.NET服務器控件的屬性和方法;掌握服務器控件中驗證控件的使用。
實驗內容:使用驗證控件實現用戶注冊
實驗項目:內部對象的應用 建議學時:6 實驗目的:熟悉和了解ASP.NET的內置對象request、response、application、session、server、cookies。實驗內容:
1、ASP.NET的內部對象Page, Request, Reponse;
2、ASP.NET的內部對Cookie,Application,Server,Session;
3、編寫郵件發送程序。實驗項目:數據庫編程 建議學時:10 實驗目的:掌握數據庫的建立基本操作; 掌握ASP.NET中數據庫的連接方法;熟悉SQL語句;掌握ASP.NET中數據庫編程。實驗內容:
1、ADO.NET中連接SqlConnection,適配器SqlAdapator,命令SqlCommand,數據集DataSet等類的作用;
2、ADO.NET檢索數據、新增、刪除數據的方法;
3、DataGrid等顯示控件的使用方法;
4、實現用戶注冊、登錄和用戶信息管理
實驗項目:文件操作 建議學時:2 實驗目的:掌握文件系統編程。實驗內容:編寫網頁計數器程序
實驗項目:配置Global.asax 文件和Web.config文件 建議學時:2 實驗目的:掌握對Global.asax 文件和Web.config文件的配置。實驗內容:
1、配置 Global.asax 和 Web.Config 文件的基本方法;
2、網絡安全綜合示例。
實驗考核:
要求學生完成全部教學環節(包括上課、實驗、作業等)之后才能參加考試。
①考試形式:無紙化考試,實驗課考試。
②評卷標準:平時成績(。
20%)+實驗(40%)+大作業(40%)
第三篇:《WEB應用開發》教學大綱
《WEB應用開發》課程教學大綱 Development of WEB Application
課程編碼: ZYX08065 課程類別: 專業選修課
先修課程:數據結構與算法、面向對象程序設計、數據庫原理及應用 后修課程: 總學分:4 總學時:64 周學時:4 適用專業:軟件工程
開課單位:信息科學與技術學院 授課教師:
一、教學目標及教學要求
Web應用開發是軟件工程專業的專業選修課程,是鍛煉學生編程思維和能力的一門實用課程。該課程主要學習Web應用環境構建技術、Web客戶端程序設計方法、Web服務端程序設計方法、Web數據庫應用開發技術。通過實驗使學生掌握Web應用系統開發方法解決實際問題。通過本課程的學習,使學生掌握開發ASP.NET程序的基礎知識和基本方法,對網絡程序設計有一個全面的認識和了解,并能夠獨立自主開發小型網絡應用程序。
二、本課程的重點和難點
本課程的重點:WEB應用開發的基礎模式、方法,采用ASP.NET技術結合C#.NET語言進行開發,涉及ASP.NET程序所用的開發工具和運行環境、C#.NET程序設計基礎和ASP.NET的程序設計基礎。本課程的難點:ADO.NET數據庫訪問、三層架構開發、LINQ數據庫訪問技術、AJAX應用開發等。
三、主要實踐性教學環節及要求
本課程的主要實踐環節包括課程實驗及課程設計。
1、課程實驗的主要項目及基本要求
(1).NET 2010平臺和HTML語言。掌握ASP.NET運行環境的安裝;熟悉ASP.NET應用程序的配置;掌握Web頁的發布。
(2)C#.NET編程。掌握C#.NET的數據類型,以及變量、常量的定義;掌握C#.NET的條件語句、循環語句的使用;掌握C#.NET的過程和函數;掌握C#.NET類的屬性和方法的使用。
(3)服務器控件的應用。熟悉ASP.NET服務器控件的屬性和方法;掌握服務器控件中驗證控件的使用。
(4)內部對象的應用。熟悉和了解ASP.NET的內置對象request、response、application、session、server、cookies。
(5)數據庫編程。掌握數據庫的建立基本操作; 掌握ASP.NET中數據庫的連接方法;熟悉SQL語句;掌握ASP.NET中數據庫編程。
(6)用戶控件和WebService。掌握用戶控件和WebServcie的使用。(7)配置Global.asax 文件和Web.config文件。掌握對Global.asax 文件和Web.config文件的配置。
(8)Asp.NET應用程序的設置與安全。掌握Asp.NET中關于配置應用程序的步驟和配置文件。
2、課程設計的主要內容及基本要求
在學習完《WEB應用開發》課程后,為了讓學生更好地掌握WEB應用開發的原理及實現方法,加深對WEB應用開發基礎理論和重要算法的理解,加強學生的動手能力,有必要以課程設計的方式對學生進行進一步的綜合訓練。
(1)確定一個網站的主題,在以下的的范圍內進行選取:
? 個人網站。對個人的信息的發布,以個人為主題,比如包個人信息,個人愛好,個人推薦,個人的情感等等。可以參考QQ空間,微博,facebook等。? 自己的家鄉宣傳網站
? 交友網站,如同鄉會,同學會,旅游愛好者,攝影愛好者之類等。? 小商品交易網站。
(2)選取一個主題后,進行前期網站的需求分析,數據的收集,網站模塊的劃分。關于選取主題后,你根據主題自由發揮去構思自己的網站結構,內容不限制,但必須結合并突出你的主題。)
(3)進行網頁設計編程來實現網站的建立(4)進行網站的測試與運行(5)進行報告總結演示
四、采用的教學手段和方法
建議采用“任務驅動”方式為主,輔以“案例教學”、“研究性學習”、“合作學習”等方式進行教學,注重培養學生的“自學方式”與“自學能力”。教學中,教師要注重營造科學的、實用的、活潑的教學環境和氛圍,“少講精講教學內容,勤于引導學生思考”。
五、教材與主要參考文獻
教材:
于華編,ASP.NET Web應用系統開發,西安電子科技大學出版社, 2013年02月
主要參考文獻:
鄭阿奇,ASP.NET 程序設計教程,機械工業出版社,2011年06月 顧韻華,Web技術與應用,科學出版社,2013 年03月
六、考核形式與成績計算
考核方式:采用平時、期末、課程設計相結合的考核方式,注重實踐環節的考核。其中平時成績包括考勤成績、作業成績、實訓成績,期末采用上機考試和筆試兩部分。各部分所占比重如下:(1)平時占總成績的 30%(2)期末考試占總成績的 50%(3)課程設計占總成績的 20%
七、教學內容和學時分配
第一章 ASP.NET開發環境(講授2學時,實驗2學時)
1、教學內容
ASP.NET開發技術簡介、ASP.NET開發環境、一個ASP.NET應用程序、ASP.NET工程項目管理、實戰演練——配置、測試并發布Web應用范例系統。
2、教學基本要求
① 了解ASP.NET開發技術簡介、一個ASP.NET應用程序。② 理解ASP.NET開發環境、。
③ 掌握ASP.NET工程項目管理、實戰演練——配置、測試并發布Web應用范例系統。
第二章 系統框架及頁面設計(講授2學時,實驗2學時)
1、教學內容
網站規劃、控件及事件、HTML控件、母版、導航系統、樣式表及主題、實戰演練——搭建Web應用系統框架。
2、教學基本要求
① 了解網站規劃、母版、導航系統。
② 理解控件及事件、HTML控件、樣式表及主題。③ 掌握實戰演練——搭建Web應用系統框架。
第三章 常用Web服務器控件(講授3學時,實驗3學時)
1、教學內容
HTML服務器控件、ASP.NET服務器控件、實戰演練。
2、教學基本要求
① 理解HTML服務器控件、ASP.NET服務器控件。② 掌握實戰演練。第四章 ASP.NET的內置對象(講授4學時,實驗4學時)
1、教學內容
概述、Application對象、Session對象、ViewState對象、Request和Response對象、Server對象、Cookie對象、實戰演練——統計在線人數。
2、教學基本要求
① 了解概述、Application對象、Session對象、Cookie對象。② 理解ViewState對象、Request和Response對象、Server對象。③ 掌握實戰演練——統計在線人數。
第五章 AD0.NET技術(講授4學時,實驗4學時)
1、教學內容
ADO.NET對象模型、Connection對象、Command對象、DataReader對象、DataAdapter對象、DataSet對象、實戰演練。
2、教學基本要求
① 理解ADO.NET對象模型、Connection對象、Command對象、DataReader對象、DataAdapter對象、DataSet對象。
② 掌握實戰演練。
第六章 數據綁定及數據控件技術(講授4學時,實驗4學時)
1、教學內容
數據綁定技術、數據源控件、GridView控件、DataList控件、Repeater控件。
2、教學基本要求
① 理解數據綁定技術、數據源控件。
② 掌握GridView控件、DataList控件、Repeater控件。第七章 用戶控件和Web服務(講授2學時,實驗2學時)
1、教學內容
用戶控件、Web服務、實戰演練。
2、教學基本要求 ① 理解用戶控件。② 掌握實戰演練。
第八章 LINQ數據庫訪問技術(講授3學時,實驗3學時)
1、教學內容
LINQ基礎、基本LINQ查詢語句、實戰演練。
2、教學基本要求 ① 理解LINQ基礎。
② 掌握基本LINQ查詢語句、實戰演練。
第九章 AJAX應用開發(講授4學時,實驗4學時)
1、教學內容
概述、ASP.NET AJAX的框架、ASP.NET AJAX服務器端控件、實戰演練。
2、教學基本要求 ① 了解概述。
② 理解ASP.NET AJAX的框架。
③ 掌握ASP.NET AJAX服務器端控件、實戰演練。
第十章 基于ASP.NET的兒童網站的開發(講授4學時,實驗4學時)
1、教學內容
系統設汁、數據庫的設計與實現、主要功能模塊的設汁。
2、教學基本要求 ① 理解系統沒汁。
② 掌握數據庫的設計與實現、主要功能模塊的設汁。
制定人:賴益強
系(教研室)審核人:胡毅
學院(部)審核人:
制訂時間:2017年1月7日 審核時間:2017年2月20日 審核時間:2017年月 日
第四篇:網絡技術專業畢業設計(論文)教學大綱
網絡技術專業畢業設計(論文)教學大綱
英文名稱: 課程編號: 學時:16周 學分:16
適用專業:網絡技術專業 先修課程:開設的所有相關課程
一、設計的目的和任務
畢業設計是學生三年大學所學知識的綜合訓練,因此,它是一門非常重要的專業實踐課。本課程的目的是培養學生的綜合運用所學的專業理論知識、技能和應用計算機知識分析解決實際問題的能力,是在學生完成了三年教學規定的理論課基礎上,對學生三年所學的理論進行的實踐性的總結和檢驗,以提高學生的綜合能力。畢業設計的任務是完成一項指導教師安排的具有一定難度和水平的畢業設計任務。包括:
1.使學生進一步加深鞏固對所學的基礎理論、基本技能和專業知識的掌握,使之系統化、綜合化。
2.是學生獲得從事科研工作的初步訓練,培養學生的獨立工作、獨立思考和綜合運用已學的知識解決實際問題的能力,尤其注重培養學生的獨立獲取新知識的能力。
3.培養學生在軟件開發、文件編輯、文字表達、文獻查閱、外語、工具書使用等基本工作實踐的能力,使學生初步掌握科學研究的基本方法。
4.使學生樹立具有符合國情和生產實際的正確設計思想和觀點;樹立嚴謹、負責、實事求是、刻苦鉆研、勇于探索、具有創新意識、善于與他人合作的工作作風。
二、選題原則
1.選題必須符合網絡技術專業的綜合培養要求,要體現先進性,要有利于深化所學知識和拓展知識面。
2.盡可能選擇與實習企業相關選擇綜合性、實踐性較強的課題。
3.選題盡可能結合本專業教學、可以、工程實際的需要,有一定的現實意義,但訓練內容不宜過于狹窄。
4.設計工作量要適中,以保證明確、適當、標準的工作成果。
5.選題的難易程度要適當,以學生在規定的時間內經過努力可以完成為宜。
6.畢業設計課題,鼓勵一人一題。若幾個人同時做一個大的課題,總可設計每個人都要參與,其余部分應分工明確。
三、設計內容
1.網絡硬件設計
涉及到數字邏輯、計算機組成原理、匯編語言、微機原理余接口技術、技術機網絡、單片機技術、計算機體系結構、計算機控制等方面的知識。
2.軟件系統設計
涉及到網絡編程、網站設計、高級語言、數據結構、離散數學、組合數學、程序設計方法學、數據庫原理、軟件工程等方面的知識。
3.網絡解決方案設計
涉及網絡集成方案、無線移動網絡方案、網絡安全方案等。
四、設計的一般步驟
網絡技術專業畢業設計大體分為以下幾個階段: 1.系統分析:熟悉課題、收集資料和可行性分析; 2.系統設計:總體設計和詳細設計; 3.系統實施; 4.撰寫課程設計論文。
五、紀律或注意事項
1.認真遵守所在企業和實驗室的各項規章制度。2.認真進行調研與分析
3.愛護各種使用設備,嚴格按照操作規則進行操作。
4.注意設計進度,主動與企業指導教師及校內指導教師溝通、及時完成規定任務。
六、學生成績評定
學生成績由三部分組成:企業指導教師及校內指導教師評分、畢業論文評閱成績和答辯成績,分別按照百分制度打分,在按比例求和,最好按五級分制折合成總評成績。
第五篇:使用 PHP 和 SOAP 開發基于 Web 服務的應用程序
使用 PHP 和 SOAP 開發基于 Web 服務的應用程序
作者: Claymore 時間: 2011-11-22 16:59:51
簡介: SOAP 是 Web 服務中最常用的協議,通常的 Web 服務使用 Java 語言編寫,但眾多的 PHP 程序員可能更喜歡使用 PHP 來完成整個 Web 應用程序的開發。本文介紹了使用 PHP5 中新增的 SOAP 擴展(ext/soap)進行 Web 服務開發的步驟,包括 WSDL 文件的編寫,Web 服務端和客戶端腳本的開發。這可以幫助 PHP 程序員快速開發基于 Web 服務的應用程序,而不需要脫離 PHP 環境,借助其他語言或者編程模型開發 Web 服務。
PHP SOAP 擴展
SOAP 的全稱為簡單對象訪問協議(Simple Object Access Protocol)。它是一種基于 XML 的,可擴展的通信協議。SOAP 提供了一種標準,使得運行在不同平臺上并使用不同的編程語言編寫的應用程序可以互相進行通信。SOAP 的可擴展性和平臺無關性使得它被廣泛用作 Web 服務的通信協議。
由于 Java 語言提供了對 SOAP 的良好支持,通常基于 Web 服務的應用程序使用 Java 語言編寫。對于廣大的 PHP 程序員來說,可能會有一點小小的不滿 – PHP 的較早版本根本沒有對 SOAP 的直接支持,只能通過 PEAR(the PHP Extension and Application Repository)中的 SOAP 庫或者第三方產品 NuSOAP 來開發 Web 服務。不過最近的版本已經改變了這一狀況。自 PHP 5 開始新增了內置的 SOAP 擴展(ext/soap),從此我們不需要下載額外的擴展庫或是代碼包來開發基于 SOAP 的應用程序了。接下來讓我們來看看 SOAP 擴展中都有哪些內容。
PHP 5 中的 SOAP 擴展(ext/soap)PHP 5 最早發布的版本 5.0.0 中就已經提供了 SOAP 擴展,不過當時的 PHP 手冊中聲明這個擴展是試驗性(experimental)的。實際上當時的版本已經實現了比較完善的功能,也沒有必要為此而擔心。目前這個擴展還在不斷地完善,早期版本中的大部分 bug 都已經得到了修正,目前最新的版本(5.3.0)中已經提供了比較完整的對 SOAP 的支持,而且我們有理由相信,以后的版本還會更好。
SOAP 擴展庫結構
ext/soap 中包括六個預定義的類,通過這些類,我們可以創建 Web 服務端(SoapServer 類),客戶端(SoapClient 類),處理 SOAP 請求和應答(SoapHeader, SoapParam, SoapVar 類),診斷錯誤(SoapFault 類)。這些類之間的聯系如圖 1 所示:
圖 1.SOAP 擴展的結構
SOAP 服務類 SoapServer SoapServer 類用來開發 Web 服務端應用程序。這個類中包含創建,設置和操縱 Web 服務的函數。有兩種方式可以向 Web 服務中添加操作(Operation)。一種方式是直接添加已定義的函數,另一種方式是添加已定義好的類,從而將該類的公有成員函數添加到 Web 服務中。
另一個需要說明的特性是,PHP 支持兩種 Web 服務的模式:WSDL 模式和 non-WSDL 模式,為了便于理解,我們首先從 Web 服務的兩種實現模式開始說起。
PHP 中 Web 服務的兩種模式:WSDL 模式和 non-WSDL 模式
對于 Web 服務來說,主要有兩種實現模式 – 契約先行(Contract First)模式和代碼先行(Code Fist)模式。契約先行模式的實現中,首要工作是定義針對這個 Web 服務的接口的 WSDL(Web Services Description Language,Web 服務描述語言)文件。WSDL 文件中描述了 Web 服務的位置,可提供的操作集,以及其他一些屬性。WSDL 文件也就是 Web 服務的“契約”。“契約”訂立之后,再據此進行服務器端和客戶端的應用程序開發。這種模式對應上節所說的 WSDL 模式。我們后文中介紹的例子就是使用這一模式實現的。
與契約先行模式不同,代碼先行模式中,第一步工作是實現 Web 服務端,然后根據服務端的實現,用某種方法(自動生成或手工編寫)生成 WSDL 文件。但是由于 PHP 本身并沒有提供從 Web 服務實現代碼中生成 WSDL 文件的方法,因此就要以 non-WSDL 模式連接服務端,即不通過 WSDL 文件創建 SoapServer 和 SoapClient 示例,而是直接向構造函數傳遞必要的參數。當然,代碼先行模式也有其他的解決方法,一些集成的 PHP 開發工具(如 Zend Studio)就提供了根據 Web 服務實現代碼生成 WSDL 文件的功能。
SOAP 客戶端類 SoapClient SOAP 客戶端類 SoapClient 用于開發 Web 服務的客戶端程序。可用的成員函數主要有創建客戶端實例,調用可用操作,查詢可用操作和數據類型等。除此之外還包括了可用于程序調試的函數 – 獲取上次請求和應答的 SOAP 數據。
SOAP 參數類 SoapHeader, SoapParam, SoapVar SoapParam 和 SoapVar 主要用來封裝用于放入 SOAP 請求中的數據,他們主要在 non-WSDL 模式下使用。事實上,在 WSDL 模式下,SOAP 請求的參數可以通過數組方式包裝,SOAP 擴展會根據 WSDL 文件將這個數組轉化成為 SOAP 請求中的數據部分,所以并不需要這兩個類。而在 non-WSDL 模式下,由于沒有提供 WSDL 文件,所以必須通過這兩個類進行包裝。SoapHeader 類用來構造 SOAP 頭,SOAP 頭可以對 SOAP 的能力進行必要的擴展。SOAP 頭的一個主要作用就是用于簡單的身份認證,后面會有例子說明這一點。
SOAP 異常類 SoapFault 這個類從 PHP 的 Exception 類繼承而來,可以用來實現 SOAP 中的異常處理機制,由 SOAP 服務端拋出。SOAP 客戶端可以接收該類的實例,用于獲取有用的調試信息。
安裝 SOAP 擴展
為了使用 SOAP 擴展,我們需要在 Web 服務器上安裝它。這里有幾個因素需要考慮。
? 安裝的前置條件:在官方的使用手冊中可以找到,ext/soap 擴展使用了 GNOME XML 庫,因此在安裝 SOAP 擴展之前需要安裝這個庫(需要 2.5.4 以上版本)。? PHP 是否已安裝:
o 如果你想在安裝 PHP 的同時加入 SOAP 擴展,那再簡單不過了。如果是下載 PHP 源代碼自己編譯安裝的情況,則只需要在編譯時的 configure 命令中添加選項--enable-soap 即可。如果是直接使用二進制文件安裝(通常只用于 Windows平臺),安裝包中則已經包括了這一擴展,不需要額外安裝。
o 而如果需要在已經安裝好的 PHP 上添加 SOAP 擴展,需要做的工作就要多一些。在編譯 SOAP 擴展的源代碼之前需要使用 phpize 命令設置編譯環境,然后再使用 configure 命令,之后編譯并安裝 SOAP 擴展。o
編譯安裝 SOAP 擴展之后,我們還需要修改 PHP 的配置文件,以便 SOAP 擴展可以正確的被 PHP 加載。對于 Linux平臺來說,需要在 php.ini 中加入如下代碼:extension = php_soap.so
而對于 Windows平臺,需要加入的代碼為:extension = php_soap.dll
除此之外,可能還需要設置擴展庫的位置,這一信息在 php.ini 的 extension_dir 域中保存,例如:
extension_dir = “/usr/local/php/lib/”
上面的工作完成之后,還需要注意的是 SOAP 擴展在配置文件中有獨立的代碼段:
清單 1.php.ini 中 SOAP 擴展的設置
soap];Enables or disables WSDL caching feature.soap.wsdl_cache_enabled=1;Sets the directory name where SOAP extension will put cache files.soap.wsdl_cache_dir=“C:xampptmp”;(time to live)Sets the number of second while cached file will be used;instead of original one.soap.wsdl_cache_ttl=86400
PHP 處理 WSDL 文件時使用緩存的行為。這三項設置分別說明是否啟用緩存、緩存文件的路徑、緩存的生存時間。啟用緩存會加快 PHP 處理 WSDL 文件的速度,但最好在調試代碼時關閉緩存,以避免一些因緩存行為而出現的問題。
一個簡單的例子:產品資料查詢
設想這樣一個場景:A 公司是筆記本電腦的生產商,B 公司是 A 公司的經銷商。B 公司需要向他們的客戶提供一個產品信息查詢的網站,用戶輸入產品編號就可以查詢到該產品的詳細信息,包括 CPU,內存,屏幕尺寸,硬盤等。由于經常有
新產品面世,所以 A 公司的產品信息數據庫會頻繁地更新,對此比較好的解決方案是 A 公司提供一個產品信息查詢的 Web 服務,而 B 公司開發客戶端來調用這個 Web 服務提供的操作。整個系統的架構如下圖所示:
圖 2.產品資料查詢系統架構
主要的組成部分有:
? 產品信息數據庫,其中存儲了產品代碼,CPU 信息,內存容量,屏幕尺寸,硬盤容量等產品信息。
? Web 服務端,它發布一個 Web 服務,響應客戶端的查詢請求,并將查詢結果放入 SOAP 應答中返回給客戶端。? 客戶機,它接收瀏覽器發來的查詢條件,以此生成 SOAP 請求發送給 Web 服務端,并接收 SOAP 應答,將其發送到瀏覽器并顯示出來。瀏覽器的輸出如圖 3 所示。
本質上 Web 服務端和客戶機都是一個相對獨立的 Web 應用程序,它們之間只是通過 SOAP 消息進行通信。在不改變通信“契約”的情況下,Web 服務端和客戶端內部實現的改變均不影響這個系統的功能。所以對于“契約”-即 WSDL 文件的定義就是非常重要的一步。
圖 3.產品信息查詢系統頁面
WSDL 文件的編寫
前面提到過,PHP 本身并沒有提供可以自動生成 WSDL 文件的方法,因此就需要我們自己編寫 WSDL 文件。WSDL 的結構雖然比較清楚,但完全依靠文本編輯器創建一個 WSDL 文件依然是個艱難的任務。這是因為 WSDL 中的元素比較多,每個元素還有若干屬性,要完全掌握這些比較困難。另一方面,如果沒有開發環境的輔助,我們在編寫 WSDL 文件中的錯誤就很難被發現,存在任何一個微小的錯誤(例如標簽名 message 誤寫成了 massage),我們的應用程序也無法正常工作。因此在編寫 WSDL 文件時使用適當的開發工具是很必要的。下面我們介紹兩種借助開發工具生成 WSDL 文件的方法,一種適用于契約先行模式,另一種適用于代碼先行模式。
使用 PDT(PHP Development Tool)編寫 WSDL 文件
PDT(PHP Development Tool)是一個基于 Eclipse 的集成開發環境,它提供了對于 PHP 開發中各種需求的良好支持。我們可以在菜單中選擇 New->Other...,然后在彈出的窗口中選擇 Web Service 下的 WSDL File,然后輸入文件名,創建 WSDL 文件,PDT 會生成一個默認的 WSDL“框架”,并以圖形化的方法顯示出來,對應本文的例子,WSDL 文件的圖形化表示如下圖:
圖 4.PDT 中 WSDL 文件的圖形化表示
我們可以看到,這個圖形化的表示方法包含了 WSDL 的全部要素:端口,消息,綁定(Bindings),數據類型和服務。對于除了數據類型之外的部分,我們只需要點擊相應部分作出修改即可。對于數據類型部分的修改,則需要點擊最右側的 灰色箭頭,打開數據類型的視圖,對應本文需求的數據類型視圖如下:
圖 5.PDT 中輸入的數據類型的圖形化表示
圖 6.PDT 中輸出的數據類型的圖形化表示
之后我們可以修改數據類型的名稱,添加元素,編輯復雜數據類型,修改元素的類型和名稱等。所有上述的修改都會被 PDT 自動轉換成對應的 WSDL 語句。
以上三個視圖構成了 WSDL 的完整描述,點擊界面下方的 Source 標簽,就可以看到 WSDL 文件的源代碼:
清單 2.WSDL 源代碼
xmlns:tns=“http://soapexample.cn/ProductQuery/” xmlns:wsdl=“http://schemas.xmlsoap.org/wsdl/”xmlns:xsd=“http://specialchars($client->__getLastRequest()).” 另外為了開啟跟蹤功能,我們需要在 SoapClient 的構造函數中輸入額外的一個參數: 清單 20.開啟 SOAP 跟蹤功能 $client = new SoapClient('./ProductQuery.wsdl' , array('trace' => 1)); 這樣,我們就可以在瀏覽器中觀察到 SOAP 請求和應答的內容: 清單 21.錯誤的 SOAP 請求和應答 Request: 可以發現,SOAP 請求的結構跟我們期望的不同,我們就可以知道,是輸入的參數不正確造成的,改正了這個錯誤之后,我們可以看到正確的 SOAP 請求和應答: 清單 22.正確的 SOAP 請求和應答 Request: 1175-PXA 使用 PHP 開發基于 Web 服務的應用程序總的來說是比較簡單的。從前文的例子中可以看到,我們不需要很多的代碼就可以創建一個簡單的 Web 服務端和客戶端,唯一的小麻煩可能是創建 WSDL 文件,但我們借助一些 PHP 集成開發環境的幫助一樣可以輕松解決。這可以讓習慣使用 PHP 開發 Web 應用程序的程序員不需要學習其他語言就能夠開發自己的基于 Web 服務的應用程序。 本文中的例子相對來說比較簡單,但我們必須了解,PHP 的 SOAP 擴展目前也存在著一些不足之處。例如: ? PHP 對于某些 SOAP 協議中的元素不能正確解析,例如目前 SoapServer 類并不能處理客戶端發來的 SOAP 請求中的 Header 部分,這使得一些基于 Header 的特性無法在 PHP 中得到實現,例如權限驗證等。 ? 由于 PHP 是弱類型語言,而 SOAP 協議中對類型的定義是比較嚴格的,所以 PHP 無法僅僅根據代碼生成可供使用的 WSDL 文件,只能通過 PHP Doc 之類的機制在注釋中聲明,從而使輔助工具獲得參數的類型。 ? PHP 的弱類型性質還造成 SOAP 擴展對類型的檢查并不嚴格,如果服務端的實現中如果返回了類型錯誤的數據(例如應該返回類型為 integer 的數據,實際上卻返回了字符串),則并不會產生異常,而只是將返回的數據解釋成 WSDL 中定義的類型,但是這種轉換通常是不能得到正確結果的。 ? PHP 的文檔中對于 SOAP 調用的參數構造介紹很少,關聯數組構造方法與 WSDL 中的數據定義的映射關系也不是十分清晰易懂。對于數據類型較為復雜的情況,單純使用數組構造一個具有很多層次的參數結構也是困難且容易出錯的。 幸運的是,PHP 的開發和維護者們始終把 SOAP 擴展看做 PHP 中重要的組成部分,自從 PHP 5.0.0 中開始提供 SOAP 擴展以來,它就沒有停止過更新,每一次新的版本都會有新特性發布,同時也會修正很多原有的缺陷。最新的版本(5.3.0)最近剛剛發布,其中對于上述的問題 1 和 4 都有很好的解決。所以我們有理由相信,PHP 會提供對 SOAP 越來越完善的支持。
“;echo ”Response :
“.htmlspecialchars($client->__getLastResponse()).”
“;