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

Slides:



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

欢迎各位 Nice to Meet U.
第14章 表单 在制作动态网页时,要实现信息交互,常常用到表单。 常见的表单有搜索表单、用户登录注册表单、调查表 单、留言簿表单等。本章节将和大家一起探讨在表单 的基本概念和各个元素,以及在Dreamweaver CS4中 如何创建表单,并通过实例掌握表单制作的方法。
本章要点: 掌握HttpRequest对象的应用。 掌握HttpResponse对象的应用。
Database Management System 資料庫管理系統
项目四:Internet基础与接入方法 第八章 应用服务器安装配置
硕士论文开题报告 煤炭企业物流信息系统的 研究与设计 指导老师: 学生姓名: 学 号:
说网络技术专业 江苏联合职业技术学院徐州财经分院 王 磊.
第七章 社会工作的微观方法 人文学院 李太斌.
第十四章 資訊管理的系統開發觀點.
慈方名医系统-标准版(中医版) 能真正帮助医生提高临床疗效的高级全科诊治咨询系统! 使用说明书 慈方中医网
Access数据库知识 安丘市职业中专 雷云龙.
Web程序设计 主讲:林福平 太原理工大学 计算机学院 去除PPT模板上的--无忧PPT整理发布的文字
第七章 电子商务系统的运营与维护.
程式語言與設計 授課教師:蔣德威.
网站如何定制建设???.
網頁技術簡介.
课程名称:《电子商务基础与实操》 单元18 网上银行业务实践 主讲人:万守付 深圳信息职业技术学院信息经济系
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
《ASP.NET数据库网站设计教程(C#版)》
第ㄧ章 認識 VB 2008 與主控台應用程式 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
第一章 認識Visual C 環境架構 1-1 認識Visual C Visual Studio 概觀
Microsoft Application Platform 開發技術導引
Microsoft .NET 第4組 十月15, 2002 B 陳東傑 B 蔣佳勳
Asp.net 基礎.
XML資料傳輸 黃笠宸 4/3.
BizTalk Server 2004.
Visual C# 2010 程式設計經典 第15章 ADO .NET與資料工具.
.NET 簡介.
第 2 章 FrontPage 2002 的基本操作.
.NET 簡介.
第1章 .NET与C# 为什么要设计一门新的编程语言? C#在微软的.Net平台中占据什么样的地位?
第十三章 資訊管理的系統開發觀點.
RFID課程主題七 RFID應用—資產與設備管理.
第一章: Java Web 开发技术概述.
第一章 Visual Studio、SQL Server介紹與開發環境
第2章 ADO.NET 2.0概述.
组长:吴蔚 项目组成员:吴蔚,邱丁兰,汪琳莺
第2章 Visual FoxPro 简介 Visual FoxPro概述 Visual FoxPro设计工具
【VA虚拟应用管理平台】专题培训 资源管理及个性化 陕西益和信息技术开发有限责任公司 2011年2月.
第5章 方案工程(Solutions Engineering)
Ch01網際網路、HTML 、 Script 、 ASP.NET簡介
开发Web Services 客户端程序 杨永智 MCT/MVP 微软校园大使.
視窗程式設計簡介-VB、Visual Studio
Ajax網頁的危機與防禦術 王寧疆 MCAD.NET/MCSD.NET/MCT/MVP 資策會教育訓練處.
第 13 章 體驗Web Service.
《网上报告厅》使用说明 北京爱迪科森教育科技股份有限公司.
数据智能同步系统 操作指南.
課程名稱:_____________ 指導教授:_____________
XML Web Service 开发 第1章 XML Web Service 第2章 XML Web Service 体系结构
Empower for MircoSoft ISV
微软云计算 --Windows Azure platform
基于.NET的需求分析和解决方案设计 第1章 商务解决方案设计 第2章 收集和分析信息 第3章 解决方案的构思 第4章 概念设计的创建
大專院校美食網- 以新北市為例 商務科技管理專題 組 別: 第二組 專題成員: 方采薇 陳宜欣
Network Application Programming(3rd Edition)
电子商务 王素凤
第18章 個人入口網站的建立 18-1入口網站的基礎 18-2 建立網站的搜尋引擎 18-3 網頁組件的個人化功能
第 1 章 簡介XML.
21世纪高职高专规划教材 C#语言程序设计 李继武 彭德林 主 编 张 珑 赵 松 周建辉 副主编
【VA虚拟应用管理平台】专题培训 资源管理及个性化 陕西益和信息技术开发有限责任公司 2011年2月.
通讯录管理系统设计 常州工程职业技术学院 计算机技术系.
第 10 章 ADO.NET與XML.
COM组件及其设计 一、COM组件定义和DNA思想简介 二、COM组件的特点 三、COM组件对象的软件工程方法 四、DNS、MTS
1 打开 SQL Server 2005 安装盘,单击 SPLASH.HTA 文件进行安装,安装界面如图所示。
第1章 ASP.NET基础.
詳細說明.
IT DNA- 微軟MVP、資深IT人胡百敬 資訊產業全攻略!IT知識工作者聯手推薦! 資訊新鮮人》 專業資訊人》 知識工作者》
第 1 章 設計網頁的準備工作.
第十二章 Visual FoxPro开发Web数据库
课程奖品 《SharePoint Portal Server 2003 深入指南》 Office System 2007 Beta2 1.
Presentation transcript:

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

第8章 XML Web Service 设计 数据类型约束 性能 可靠性 版本控制 使用屏幕抓取实现虚拟 Web 服务 聚合 Web 服务

数据类型约束 8.1 数据类型约束 协议约束 结构和类的比较 类型化数据集和非类型化数据集的比较 数组和集合的比较 异常

协议约束 数据类型 SOAP POST GET 基元类型  枚举类型 基元类型数组 类和结构  类和结构的数组 XmlNode 8.1 数据类型约束 数据类型 SOAP POST GET 基元类型  枚举类型 基元类型数组 类和结构  类和结构的数组 XmlNode XmlNode 的数组

选择合适的协议 选择协议的注意事项 GET 和 POST 方法只支持基元类型、枚举类型和基元类型数组 8.1 数据类型约束 选择协议的注意事项 GET 和 POST 方法只支持基元类型、枚举类型和基元类型数组 SOAP 把复杂类型封装在 XML 中,并标准化调用格式 SOAP 支持丰富的功能扩展 HTTP 方法的优点 HTTP 协议比 SOAP 协议使用面更广 HTTP 协议的访问流量比 SOAP 小 如果禁用 HTTP GET 方法,就不能直接访问 Web 服务的 URL 进行测试

修改所支持的协议 8.1 数据类型约束 缺省情况下,新建的 Web 服务对 SOAP、HTTP GET 和 HTTP POST 方法都支持,使用下面的代码示例在 web.config 文件中修改这个缺省配置 <configuration> <system.web> <webServices> <protocols> <remove name="HttpGet" /> <remove name="HttpPost" /> </protocols> </webServices> </system.web> </configuration>

结构和类的比较 Web 服务传递类的对象时并不是以远程对象的形式完整实现,只是把对象中的公共属性值和字段进行远程传递 8.1 数据类型约束 Web 服务传递类的对象时并不是以远程对象的形式完整实现,只是把对象中的公共属性值和字段进行远程传递 从 Web 服务消费者的角度来看,类和结构没有很大的区别 XSD 的复杂数据类型支持继承,但是结构不支持继承,因此类比结构在 Web 服务中更加常用

类型化数据集和非类型化数据集的比较 类型化数据集的优点 代码更加容易读懂 微软 IntelliSense® 智能感知技术完全支持类型化数据集 8.1 数据类型约束 类型化数据集的优点 代码更加容易读懂 微软 IntelliSense® 智能感知技术完全支持类型化数据集 结构化数据集的语法提供了编译时的类型检查 使用非类型化数据集的场合 没有数据集架构,例如从第三方获得的数据集 数据没有静态可预测的结构 数据集是动态创建的,不适合定义架构

数组和集合的比较 在设计 Web 服务时要尽量使用强类型 不管是使用数据还是集合,都应该尽量避免异构的出现 8.1 数据类型约束 在设计 Web 服务时要尽量使用强类型 不管是使用数据还是集合,都应该尽量避免异构的出现 由于在多数情况下数组保存的是相同类型的数据,因此数组是比较常用的数据类型 使用异构类型时,必须在方法属性中使用 XmlInclude 加以说明

异常 使用返回值的方法处理 程序员往往会忽略 Web 服务方法返回的错误代码 使用抛出异常的方法处理 8.1 数据类型约束 使用返回值的方法处理 程序员往往会忽略 Web 服务方法返回的错误代码 使用抛出异常的方法处理 HTTP 协议的方法不支持这种处理方法,发生异常时只简单显示错误代码 500 必须使用 SOAP 类来支持异常处理 使用 SoapException 类来处理

第8章 XML Web Service 设计 数据类型约束 性能 可靠性 版本控制 使用屏幕抓取实现虚拟 Web 服务 聚合 Web 服务

性能 8.2 性能 常规性能考虑事项 .NET 需要考虑的具体事项 Web 服务中的缓存 异步服务器端方法

常规注意事项 缓存 如果缓存了错误的数据就意味着浪费内存 如果缓存了过多数据,那么其他应用程序使用的内存就会减少 8.2.1 常规性能考虑事项 缓存 如果缓存了错误的数据就意味着浪费内存 如果缓存了过多数据,那么其他应用程序使用的内存就会减少 如果缓存的数据太少,则发挥不了缓存的效果,因为没有缓存的数据必须重新构造和处理 如果对时间敏感的数据缓存时间太长,很可能使缓存数据失效 必须及时检查并释放无效的数据缓存项

常规注意事项 通常在使用 Application 存储可更新状态时使用锁 8.2.1 常规性能考虑事项 通常在使用 Application 存储可更新状态时使用锁 不要过度保护数据,即不要在没必要的数据上设置锁,也不要设置太长的上锁时间 把数据分区,这样就可以有选择地设置锁,保护重要的数据 使用 System.Threading 命名空间的 Interlocked 类在修改数据时自动设置锁 对不常修改的数据设置“多个读取/单个写入”的锁

常规注意事项 异步调用 当方法的执行时间较长时使用 调用的形式是 Beginxxxx/Endxxxx 方法对 衡量性能和行为的方法 8.2.1 常规性能考虑事项 异步调用 当方法的执行时间较长时使用 调用的形式是 Beginxxxx/Endxxxx 方法对 衡量性能和行为的方法 .NET 中提供了用于衡量性能和行为的测试工具 不必要的代码 程序员在实现功能后应该尽量删除不会被执行的代码 if (mySwitch.TraceVerbose) Trace.Write("Deposit failed"); Trace.WriteIf(mySwitch.TraceVerbose,"Deposit failed");

与 .NET 相关的注意事项 禁用会话状态,因为使用会话状态变量会影响系统的性能和可扩展性。两种禁用的方法 修改页面文件 修改配置文件 选择合适的状态提供者 进程内会话状态 以 Windows® 服务形式的进程外会话状态 在 SQL Server™ 数据库中的进程外会话状态 <%@ Page EnableSessionState="false" %> <sessionstate mode="off" />

与 .NET 相关的注意事项 避免异常发生 虽然 Web 服务可以支持异常处理,但一旦发生异常会影响性能,因此设计时应该尽量避免 使用本机数据源 如果后台数据库是 SQL Server,尽量直接使用 SQL 数据源而不要用 OLE DB 数据源 存储过程比直接使用 SQL 查询有更好的性能 SqlDataReader 类在处理大数据集时比 DataSet 性能好 使用 ASP.NET 网络园(Web Garden)

与 .NET 相关的注意事项 8.2.2 .NET 需要考虑的具体事项 禁用调试模式 一定要禁用调试模式。在部署应用程序或进行任何性能测试之前,始终记住要禁用调试模式。如果启用了调试模式,应用程序的性能可能会受到非常大的影响 <configuration> <system.web> <compilation defaultLanguage="c#" debug="false" /> </system.web> </configuration>

在 Web 服务中使用缓存 .NET Web 服务支持两种缓存 输出缓存:把方法的执行结果进行缓存,下次以相同参数访问该方法时不需要再次执行 数据缓存:把数据对象进行缓存,下次使用时不需要重新创建 [WebMethod(CacheDuration=60)] public Acct[] GetAccounts(int acctID) { Context.Cache["ListOfSources"] = dsSources;

在 Web 服务中使用缓存 Web 服务中的缓存控制 文件和键值依赖:通过 CacheDependency 类,使用外部资源或其他缓存项来定义缓存数据的有效性 过期策略:可以有两种方法控制缓存的有效时间,绝对时间和最后一次访问相对时间 XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("employees.xml")); CacheDependency depend = new CacheDependency(Server.MapPath("employees.xml")); Context.Cache.Insert("Employees", doc, depend); Context.Cache.Insert("Employees", doc, null, DateTime.Now.AddMinutes(2), Cache.NoSlidingExpiration); Context.Cache.Insert("Employees", doc, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(30));

在 Web 服务中使用缓存 优先级:设置缓存数据的优先级,当系统缺乏但需要释放缓存时会根据优先级进行有选择的处理 删除通知:缓存的数据在下列场景中被释放,可以通过编程使删除缓存数据时完成一些扫尾工作 缓存的有效期已过 缓存关联的对象发生变化 调用 Cache 类的 Remove 方法 CRL 在系统资源缺乏时自动清理缓存 场景:对于相对不固定的输出结果不要使用缓存 Context.Cache.Add("Employee", doc, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(30), CacheItemPriority.High, null);

异步服务器端方法 实现异步 Web 方法调用 C# 的实现方法 Visual Basic .NET 的实现方法 适用异步调用的场景 8.2.4 异步服务器端方法 实现异步 Web 方法调用 C# 的实现方法 Visual Basic .NET 的实现方法 适用异步调用的场景 Web 服务方法需要调用另一个 Web 服务 Web 服务方法中需要执行文件的输入输出操作 Web 服务方法中需要执行其他耗时的 I/O 操作,例如套接字 I/O 等

实验 A 在一个 XML Web Service 中实现缓存 防火墙 Contoso Micropayment Web 服务 Woodgrove Bank Web 服务 Web 服务消费者 Internet

第8章 XML Web Service 设计 数据类型约束 性能 可靠性 版本控制 使用屏幕抓取实现虚拟 Web 服务 聚合 Web 服务

可靠性 8.3 可靠性 可用性 进程隔离:Application Domain 支持在同一个处理器上实现不同应用程序的边界隔离,因为这项技术在 CLR 上运行,所以尽量对非托管代码进行移植以使用这项技术 进程恢复模型:aspnet_wp.exe 进程支持 Web 服务应用程序的自动重新启动

可靠性 衡量方法 性能计数器 WMI 实现的功能 主要利用 PerformanceCounter 类来实现对性能计数器的编程访问 8.3 可靠性 衡量方法 性能计数器 主要利用 PerformanceCounter 类来实现对性能计数器的编程访问 WMI 实现的功能 监控应用程序的工作状态 探测瓶颈或错误 管理和配置应用程序 查询应用程序的数据 实现本地或远程的管理操作

第8章 XML Web Service 设计 数据类型约束 性能 可靠性 版本控制 使用屏幕抓取实现虚拟 Web 服务 聚合 Web 服务

版本控制 程序集的版本控制 把程序集部署到 GAC 中,可以方便地实现多个版本同步运行,该技术被称为 side-by-side 8.4 版本控制 程序集的版本控制 把程序集部署到 GAC 中,可以方便地实现多个版本同步运行,该技术被称为 side-by-side WSDL 文档的版本控制 当修改 WSDL 定义的 Web 服务接口时,必须同步修改 UDDI 中的注册信息,否则会产生验证问题 版本处理的变通方法 可以使用 XmlElement 或 XmlNode 支持参数和返回值经常变化的 Web 服务

第8章 XML Web Service 设计 数据类型约束 性能 可靠性 版本控制 使用屏幕抓取实现虚拟 Web 服务 聚合 Web 服务

使用屏幕刮擦实现虚拟 Web 服务 在.NET Framework 中的正则表达式 在 WSDL 文档中使用正则表达式 演示 使用屏幕抓取(Screen Scraping)实现虚拟 Web 服务

.NET Framework 中的正则表达式 正则表达式可以高效、灵活地处理文本 快速处理大量的文本并找到特定的字符 读取、编辑、替换或删除文本中的子字符串 向集合中添加额外字符串以生成报告 Regex 类 Match 类 MatchCollection 类

在 WSDL 文档中使用正则表达式 手工创建 WSDL 文档 在 binding 元素的 output 元素中指明输出消息的格式 例子 <urt:text> <urt:match name="nameOfElement" pattern="regular expression ..."/> .... </urt:text> 例子 <urt:text> <urt:match name="LineItem" pattern="<tr>(.*)?</tr>" repeats="*"/> </urt:match> </urt:text>

演示 使用屏幕抓取(Screen Scraping)实现虚拟 Web 服务

第8章 XML Web Service 设计 数据类型约束 性能 可靠性 版本控制 使用屏幕抓取实现虚拟 Web 服务 聚合 Web 服务

聚合 Web 服务 聚合 Web 服务的适用场景 设计一个聚合的 Web 服务 演示 一个聚合 Web 服务的例子

聚合 Web 服务的场景 8.6.1 聚合 Web 服务的适用场景 Web 服务的网关 企业内部的 Web 服务采用 Windows 集成身份验证提供内部访问,一些合作伙伴也需要访问,此时可以在防火墙外创建 Web 服务提供网关的功能,接收外部访问请求并转交给内部 复杂 Web 服务的简单接口 有些 Web 服务接口很复杂,可以创建一个新的 Web 服务提供相对简单的访问接口,但是这个 Web 服务是通过访问那些复杂服务来实现功能 Web 服务的入口 有时一个应用由多个 Web 服务协调完成,可以创建一个统一的访问入口

设计用于聚合的 Web 服务 使用协议的注意事项 处理交互式客户端 为 ISP 的设计 为 ASP 的设计 自修复与远程修复 建议使用 SOAP 协议,因为 SOAP 除了和 HTTP 绑定外,还可以绑定其他协议,例如 FTP、SMTP 处理交互式客户端 聚合有用户交互操作的 Web 服务往往会导致性能降低,因此尽量避免使用 为 ISP 的设计 对于外包给 ISP 的服务,必须考虑安全配置是否可以实现,访问是否容易进行等事项 为 ASP 的设计 监控 自修复与远程修复

Contoso Micropayment Web 服务 Northwind Electronic Funds Transfer Web 服务 Internet 防火墙 Contoso Micropayment Web 服务 Woodgrove Bank Web 服务 Northwind Electronic Funds Transfer Web 服务 Web 服务消费者

回顾 学习完本章后,将能够: 掌握不同 Web 服务协议对数据类型的约束 解释 Application 和 Session 状态变量影响性能和可扩展性的原因 掌握使用输出和数据缓存来改善 Web 服务的性能 掌握异步 Web 服务方法的实现 掌握使用 Web 服务的必要性 掌握 Web 服务中可以进行版本控制的模块 解释使用屏幕刮擦实现虚拟 Web 服务的方法 掌握多个 Web 服务的集成 掌握聚合 Web 服务技术的注意事项

实验 B 实现一个聚合 XML Web Service Internet 防火墙 Contoso Micropayment Web 服务 Woodgrove Bank Web 服务 Northwind Electronic Funds Transfer Web 服务 Web 服务消费者