XML Web Service 开发 第1章 XML Web Service 第2章 XML Web Service 体系结构

Slides:



Advertisements
Similar presentations
下一代 Windows 通讯基础 Windows Communication Foundation ( 代码名 “Indigo”) 简介 谢 晓 软件设计工程师 陈耀文 部门经理 Windows 服务器产品部 微软亚洲工程院(上海)
Advertisements

本章要点: 掌握HttpRequest对象的应用。 掌握HttpResponse对象的应用。
动态Web开发技术--JSP.
第十四章 資訊管理的系統開發觀點.
第七章 电子商务系统的运营与维护.
网站如何定制建设???.
Microsoft Application Center Test
Chapter 7 網頁應用程式與狀態管理.
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
《ASP.NET数据库网站设计教程(C#版)》
第ㄧ章 認識 VB 2008 與主控台應用程式 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
Microsoft .NET 第4組 十月15, 2002 B 陳東傑 B 蔣佳勳
CH11.
Asp.net 基礎.
XML資料傳輸 黃笠宸 4/3.
BizTalk Server 2004.
Architecting Enterprise Application on .NET
Visual C# 2010 程式設計經典 第15章 ADO .NET與資料工具.
第16章 Windows Form與資料繫結 16-1 資料繫結的基礎 16-2 在專案新增資料來源 16-3 使用資料來源建立單筆編輯表單
专题4:JSP脚本和指令.
.NET 簡介.
.NET 簡介.
第1章 .NET与C# 为什么要设计一门新的编程语言? C#在微软的.Net平台中占据什么样的地位?
第十三章 資訊管理的系統開發觀點.
K/3 Cloud 技术开发培训 ----BOS 业务插件开发
BizTalk Server 2004.
第一章 Visual Studio、SQL Server介紹與開發環境
ADO.NET.
C#程序设计 c# programming 网络编程 C#程序设计课程组.
課程名稱:資料庫系統 授課老師:李春雄 博士
第2章 ADO.NET 2.0概述.
基于 C# 的 .NET Framework 程序设计
ASP.NET 網頁製作教本 – 從基本語法學起
MBL 327 Windows Mobile开发中的异构系统集成
第13章 會員管理與個人化程序 13-1 會員管理的基礎 13-2 啟用ASP.NET的會員管理 13-3 登入控制項
开发Web Services 客户端程序 杨永智 MCT/MVP 微软校园大使.
操作数据库 C#程序设计课程组.
使用ADO.NET访问数据 数据库连接 C#程序设计课程组.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
視窗程式設計簡介-VB、Visual Studio
第 13 章 體驗Web Service.
主 讲 教 师:陆有军 Web技术与应用 第四章 内部对象 主 讲 教 师:陆有军
課程名稱:_____________ 指導教授:_____________
K/3 Cloud V1.0技术开发培训 ----BOS 业务插件开发
第11章 Android客户端与服务器交互.
第4章 ASP.NET的HTTP物件、輸出入與Cookie處理
微软云计算 --Windows Azure platform
第五讲 酒店客房管理系统(一) 教育部“十二五”职业教育国家规划教材
Network Application Programming(3rd Edition)
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
第18章 個人入口網站的建立 18-1入口網站的基礎 18-2 建立網站的搜尋引擎 18-3 網頁組件的個人化功能
劉崇汎 崑山科技大學 電腦與通訊系 DLL的建立與引用 劉崇汎 崑山科技大學 電腦與通訊系
第 1 章 簡介XML.
第十讲 学生成绩管理系统(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
补充:c#语言基础.
21世纪高职高专规划教材 C#语言程序设计 李继武 彭德林 主 编 张 珑 赵 松 周建辉 副主编
通讯录管理系统设计 常州工程职业技术学院 计算机技术系.
第 10 章 ADO.NET與XML.
C# 基本語法、變數.
一個基於Web Service的 洪氾預警系統
1 Session对象的特性 Session 状态对象 Session 对象常用的方法有: Session 对象常用的属性有:
DEV 343 VS2005超快速开发方案/EEP2006控件包.
XML Web Service 开发 第1章 XML Web Service 第2章 XML Web Service 体系结构
ASP.NET实用教程 清华大学出版社 第9章数据库应用 教学目标 教学重点 教学过程 2019年5月3日.
第1章 ASP.NET基础.
Web Service 尹伟铭
本章要点: 了解ASP.NET 4.5的基础.NET Framework。
蔺华 ISV开发合作经理 平台及开发技术部 微软(中国)有限公司
C#快速導讀 流程控制.
國立勤益科技大學 冷凍空調與能源系 實務專題成果展
Presentation transcript:

XML Web Service 开发 第1章 XML Web Service 第2章 XML Web Service 体系结构

第5章 实现一个简单的 XML Web Service 管理 ASP.NET Web 服务的状态 调试 Web 服务

创建 Web 服务项目 5.1 创建一个 Web 服务项目 演示 创建一个 Web 服务项目 Web 服务项目的组成部分

演示 创建 Web 服务项目 5.1.1 演示 创建一个 Web 服务项目

检查 Web 服务项目的组成部分 引用 System 命名空间:包含了常用的数据类型、事件、接口、属性以及异常类 System.Data 命名空间:提供对 ADO.NET 的支持,其中最重要的类是 DataSet System.Web 命名空间:提供对浏览器和服务器之间通信的支持,重要的类包括 HTTPRequest 和 HTTPResponse,其他的类支持 cookie 管理、异常处理和输出缓存等 System.Web.Services命名空间:支持 Web 服务,最重要的类是 WebService

检查 Web 服务项目的组成部分 5.1.2 Web 服务项目的组成部分 引用 System.XML命名空间:提供处理 XML 文档的类,这些类是根据 W3C 的标准开发的,支持以下标准: XML 1.0 XML 命名空间 XML 架构 XSD XPath 表达式 可扩展样式表语言传输 XSLT 文档对象模型 DOM 级别1 和 级别2 简单对象访问协议 SOAP 1.1

检查 Web 服务项目的组成部分 5.1.2 Web 服务项目的组成部分 .asmx 文件:使用 ASP.NET 开发的 Web 服务的入口文件,使用不同的访问方法可以获得不同的信息 服务帮助页面:服务帮助页面包含 Web 服务方法的访问链接以及 WSDL 链接 服务方法帮助页面:提供某一服务方法的具体信息,包括该方法支持的协议类型和请求响应的消息实例等,同时可以使用 HTTP-POST 调用该方法 服务描述页面:显示 Web 服务的 WSDL 文档 在浏览器中直接输入 URL 就可以获得: http://servername/projectname/webservicename.asmx 点击服务帮助页面的方法链接就可以获得 点击服务帮助页面的 WSDL 链接,或者访问: http://servername/projectname/webservicename.asmx?WSDL

服务帮助页面 5.1.2 Web 服务项目的组成部分

服务方法帮助页面 5.1.2 Web 服务项目的组成部分

检查 Web 服务项目的组成部分 Global.asax 文件 提供代码响应 Application 的事件和 HttpModule 类的事件 由 IIS 提供保护,外部用户无法直接访问 修改后,系统自动触发 Application_OnEnd 事件终止应用程序,使修改生效,并在收到下一个访问请求后触发 Application_OnStart 事件启动应用程序 .vsdisco 文件:提供动态发现支持,不推荐使用 AssemblyInfo (“.cs” 或“.vb”) 文件 /bin 文件夹:包含编译后的程序集文件

检查 Web 服务项目的组成部分 Web.config 文件 采用XML 格式 作用范围包括当前文件夹和所有子文件夹 运行时,将缓存 ASP.NET 的配置并提供给后续访问请求使用 ASP.NET 自动监视配置是否被修改,修改后无需重启服务器就可以使新的设置生效 易于扩展,可以添加新的配置信息 可以通过配置 IIS 保护配置文件,防止来自外部的非法访问

第5章 实现一个简单的 XML Web Service 管理 ASP.NET Web 服务的状态 调试 Web 服务

实现 Web 服务方法 公开 Web 服务方法 了解数据类型和参数列表 演示 用组件设计器创建一个类型化DataSet 演示 用 XML 设计器创建一个类型化DataSet

公开 Web 服务方法 一个普通方法对外提供为可以通过 Web 服务调用的方法必须具备两个特点 方法的访问控制符是 public 方法必须由 WebMethod 属性修饰 [WebMethod] public AccountDataSet GetAccount()

配置 WebMethod 属性的属性值 BufferResponse 获取或设置是否缓存响应消息,默认值为“true” 设置为“false”时,并不意味着不缓存响应消息,而是把数据缓存为16KB 的数据块 CacheDuration 获取或设置Web 服务方法的结果在缓存中保存的时间,单位为“秒” 该值通知 ASP.NET是否进行缓存,默认值“0”表示不缓存 [WebMethod(BufferResponse=false)] public Transactions GetTransactionHistory() { //implementation code } [WebMethod(CacheDuration=60)] public double ConvertTemperature(double dFahrenheit){ return ((dFahrenheit - 32) * 5) / 9; }

配置 WebMethod 属性的属性值 Description 提供 XML Web Service 方法的说明 ,默认值为“String.Empty” [WebMethod(Description="This method converts a temperature in degrees Fahrenheit to a temperature in degrees Celsius.")] public double ConvertTemperature(double dFahrenheit) { return ((dFahrenheit - 32) * 5) / 9; }

配置 WebMethod 属性的属性值 EnableSession 设置是否为 Web 服务方法启用会话状态,默认值为“false” MessageName 用于在传递到 Web 服务方法和从 Web 服务方法返回的数据中修改 Web 服务方法的名称,默认值为该 Web 服务方法的名称 是支持方法重载的必要属性 TransactionOption 指定 XML Web Service 方法对事务的支持情况,默认值为“TransactionOption.Disabled” [WebMethod(MessageName="AddDoubles")] public double Add(double dValueOne, double dValueTwo) { return dValueOne + dValueTwo;} [WebMethod(MessageName="AddIntegers")] public int Add(int iValueOne, int iValueTwo) { return iValueOne + iValueTwo;}

检查数据类型和参数列表 简单数据类型 整型、字符串和浮点小数被封装为 XSD 的内部类型 输入和输出参数 5.2.2 了解数据类型和参数列表 简单数据类型 整型、字符串和浮点小数被封装为 XSD 的内部类型 输入和输出参数 方法的值传递变量被定义为 WSDL 的输入消息 方法的地址传递变量和返回值被定义为 WSDL 的输出消息 可变长度参数列表 实现可变长度参数列表的 Web 服务方法和普通方法一样,不同之处在于生成代理类后,必须在方法声明中手动加入可变长度关键字

检查数据类型和参数列表 5.2.2 了解数据类型和参数列表 复杂数据类型 类和结构:由于 HTTP 协议的无状态特点,类的对象实例作为参数和返回值时仅传递对象的状态数值,而不是完整的对象信息,对象传递由序列化和反序列化技术支持 数组:同构数组无需额外操作,异构数组必须使用 XmlInclude 属性列出所有子类类型,否则在序列化时会发生异常 集合:处理方法和数组类似 数据集:无需额外操作

数组返回值代码示例 5.2.2 了解数据类型和参数列表 public class Acct { [WebMethod] 5.2.2 了解数据类型和参数列表 public class Acct { public string Description; public string Number; public string Type; public decimal Balance; public string Status; } [WebMethod] [XmlInclude(typeof(CreditCardAcct))] [XmlInclude(typeof(SavingsAcct))] [return:XmlArray("AccountList")] [return:XmlArrayItem("Account")] public Acct[] GetAllAccounts() { SavingsAcct a = new SavingsAcct(); CreditCardAcct cc = new CreditCardAcct(); // populate the accounts Acct [] sa = new Acct[2]; sa[0] = a; sa[1] = cc; return sa; } public class SavingsAcct : Acct { public decimal MinimumBalance; } public class CreditCardAcct : Acct public int PayPeriod;

数据集的处理方法 非类型化数据集:与普通集合的处理方式相同,不推荐使用 5.2.2 了解数据类型和参数列表 非类型化数据集:与普通集合的处理方式相同,不推荐使用 类型化数据集:使用 XSD 架构定义表、字段和其他元素,Visual Studio .NET 对类型化数据集的支持更加完善,创建方法包括 组件设计器,缺点 必须与 DataAdapter 对象挂钩,初始时无法直接控制 DataAdapter 的 SQL 语句改变必须作相应修改 不能实现某些 DataSet 的功能 XML 设计器,缺点 集成级别较低 .xsd 文件无法与外部数据源自动关联 要求程序员熟悉 XML 架构

演示 使用组件设计器创建类型化数据集 生成 SqlDataAdapter 使用 SqlDataAdapter 创建类型化数据集 演示 使用组件设计器创建类型化数据集 5.2.3 演示 用组件设计器创建一个类型化DataSet 生成 SqlDataAdapter 使用 SqlDataAdapter 创建类型化数据集

演示 使用 XML 设计器创建类型化数据集 向项目中添加 XML 架构 向架构中添加 XML 简单类型元素 5.2.4 演示 用 XML 设计器创建一个类型化DataSet 向项目中添加 XML 架构 向架构中添加 XML 简单类型元素 向架构中添加 XML 复杂类型元素 向项目中添加 XML 元素 生成类型化数据集类 检查生成的数据集类

第5章 实现一个简单的 XML Web Service 管理 ASP.NET Web 服务的状态 调试 Web 服务

管理 ASP.NET Web 服务的状态 应用程序状态 会话状态 5.3 管理 ASP.NET Web 服务的状态 Web 服务消费者

应用程序与会话 5.3.1 应用程序状态 第一个会话和应用程序同时启动 最后一个会话和应用程序同时结束 会话1、2、3…… …… 应用程序

应用程序状态 ASP.NET 中,可以将全局变量通过 HttpApplicationState 类存储在应用程序状态中 优点 5.3.1 应用程序状态 ASP.NET 中,可以将全局变量通过 HttpApplicationState 类存储在应用程序状态中 优点 易于实现:应用程序状态易于使用,为 ASP 开发人员所熟悉,并且与其他 .NET Framework 类一致 全局范围:应用程序状态可供应用程序中的所有页面访问,因此在应用程序状态中存储信息可能意味着只保留信息的一个副本 缺点 全局范围:在应用程序状态中存储的变量仅对于运行该应用程序的特定进程而言是全局的,并且每一应用程序进程可能具有不同的值 持久性:由于应用程序状态中存储的全局数据容易丢失,如果包含这些数据的 Web 服务器进程损坏,则会丢失这些数据 资源要求:应用程序状态需要服务器内存,可能会影响服务器的性能以及应用程序的可伸缩性

使用应用程序状态 注意事项 内存占用问题,不要把大对象保存为应用程序状态 5.3.1 应用程序状态 注意事项 内存占用问题,不要把大对象保存为应用程序状态 多线程同步问题,多个线程同时读写会导致数据破坏,默认配置为了性能优化,没有自动处理多线程同步问题 死锁问题,使用锁机制解决多线程访问冲突就必然导致发生死锁 数据容易丢失 Web 园和 Web场中不会共享应用程序状态数据

应用程序状态同步 调用 HttpApplicationState 的 Lock 和 Unlock 方法可以解决多线程应用程序状态数据同步问题 5.3.1 应用程序状态 调用 HttpApplicationState 的 Lock 和 Unlock 方法可以解决多线程应用程序状态数据同步问题 Application.Lock(); Application["SomeGlobalCounter"] = (int)Application["SomeGlobalCounter"] + 1; Application.UnLock();

会话状态 5.3.2 会话状态 ASP.NET 提供了一种会话状态,该会话状态可作为 HttpSessionState 类或存储会话特定信息(仅在该会话中可见)的方法来使用 优点 易于实现:会话状态功能易于使用,为 ASP 开发人员所熟悉,并且与其他 .NET Framework 类一致 会话特定的事件:会话管理事件可以由应用程序引发和使用 持久性:放置于会话状态变量中的数据可以承受 IIS 重新启动和辅助进程重新启动,而不丢失会话数据,这是因为这些数据存储在另一个进程空间中 平台可缩放性:会话状态对象可在多计算机和多进程配置中使用,因而优化了可缩放性方案 尽管会话状态最常见的用途是与 Cookie 一起向 Web 应用程序提供用户标识功能,但会话状态可用于不支持 HTTP Cookie 的浏览器 缺点 性能:会话状态变量在被移除或替换前保留在内存中,因而可能降低服务器性能

使用会话状态 5.3.2 会话状态 标识会话 每个活动的 ASP.NET 会话都是使用 120 位的 SessionID 字符串进行标识和跟踪,该字符串只包含 URL 中所允许使用的 ASCII 字符 根据配置应用程序所设置的方式(支持还是不支持 Cookie),通过 HTTP Cookie 或嵌套有 SessionID 字符串的 URL 跨客户端-服务器请求标识会话 使用会话状态可以不再要求客户端支持 Cookie <configuration> <system.web> <sessionState cookieless="true"/> </system.web> </configuration> 在 Web.config 中配置

从会话状态获取数据应用举例 5.3.2 会话状态 <%@ WebService Language="C#" EnableSessionState="true" %> [WebMethod] public DataSet GetCurrentBalances(string acctID) { DataSet balances; balances = (DataSet) Session["CurrentBalances"]; if (balances == null) // retrieve current balances from database balances = GetCurrentBalancesLive(acctID); Session["CurrentBalances"] = balances; } return balances;

第5章 实现一个简单的 XML Web Service 管理 ASP.NET Web 服务的状态 调试 Web 服务

调试 Web 服务 Debug、 Trace 和 Switch 类 配置调试和跟踪设置 SOAP 扩展与跟踪 演示 用 SoapExtension 执行跟踪 调试 Web 应用程序的工具

Debug、Trace 和 Switch 类 Debug Debug 类通常用于调试输出窗口中显示信息 Trace Switches 控制跟踪,包括是否跟踪、跟踪的级别和跟踪的输出等 Listeners 收集跟踪输出信息

Trace 和 Debug 的区别 Trace 和 Debug 是属于 System.Diagnostics 命名空间中的两个类,区别如下 5.4.1 Debug、Trace 和 Switch 类 Trace 和 Debug 是属于 System.Diagnostics 命名空间中的两个类,区别如下 Debug 只工作在 debug builds 模式下,而 Trace 可以工作在 debug 和 release builds 模式下 Debug 通常在开发过程中使用,而 Trace 可以在部署和生产环境中使用 使用Trace 要特别小心,因为 Trace 可以在非调试模式下工作

写入跟踪信息的 Debug 和 Trace 方法 5.4.1 Debug、Trace 和 Switch 类 方法 输出 Assert 指定的文本;如果未指定任何文本,则为“调用堆栈”。只有当 Assert 语句中以参数形式指定的条件为 false 时,才会写入输出 Fail 指定的文本;如果未指定任何文本,则为“调用堆栈” Write 指定的文本 WriteIf 如果满足 WriteIf 语句中以参数形式指定的条件,则为指定的文本 WriteLine 指定的文本和一个回车 WriteLineIf 如果满足 WriteLineIf 语句中以参数形式指定的条件,则为指定的文本和一个回车

配置调试和跟踪 5.4.2 配置调试和跟踪设置 交互式调试 跟踪 配置 TraceSwitch 配置 listeners

配置交互式调试 修改 web.config 或者 machine.config 文件 5.4.2 配置调试和跟踪设置 修改 web.config 或者 machine.config 文件 只在调试应用程序时配置,在生产环境中应该尽量避免使用,因为这个配置会严重影响性能 <configuration> <system.web> <compilation defaultLanguage="c#" debug="true" /> </system.web> </configuration>

配置跟踪 Trace 可以在 web.config 中对所有页面集中配置,也可以在页面文件头中进行设置 5.4.2 配置调试和跟踪设置 Trace 可以在 web.config 中对所有页面集中配置,也可以在页面文件头中进行设置 <configuration> <system.web> <trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" /> </system.web> </configuration>

配置 TraceSwitch 5.4.2 配置调试和跟踪设置 <configuration> 5.4.2 配置调试和跟踪设置 <configuration> <system.diagnostics> <switches> <add name="acctInfo" value="0" /> <add name="acctUpdates" value="4" /> </switches> </system.diagnostics> </configuration> TraceSwitch tsInfo = new TraceSwitch("acctInfo", "Info traces"); TraceSwitch tsUpdate = new TraceSwitch("acctUpdate", "Update traces"); Trace.WriteLineIf(tsInfo.TraceVerbose, "Writing all acctInfo traces."); Trace.WriteLineIf(tsUpdate.TraceVerbose,"Writing all acctUpdate traces."); ... tsInfo.Level = TraceLevel.Warning; Trace.WriteLineIf(tsInfo.TraceWarning,"some warning..."); tsInfo.Level = TraceLevel.Error; Trace.WriteLineIf(tsInfo.TraceWarning,"another warning...");

配置 listeners <configuration> <system.diagnostics> 5.4.2 配置调试和跟踪设置 <configuration> <system.diagnostics> <listeners> <add name="myTextListener" type="TextWriterTraceListener" initializeData="c:\myListeners.log" /> </listeners> </system.diagnostics> </configuration>

SOAP 扩展和跟踪 5.4.2/5.4.3 配置调试和跟踪设置 SOAP 扩展由 SoapExtension 类支持,ProcessMessage 是 SOAP 扩展的重要方法 使用 SOAP 扩展实现跟踪 从 SoapExtension 派生类 1 实现用户自定义属性 2 将自定义属性应用到 Web 服务方法上 3

演示 使用 SoapExtension 实现跟踪

调试 Web 应用程序的工具 页面级别和应用程序级别的跟踪 写入事件日志的编程方法 性能计数器 5.4.5 调试 Web 应用程序的工具 string LogName = "ContosoLog"; string AppName = "ContosoMicropayments"; EventLog Log = new EventLog(LogName); string Message = string.Format ("Invalid account number {0}",acctNumber); Log.Source = AppName; Log.WriteEntry(Message, EventLogEntryType.Warning);

应用程序级别跟踪 属性 说明 enabled 如果启用了应用程序级跟踪,则为 true;否则为 false,默认值为 false 5.4.5 调试 Web 应用程序的工具 属性 说明 enabled 如果启用了应用程序级跟踪,则为 true;否则为 false,默认值为 false pageOutput 如果跟踪信息显示在应用程序页面的末端,则为 true;否则为 false,注意:这个属性并不应用于Web 服务 requestLimit 服务器上存储的跟踪请求的数目,默认值为 10 traceMode 指示跟踪信息,是按它们被处理的顺序 (SortByTime) 显示,还是按用户定义类别的字母顺序 (SortByCategory) 显示,默认值为 SortByTime localOnly 如果跟踪查看器 (Trace.axd) 只在主机 Web 服务器上可用,则为 true;否则为 false,默认值为 true

应用程序级别跟踪配置和结果示例 配置示例 访问结果 http://servername/applicationname/trace.axd 5.4.5 调试 Web 应用程序的工具 配置示例 访问结果 <configuration> <system.web> <trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" /> </system.web> </configuration> http://servername/applicationname/trace.axd

回顾 学习完本章后,将能够: 创建 Web 服务项目 实现 Web 服务的方法,对外提供方法以及控制方法的行为 在基于 ASP.NET 的 Web 服务中管理状态 调试 Web 服务

实验 实现一个简单的 XML Web Service 防火墙 Contoso Micropayment Web 服务 Woodgrove Bank Web 服务 Internet Web 服务消费者