




已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第四部分 Web 服務與項目開發(fā) 第 9 章 基于 XML 的 NET Web 服務 本章要點 本章將介紹 Web Service 的原理 如何創(chuàng)建 Web Service 和使用 Web Service 用一個 簡單但是完整的案例說明Web Service的各種使用方法 介紹了Web Service中的數(shù)據(jù)類型 如何使用 ASP NET 的內(nèi)部對象 Session 和 Application 簡單的介紹了 SOAP 協(xié)議及其應用 并介紹如何使用 Web Service 的數(shù)據(jù)服務 9 1 Web 服務簡介 Web 服務是微軟 NET 策略計劃的基礎 一個 Web Service 就是一個應用 Web 協(xié)議的 可編程的應用程序邏輯 其中最重要的協(xié)議是簡單對象訪問協(xié)議 SOAP Simple Object Access Protocol 9 1 1 Web 服務核心技術基礎 Web 服務是一種應用程序 使用標準的互聯(lián)網(wǎng)協(xié)議 在網(wǎng)上提供函數(shù)接口 用戶可 以從任何地方調(diào)用 Web 服務 Web 服務主要使用兩種技術 XML XML 可以使 Web 服務方便的處理數(shù)據(jù) 實現(xiàn)內(nèi)容與表示分離 SOAP SOAP 使用 XML 消息調(diào)用遠程方法 SOAP 是 Web 服務最重要的協(xié)議 9 1 2 Web 服務的接口描述 主要的接口方式為 WSDL Web Service Description Language Web 服務描述語言 和 UDDI Universal Description Discovery and Integration 統(tǒng)一的描述 發(fā)現(xiàn)和集成 WSDL 文檔用于動態(tài)發(fā)布 Web 服務 查找已發(fā)布的 Web 服務以及綁定 Web 服務 在 WSDL 中包含了使用 SOAP 的服務描述的綁定 也包含了使用簡單 HTTP GET 和 POST 請 求的服務描述的綁定 UDDI 提供了在 Web 上描述并發(fā)現(xiàn)商業(yè)服務的框架 UDDI 通過服務注冊 以及使用 SOAP 訪問這些注冊信息的約定 UDDI 計劃的核心組件是 UDDI 商業(yè)注冊 使用一個 XML 文檔來描述企業(yè)及其提供的 Web 服務 9 2 創(chuàng)建并使用 Web 服務 一個 Web 服務程序可以為本地和遠程的程序提供函數(shù)接口 通過這些函數(shù)接口為其 他應用程序提供服務 9 2 1 編寫 Web 服務 NET Web 服務源文件的擴展名是 asmx 和 C 格式的程序有些相似 利用 WebMethod 向外提供函數(shù)接口 如程序 9 01 asmx 所示 案例名稱 編寫案例名稱 編寫 Web 服務服務 程序名稱 程序名稱 9 01 asmx using System Web Services public class Greetings WebMethod public string Hello string strName return hello strName Have a great day 程序中 第一行指示該程序是一個 Web 服務 使用的編程語言為 C 類名為 Greetings 第二行引入 Web 服務所需要的命名空間 第三行聲明類 類名為 Greetings 第五行聲明 一個方法 這個方法名稱為 Hello 帶有 string 類型的參數(shù) strName 返回一個 string 類型 的參數(shù) 9 2 2 測試 Web 服務 將 9 01 asmx 文件放到網(wǎng)站的某個目錄中 像執(zhí)行 ASP NET 文件一樣 利用瀏覽器打 開該程序 顯示的結果如圖 9 1 所示 圖 9 1 測試 Web 服務 該頁面開始是 Web 服務的名稱 這里是 Greetings 接著是它的操作列表 這里只有 一個操作列表是 Hello 在文本框輸入一些字符串并點擊按鈕 顯示的結果如圖 9 2 所示 圖 9 2 顯示方法說明頁 調(diào)用以后 Web 服務將返回一個 XML 文件 其中包含方法的 Web 服務的執(zhí)行結果 如圖 9 3 所示 圖 9 3 顯示 XML 結構的文檔 說明 Web 服務已經(jīng)成功創(chuàng)建了 從總體上講 Web 服務實現(xiàn)的功能和 EJB Enterprise JavaBean 技術 CORBA Common Object Request Broker Architecture 技術 DCOM 技術 Distributed Component Object Model 分布式組件對象模型 實現(xiàn)的功能類似 這里 體現(xiàn)了 Web 服務的一個優(yōu)勢 調(diào)試非常容易 9 2 3 使用 Web 服務 使用 Web 服務的過程實際上是 Web 服務的使用者與 Web 服務實現(xiàn)綁定 并調(diào)用其方 法的過程 綁定的方式有兩種 一種是動態(tài)的 另一種是靜態(tài) 動態(tài)的是 UDDI 實現(xiàn)的 靜態(tài)通過 WSDL 文件實現(xiàn) 使用 Web 服務之前需要先生成服務代理類 然后生成服務代 理程序 生成服務代理類 代理類是根據(jù) Web 服務的 WSDL 文件產(chǎn)生的本地類 包括類和方法的聲明 為了創(chuàng) 建代理類 需要在命令行使用 WSDL exe 文件生成代理類文件 使用的命令如 9 02 bat 文 件所示 命令名稱 生成代理類命令名稱 生成代理類 程序名稱 程序名稱 9 02 bat wsdl exe http localhost 9 01 asmx wsdl l cs n Ser cs pause 需要把 9 01 asmx 文件放到網(wǎng)站的根目錄 參數(shù) l 的意思是使用的語言 n 參數(shù)說明 產(chǎn)生類的主類名 編譯的過程如圖 9 4 所示 圖 9 4 生成代理類 如果找不到 wsdl exe 文件 需要將該文件所在的路徑添加到系統(tǒng)路徑下 編譯完以后 在當前目錄下生成代理類文件 Greetings cs 如圖 9 5 所示 圖 9 5 生成的代理類 文件中的內(nèi)容是 NET 運行庫用來與 Web 服務進行實際連接的時候使用的 生成代理程序 要讓代理類被其他應用程序調(diào)用 需要利用代理類生成程序 代理程序是一個動態(tài)鏈 接庫文件 Dynamic Link Library DLL 首先在當前的目錄下建立 bin 文件夾 建立代理程序的指令如文件 9 03 bat 所示 命令名稱 生成代理程序命令名稱 生成代理程序 程序名稱 程序名稱 9 03 bat csc out bin Greetings dll t library r system data dll r system web services dll Greetings cs pause 命令執(zhí)行成功以后就會在建立的 bin 文件夾下面創(chuàng)建 Greetings dll 文件 編譯過程如 圖 9 6 所示 圖 9 6 生成代理程序的過程 其中 bin 目錄下的 Greetings dll 就是代理程序 如圖 9 7 所示 圖 9 7 生成的代理程序 注意 代理程序必須放在網(wǎng)站的根目錄下的 bin 文件夾中 否則程序將找不到代理程 序 本地使用 Web 服務 ASP NET 程序在執(zhí)行的時候 如果遇上了陌生的名稱空間 就會到網(wǎng)站的根目錄下尋 找代理程序 調(diào)用方法如程序 9 04 aspx 所示 案例名稱 案例名稱 ASP NET 文件使用文件使用 Web 服務服務 程序名稱 程序名稱 9 04 aspx void Page load object sender EventArgs e Greetings k new Greetings Message Text Web Service 返回信息為 k Hello 小劉 程序中使用語句 Import Namespace Ser cs 引入名字空間 因為不是 NET 提供的 程 序到 bin 目錄下可以找到命名空間 程序顯示的結果如圖 9 8 所示 圖 9 8 ASP NET 程序調(diào)用代理程序 遠程使用 Web 服務 Web 服務主要的功能是通過 HTTP 被全世界的用戶調(diào)用 所以通常都是被遠程調(diào)用 遠程調(diào)用需要利用 Visual Studio NET 來建立項目 創(chuàng)建基于 ASP NET Web 應用程序的項 目 如圖 9 9 所示 圖 9 9 建立 ASP NET 項目工程 在新建工程的 解決方案管理器 中 右擊 引用 菜單 選擇 添加 Web 引用 如圖 9 10 所示 圖 9 10 添加 Web 引用 輸入要引入 Web 服務的 HTTP 地址 然后點擊按鈕 添加引用 如圖 9 11 所示 圖 9 11 添加 HTTP 引用 添加完畢以后 可以在程序使用遠程 Web 服務 在 Form 窗體上添加一個按鈕 并為 按鈕添加事件 加入如程序 9 05 txt 的代碼 案例名稱 遠程使用案例名稱 遠程使用 Web 服務服務 程序名稱 程序名稱 9 05 txt private void Button1 Click object sender System EventArgs e localhost Greetings g new localhost Greetings string strRet g Hello 小王 Response Write strRet 編譯運行工程 然后點擊按鈕 得到 Web 服務的遠程運行結果 如圖 9 12 所示 圖 9 12 遠程調(diào)用 Web 服務 9 3 Web 服務中的數(shù)據(jù)類型 Web Service 建立在 XML 基礎上 支持豐富的數(shù)據(jù)類型 表 9 1 列出使用 SOAP 協(xié)議 的時候 Web Service 支持的常用數(shù)據(jù)類型 表 9 1 Web Service 的常用數(shù)據(jù)類型 值 說明 基本數(shù)據(jù)類型 分別是 String Char Byte Boolean Int16 Int32 Int64 UInt16 UInt32 UInt64 Single Double Guid Decimal DateTime 枚舉類型 如 public enum color red 1 blue 2 數(shù)組類型 如 string 和 int 類和結構 利用 class 定義的數(shù)據(jù)類型 數(shù)據(jù)集 ADO NET 中的 DataSet 對象 數(shù)據(jù)集數(shù)組 DataSet 數(shù)組 9 3 1 創(chuàng)建 Web 服務 下面對常用的 Web Service 的數(shù)據(jù)類型做簡單的介紹 這里涉及到的是常見的類 數(shù) 組 字符串和類的數(shù)組等 如程序 9 06 asmx 文件所示 案例名稱 使用案例名稱 使用 Web Service 的數(shù)據(jù)類型的數(shù)據(jù)類型 程序名稱 程序名稱 9 06 asmx using System using System Web Services public enum Mode On 1 Off 2 public class Order public int OrderID public double Price public class DataTypes WebMethod public String SayHello return Hello World WebMethod public String SayHelloName String name return Hello name WebMethod public int GetIntArray int a new int 5 for int i 0 i 5 i a i i 10 return a WebMethod public Mode GetMode return Mode Off WebMethod public Order GetOrder Order myOrder new Order myOrder Price 34 5 myOrder OrderID 323232 return myOrder WebMethod public Order GetOrders Order myOrder new Order 2 myOrder 0 new Order myOrder 0 Price 34 5 myOrder 0 OrderID 323232 myOrder 1 new Order myOrder 1 Price 99 4 myOrder 1 OrderID 645645 return myOrder 可以直接從 Web 站點中看看方法列表了 包括六個方法 顯示的結果如圖 9 13 所示 圖 9 13 使用 Web Service 的數(shù)據(jù)類型 程序中 主要涉及了幾個方法 這幾個方法的功能如下 SayHello 方法顯示從服務返回字符串 SayHelloName 方法返回字符串 并將字符串作為參數(shù) GetIntArray 方法顯示如何返回整數(shù)數(shù)組 GetMode 方法返回枚舉值 GetOrder 方法返回類 GetOrders 方法返回 Order 對象的數(shù)組 要在應用程序中使用 需要創(chuàng)建代理類和代理程序 創(chuàng)建代理類和代理程序的方法如 文件 9 07 bat 所示 命令名稱 創(chuàng)建代理類和代理程序命令名稱 創(chuàng)建代理類和代理程序 程序名稱 程序名稱 9 07 bat wsdl exe http localhost 9 06 asmx wsdl l cs n DataTypes csc out bin DataTypes dll t library r system data dll r system web services dll DataTypes cs pause 生成代理程序放在當前目錄的 bin 文件夾下 命令的執(zhí)行過程如圖 9 14 所示 圖 9 14 命令執(zhí)行的結果 9 3 2 本地調(diào)用代理程序 在 ASP NET 文件中 可以調(diào)用生成的代理類 如程序 9 08 aspx 所示 案例名稱 使用案例名稱 使用 Web Service 的數(shù)據(jù)類型的數(shù)據(jù)類型 程序名稱 程序名稱 9 08 aspx public void Page Load Object sender EventArgs E DataTypes d new DataTypes Message1 InnerHtml d SayHello Message1 InnerHtml Message1 InnerHtml d SayHelloName Bob Message3 InnerHtml Message3 InnerHtml d GetMode int myIntArray d GetIntArray String myString Contents of the Array for int i 0 i myIntArray Length i myString myString myIntArray i Message2 InnerHtml Message2 InnerHtml myString Order myOrder d GetOrder Message4 InnerHtml Message4 InnerHtml OrderID myOrder OrderID Message4 InnerHtml Message4 InnerHtml Price myOrder Price Order myOrders d GetOrders for int i 0 i 0 Message5 InnerHtml Message5 InnerHtml Order i Message5 InnerHtml OrderID myOrders i OrderID Message5 InnerHtml Price myOrders i Price 字符串變量 使用數(shù)組變量 枚舉數(shù)據(jù)類型 返回一個類或結構體 返回一個類或結構體數(shù)組 程序中分別調(diào)用了 Web Service 提供的方法 程序顯示的結果如圖 9 15 所示 圖 9 15 使用 Web Service 的數(shù)據(jù)類型 9 4 Web 服務使用 ASP NET 內(nèi)部對象 Web 服務可以訪問 ASP NET 內(nèi)部對象 如 Session 和 Application 對象 程序 9 09 asmx 說明了使用 Session 和 Application 來實現(xiàn)頁面的訪問記數(shù) 案例名稱 使用內(nèi)部對象案例名稱 使用內(nèi)部對象 程序名稱 程序名稱 9 09 asmx using System using System Web Services public class SessionService1 WebService WebMethod EnableSession true public String UpdateHitCounter if Session HitCounter null Session HitCounter 1 else Session HitCounter int Session HitCounter 1 return 訪問這個 Web 服務 Session Session HitCounter ToString 次 WebMethod EnableSession false public String UpdateAppCounter if Application HitCounter null Application HitCounter 1 else Application HitCounter int Application HitCounter 1 return 訪問這個 Web 服務 Applicaton Application HitCounter ToString 次 Web 服務提供兩個方法 一個利用 Session 實現(xiàn)頁面訪問記數(shù) 另一個利用 Application 實現(xiàn)頁面的訪問記數(shù) 利用 WebMethod EnableSession false 實現(xiàn) Session 對象的關 閉 瀏覽器直接調(diào)用顯示結果如圖 9 16 所示 圖 9 16 使用內(nèi)部對象 使用之前依然生成代理程序 使用命令如程序 9 10 bat 所示 命令名稱 創(chuàng)建代理類和代理程序命令名稱 創(chuàng)建代理類和代理程序 程序名稱 程序名稱 9 10 bat wsdl exe http localhost 9 09 asmx wsdl l cs n SessionService1 csc out bin SessionService1 dll t library r system data dll r system web services dll SessionService1 cs pause 命令的執(zhí)行如圖 9 17 所示 圖 9 17 創(chuàng)建代理類和代理程序 利用 ASP NET 文件來調(diào)用該 Web 服務的代理程序 ASP NET 的程序如 9 11 aspx 文 件所示 案例名稱 使用內(nèi)部對象案例名稱 使用內(nèi)部對象 程序名稱 程序名稱 9 11 aspx public void Page Load Object sender EventArgs E SessionService1 s new SessionService1 s CookieContainer new CookieContainer Message1 InnerHtml s UpdateHitCounter s UpdateHitCounter s UpdateHitCounter Message2 InnerHtml s UpdateAppCounter s UpdateAppCounter s UpdateAppCounter 在 Web 服務中使用內(nèi)置對象 Session 和 Application 我被訪問了 我被訪問了 Session 和 Application 分別實現(xiàn)了訪問的記數(shù)功能 當瀏覽器刷新的時候 或者新打 開瀏覽器的時候 Application 的計數(shù)值會自動增長 程序中 s CookieContainer new CookieContainer 的功能臨時將 Session 數(shù)據(jù)存儲在 CookieContainer 對象中 如果沒有 該語句 將不能實現(xiàn)計數(shù) 執(zhí)行的結果如圖 9 18 所示 圖 9 18 使用對象和內(nèi)部對象 9 5 使用 SOAP 協(xié)議 SOAP 是 Web 服務交換消息的標準協(xié)議 SOAP 利用 XML 來封裝信息 對于 Web 服 務來說 SOAP 通過 XML 格式的信息傳遞參數(shù) 進行 Web 調(diào)用 9 5 1 SOAP 的結構 無論是傳遞數(shù)據(jù)還是執(zhí)行遠程方法調(diào)用 SOAP 必須有一個統(tǒng)一的格式 SOAP 首先 必須具有 XML 格式 并且由 Schema 大綱定義其所包含的標記 總體上看 SOAP 消息主 要包括以下 3 個主要元素 1 SOAP 它是整個 SOAP 消息的根元素 也是每個 SOAP 消息中必須有 的元素 其他元素都在這個元素內(nèi)部 2 SOAP 元素是 SOAP 消息中的可選元素 也就是說不是每個 SOAP 消息中都必須有元素 但如果有 必須是的第一個直接子元素 元素中可以包括多個頭條目子元素 3 SOAP 這是每個 SOAP 消息中都必須有的元素 而且是元素的 直接子元素 如果 Envelope 消息中沒有元素 那這個元素必須是元素 的第一個子元素 否則它必須緊接著元素 程序 9 12 xml 文件定義了一個 SOAP 消息的格式 案例名稱 案例名稱 SOAP 的結構的結構 程序名稱 程序名稱 9 12 xml Admin MyPassword 利用 IE5 以上版本的瀏覽器打開 SOAP 是一個標準的 XML 文件 顯示成 XML 默認 的樹狀結構 如圖 9 19 所示 圖 9 19 SOAP 文件的瀏覽器顯示 9 5 2 定義和處理 SOAP 頭條目 Web 服務允許定義和處理 SOAP 頭條目 定義 SOAP 頭條目是通過繼承 SoapHeader 類實現(xiàn)的 定義 SOAP 頭條目 創(chuàng)建一個繼承 SoapHeader 的類 作為頭條目內(nèi)容的元素應該聲明為公開的的成員方 法 例如下面的類繼承 SoapHeaer 其中聲明 Username 和 Password 兩個成員 public class AuthHeaderCS SoapHeader public string Username public string Password 處理 SOAP 頭條目 定義的 SOAP 頭條目類 可以在 Web 服務中使用 使用 SOAP 頭條目分為如下三步 1 在 Web 服務類中聲明一個代表 SOAP 頭條目類的變量 比如 WebService Description Simple sample to demonstrate use of SOAP Headers public class HeaderService public AuthHeaderCS sHeader 2 在每個 Web 服務方法上應用 SoapHeader 特性 比如 WebMethod Description This method requires a custom soap header set by the caller SoapHeader sHeader public string SecureMethod 3 在每個應用了 SoapHeader 特性的 Web 服務方法中訪問變量中成員 比如 public string SecureMethod if sHeader null return ERROR Please supply credentials string usr sHeader Username string pwd sHeader Password 程序 9 13 asmx 文件使用 SOAP 頭條目實現(xiàn)用戶名的驗證 程序中只要是用戶名和密 碼不為空 就視為合法的用戶 否則視為非法用戶 案例名稱 使用案例名稱 使用 SOAP 頭條目實現(xiàn)驗證頭條目實現(xiàn)驗證 程序名稱 程序名稱 9 13 asmx using System using System Web Services using System Web Services Protocols namespace SoapHeadersCS public class AuthHeaderCS SoapHeader public string Username public string Password public class HeaderService public AuthHeaderCS sHeader WebMethod SoapHeader sHeader public string SecureMethod if sHeader null return 錯誤 請?zhí)峁炞C信息 string usr sHeader Username string pwd sHeader Password if AuthenticateUser usr pwd return 驗證成功 usr pwd else return 錯誤 不能被驗證 private bool AuthenticateUser string usr string pwd if usr null return false 利用瀏覽器調(diào)用 Web Service 的程序 顯示的結果如圖 9 20 所示 圖 9 20 使用 SOAP 頭條目實現(xiàn)驗證 將 Web 服務編譯成代理程序 用的指令如程序 9 14 bat 文件所示 命令名稱 編譯成代理程序命令名稱 編譯成代理程序 程序名稱 程序名稱 9 14 bat wsdl exe http localhost 9 13 asmx wsdl l cs n soapheaders csc out bin SoapHeaders dll t library r system data dll r system web services dll HeaderService cs pause 編譯過程如圖 9 21 所示 圖 9 21 生成代理程序的過程 利用 9 15 aspx 文件來調(diào)用 Web Service 實現(xiàn) SOAP 頭的驗證 案例名稱 使用案例名稱 使用 SOAP 頭條目實現(xiàn)驗證頭條目實現(xiàn)驗證 程序名稱 程序名稱 9 15 aspx public void Page Load Object sender EventArgs e HeaderService h new HeaderService Response Write 第一次調(diào)用 try Response Write h SecureMethod catch Exception ex Response Write 出現(xiàn)異常 ex StackTrace AuthHeaderCS myHeader new AuthHeaderCS myHeader Username JohnDoe myHeader Password password h AuthHeaderCSValue myHeader Response Write 第二次調(diào)用 h SecureMethod 進行了兩次調(diào)用 第二次密碼不為空 這個時候就是合法的 如果為空 則視為錯誤 程序顯示的結果如圖 9 22 所示 圖 9 22 使用 SOAP 頭條目實現(xiàn)驗證 9 6 Web 服務的數(shù)據(jù)服務 Web 服務的數(shù)據(jù)服務是最常用的一種服務 在 Web 服務使用 System Data 名字空間可 以利用數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)服務 程序 9 16 asmx 利用 Web 服務方法返回數(shù)據(jù)集 這是 XML Web 服務的一個非常強大 功能 因為數(shù)據(jù)集可以存儲復雜的信息和關系 通過 Web 服務公開數(shù)據(jù)集后 可以限制 數(shù)據(jù)服務器正在使用的數(shù)據(jù)庫連接 這樣就增加了服務器端安全性和減少了服務端負載 案例名稱 使用案例名稱 使用 Web 服務建立數(shù)據(jù)服務服務建立數(shù)據(jù)服務 程序名稱 程序名稱 9 16 asmx using System using System Web using System Web Services using System Data using System Data OleDb public class DBSrc WebService WebMethod public DataSet GetACCData string TBName string tiaojian1 string x Server MapPath person mdb string f Provider Microsoft Jet OLEDB 4 0 Data Source x OleDbConnection ACConn new OleDbConnection f DataSet DS new DataSet string k SELECT From TBName where 姓名 like tiaojian1 OleDbDataAdapter NComm new OleDbDataAdapter k ACConn NComm Fill DS TBName return DS 程序利用 Ol
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 取消承包義務3篇
- 應用層協(xié)議設計3篇
- 墊資施工合同中的合同違約時效3篇
- 動畫教育課程開發(fā)協(xié)議3篇
- 全面剖析檢測站招標文件的預算3篇
- 工商局授權書3篇
- 代簽委托書中的合同解除問題3篇
- 井位打井授權3篇
- 官方競爭性談判招標文件范本3篇
- 焙烤食品行業(yè)政策分析考核試卷
- 2025年裝維智企工程師(三級)復習模擬100題及答案
- 國家管網(wǎng)集團西南管道昆明輸油氣分公司突發(fā)環(huán)境事件綜合應急預案
- 停送電培訓課件
- 美學《形象設計》課件
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- 探析小學數(shù)學作業(yè)分層設計與評價獲獎科研報告
- 入團志愿書樣本(空白)
- 2022年續(xù)聘申請書
- 單片機病房呼叫系統(tǒng)設計
- 交通信號系統(tǒng)紅綠燈安裝專項施工方案
- DB14∕T 2024-2020 出口水果包裝廠管理規(guī)范
評論
0/150
提交評論