420 likes | 746 Views
XML Web Service 开发. 第 1 章 XML Web Service 第 2 章 XML Web Service 体系结构 第 3 章 XML Web Service 基础技术 第 4 章 使用 XML Web Service 第 5 章 实现一个简单的 XML Web Service 第 6 章 部署和发布 XML Web Service 第 7 章 XML Web Service 的安全 第 8 章 XML Web Service 设计
E N D
XML Web Service 开发 • 第1章 XML Web Service • 第2章 XML Web Service 体系结构 • 第3章 XML Web Service 基础技术 • 第4章 使用 XML Web Service • 第5章 实现一个简单的 XML Web Service • 第6章 部署和发布 XML Web Service • 第7章 XML Web Service 的安全 • 第8章 XML Web Service 设计 • 第9章 全局 XML Web Service 体系结构
第6章 部署和发布 XML Web Service • 部署 Web 服务 • UDDI 概述 • 发布一个 Web 服务 • 使用 UDDI
部署 Web 服务 6.1 部署 Web 服务 • 部署 Web 服务所需要的文件 • 手动部署 Web 服务 • 使用 Windows 安装程序文件来部署 Web 服务 • 演示 创建一个 Web 安装项目
部署 Web 服务需要的文件 6.1.1 部署 Web 服务所需要的文件
Web 服务项目中的文件 6.1.1 部署 Web 服务所需要的文件 • 需要删除的 • .sln, .vsdisco, .vbproj, .vbproj.webinfo, .csproj 等文件都是 Visual Studio .NET 使用的,生产环境不需要 • 资源文件 .resx、code-behind 文件 .cs,.vb、结构化数据集文件 .xsd 以及 Web 引用文件夹中的文件都会被编译到程序集的 .dll 文件中,因此在生产环境中不再需要 • 必须的 • \bin 文件夹中保存程序集 .dll • .aspx,.ascx,.asmx 是和用户的接口文件 • 配置文件,包括 web.config 和 global.asax • 其他辅助文件
手动部署 Web 服务的使用场合 在开发使用的服务器上部署 Web 服务 在 Web 服务最终部署前的测试 Web 服务相对比较简单 手动部署 Web 服务可以使用的方法 xcopy 命令,Windows 资源管理器或者 FTP Visual Studio .NET 复制项目命令 IIS 的配置不能通过复制部署到目标服务器上 手动部署 Web 服务 6.1.2 手动部署 Web 服务
手动部署 Web 服务的优缺点 6.1.2 手动部署 Web 服务 • 优点 • 易于部署,复制的操作很简单 • 易于升级,只需要把新文件覆盖旧文件即可 • 缺点 • 必须人为判断哪些文件必不可少,如果在复制时遗漏文件可能使 Web 服务不能正常工作 • 部署 Web 服务后必须手工修改目标服务器的 IIS 配置
手工复制后的配置 6.1.2 手动部署 Web 服务 • 当把 Web 服务的相关文件复制到目标服务器后,必须在 IIS 中配置其为 Web 应用程序
Visual Studio .NET 复制项目的用户界面 6.1.2 手动部署 Web 服务
Windows Installer 文件可以简化具有下列特性的 Web 服务的部署过程 共享组件 传统的 COM 组件 IIS 配置 Web 应用程序的资源,例如消息队列、事件日志和性能计数器 Visual Studio .NET Web 安装项目可以创建部署 Web 服务使用的 Windows Installer 文件 使用 Windows Installer 文件部署 Web 服务 6.1.3 使用 Windows 安装程序文件来部署 Web 服务
Web 安装项目的创建过程 6.1.3 使用 Windows 安装程序文件来部署 Web 服务 • 首先创建一个空的解决方案,然后把已有的 Web 服务项目和一个新的 Web 安装项目添加到这个解决方案中 • 配置 Web 安装项目,包括虚拟文件夹名字、访问控制、索引和记录日志等 • 编译并生成安装项目
演示 创建 Web 安装项目 6.1.4 演示 创建一个 Web 安装项目 • 创建新的解决方案并添加项目 • 配置 Web 安装项目 • 生成 Web 安装项目 • 复制和测试 Web 服务的部署 • 显示部署的文件 • 删除 Web 服务
第6章 部署和发布 XML Web Service • 部署 Web 服务 • UDDI 概述 • 发布 Web 服务 • 使用 UDDI
UDDI 发布 查找 Internet 绑定 Web 服务提供商 Web 服务消费者 UDDI 概述 6.2 UDDI 概述 • UDDI • 使用 UDDI 的原因 • 在 Intranet 上发布 Web 服务 • 使用 UDDI 的概述 • UDDI 数据结构 • 安装 UDDI SDK • 设置对 UDDI DLL 的引用
UDDI 的定义 6.2.1 UDDI • 规范的集合 • UDDI 是与 Web 服务相关的分布式信息注册表的规范集合,主要包括 • UDDI Programmer’s API 规范 • UDDI 数据结构规范 • UDDI 注册表 • 是这些规范的实现
使用 UDDI 的原因 6.2.2 使用 UDDI 的原因 • 使用 UDDI 的优点 • 列出了实现应用程序集成时业务伙伴之间必须遵守的服务约定 • 使企业提供的 Web 服务可以在全世界范围内被潜在用户和市场发现并访问 • 使多个企业之间的业务集成更方便且易于修改 • UDDI 提供的信息 • 特定企业提供的 Web 服务信息 • 特定 Web 服务的端点位置 • 特定 Web 服务端点当前的绑定信息,例如所支持的协议
在企业内部网中发布 Web 服务 6.2.3 在 Intranet 上发布 Web 服务 • 自定义发布/发现的两种常用解决方案 • 在 Windows Server 2003 中实现 UDDI 服务 • 优点:实现 UDDI 规范的 UDDI 注册表采用统一的应用程序接口、UDDI 查询和发布接口,维护简单 • 缺点:实现完整的 UDDI 规范比较困难 • 直接在 Web 服务客户端硬编码端点位置 • 优点:非常简单,可以快速实现 • 缺点:一旦 Web 服务的位置发生变化必须重新编译源代码
Web 服务开发商生成并发布 Pricing Web 服务 1 5 1 Web 服务开发商注册并分类 Web 服务 2 Pricing Web 服务 3 Web 服务消费者在 UDDI 中查询 Pricing 服务 3 UDDI 注册表 2 Web 服务消费者选择最合适的 Pricing 服务 4 Web 服务开发者创建解决方案访问 Web 服务的数据 5 使用 UDDI 的概述 6.2.4 使用 UDDI 的概述 4
在企业内部网、外部网或互联网中搜索 UDDI 注册表发现所需的服务 1 使用 UDDI 注册表提供的信息获得 WSDL 服务描述文档 2 根据 WSDL 文档创建基于 SOAP 消息的代理类 3 从 Web 服务客户端调用 Web 服务方法 4 使用 Web 服务的完整过程 6.2.4 使用 UDDI的 概述
Service: 特定服务的描述信息 Binding: 服务入口点的技术信息 UDDI 数据结构 6.2.5 UDDI 数据结构 Business: 提供服务实体的信息 tModel: 服务的规范描述 提供商的名字、联系 方法、描述以及业务领域 指向 WSDL 文档 服务的名字、描述和分类 服务的访问入口
UDDI 常用类 6.2.5 UDDI 数据结构 • BusinessEntity • 描述在 UDDI 注册表中注册过服务的提供商 • BusinessService • 描述具体的 Web 服务 • BindingTemplate • 绑定特定 Web 服务所需的技术信息 • AccessPoint • 描述 Web 服务的入口点 • TModelInstanceInfo • 描述和 UDDI 规范相关的信息 • TModel
安装 UDDI SDK 6.2.6 安装 UDDI SDK • 微软的 UDDI 软件开发工具包 (SDK) 支持客户端以编程的方法与实现符合 UDDI 规范的 UDDI 注册表服务器进行交互操作,UDDI 注册表服务器可以工作在下述环境中 • 在内部网中,仅供企业内部使用 • 在外部网中,开放给合作伙伴使用 • 在 Internet 中,供公众使用 • 安装 UDDI SDK 2.0 • 没有单独安装选择,是 Core SDK 的组成部分,需要大约 500M 空间
UDDI SDK 的命名空间 6.2.6 安装 UDDI SDK
设置引用 UDDI DLL 6.2.7 设置对 UDDI DLL的引用 • 设置对 Microsoft.Uddi.dll 文件的引用 • 在编码中包含 UDDI 的命名空间 例子 using Microsoft.Uddi; using Microsoft.Uddi.Businesses; using Microsoft.Uddi.Extensions; using Microsoft.Uddi.Services; using Microsoft.Uddi.TModels;
第6章 部署和发布 XML Web Service • 部署 Web 服务 • UDDI 概述 • 发布 一个Web 服务 • 使用 UDDI
发布 Web 服务 6.3 发布一个 Web 服务 • 配置一个 Web 服务 • 在 Windows Server 2003 UDDI 服务中发布 Web 服务 • 用 UDDI 发布向导发布 Web 服务 • 以编程的方式发布一个 Web 服务
配置 Web 服务 6.3.1 配置一个 Web 服务 • 配置服务发现 • 禁用动态发现提高安全性 • 创建自定义的发现文件 • 权限和安全策略 • 配置程序集的安全性 • 配置程序集 • 设置程序集的版本控制 • Web 服务本地化 • 配置调用不同的资源文件
使用 Windows Server 2003 UDDI 服务发布 Web 服务 6.3.2 在 Windows Server 2003 UDDI 服务中发布 Web 服务
使用 UDDI 发布向导的准备工作 6.3.3 用 UDDI 发布向导发布 Web 服务 • UDDI 注册表服务器的 URL • 拥有在 UDDI 注册表服务器上执行发布的权限 • 准备发布 Web 服务的名称和描述 • Web 服务提供商的名字 • Web 服务访问入口的 URL • Web 服务 WSDL 文件的 URL
使用 UDDI 发布向导发布 Web 服务 6.3.3 用 UDDI 发布向导发布 Web 服务
UDDI 发布向导的页面 6.3.3 用 UDDI 发布向导发布 Web 服务 • 身份验证类型(Authentication Type) • UDDI 站点(UDDI Site) • Web 服务提供商(Web Service Provider) • Web 服务详细信息(Web Service Details) • WSDL 接口定义(WSDL Interface Definition) • 总结(Summary)
连接 UDDI 注册中心 1 使用 SaveTModel 类添加模型 2 使用 SaveBusiness 类添加业务提供商 3 使用 SaveService 类添加 Web 服务 4 编程发布 Web 服务 6.3.4 以编程的方式发布一个 Web 服务 步骤
第6章 部署和发布 XML Web Service • 部署 Web 服务 • UDDI 概述 • 发布 Web 服务 • 使用 UDDI
使用 UDDI 6.4 使用 UDDI • 查找一个 UDDI 注册中心 • 连接到 UDDI 注册中心 • 查找 Web 服务
查找 UDDI 注册中心 6.4.1 查找一个 UDDI 注册中心 • 使用 Active Directory 在企业内部网络查找 UDDI 注册表服务器的访问入口 • 调用静态对象 UddiSiteDiscovery 的 Find 方法获得 UddiSiteLocation 对象的数组,其中包含的元素就是企业内部网络中所有可用的 UDDI 注册表服务器 • 数组中每个 UddiSiteLocation 对象除了包含入口点信息外还提供服务器的身份验证模式和站点的描述信息等
查找 UDDI 注册中心 6.4.1 查找一个 UDDI 注册中心 UddiConnection myConn; FindBusiness fb; BusinessList bizList; UddiSiteLocation[] uSiteArray = UddiSiteDiscovery.Find(); foreach( UddiSiteLocation uddiSite in uSiteArray) { myConn = new UddiConnection(uddiSite.InquireUrl); fb = new FindBusiness("Contoso"); bizList = fb.Send(myConn); Console.WriteLine("Found {0} businesses at {1}", bizList.BusinessInfos.Count.ToString(), uddiSite.Description); }
连接到 UDDI 注册中心 6.4.2 连接到 UDDI 注册中心 • UddiConnection 对象支持两种身份验证的方法 • 集成的 Windows 身份验证 • 使用当前执行操作的用户凭据连接服务器 • UDDI 服务使用的缺省身份验证方法 • 只能在企业内部网络中使用 • UDDI 身份验证 • 要求在执行任何发布操作前必须预先设置用户名和密码等凭据信息
UDDI 身份验证的代码示例 6.4.2 连接到 UDDI 注册中心 UddiConnection myConn = new UddiConnection( "http://test.uddi.microsoft.com/inquire", "https://test.uddi.microsoft.com/publish", "http://test.uddi.microsoft.com/extension.asmx"); string szUsername = null; string szPassword = null; myConn.AuthenticationMode = AuthenticationMode.UddiAuthentication; myConn.Username = szUsername; myConn.Password = szPassword;
查找 Web 服务 6.4.3 查找 Web 服务 • 定位服务提供商 • 调用 FindBusiness 类的 Send 方法,返回值是 BusinessList 对象 FindBusiness fb = new FindBusiness("Contoso"); BusinessList bizList = fb.Send(myConn);
查找 Web 服务 6.4.3 查找 Web 服务 • 定位服务 • 使用遍历的方法 • 使用查找的方法 foreach (BusinessInfo bizInfo in bizList.BusinessInfos) { foreach (ServiceInfo myServ in bizInfo.ServiceInfos) { //Service name is myServ.Names[0].Text //Service key is myServ.ServiceKey } } FindService fs = new FindService("Bank"); ServiceList sl = fs.Send(myConn);
查找 Web 服务 6.4.3 查找 Web 服务 • 获得 Web 服务的绑定信息 foreach(ServiceInfo si in sl.ServiceInfos ) { GetServiceDetail gsd = new GetServiceDetail(si.ServiceKey); ServiceDetail sd = gsd.Send( myConn ); foreach (BusinessService bizServ in sd.BusinessServices) { foreach (BindingTemplate bindTemp in bizServ.BindingTemplates) { strURL = bindTemp.AccessPoint.Text; } } }
回顾 学习完本章后,将能够: • 部署 Web 服务 • 掌握 UDDI 在实现 Web 服务中的作用 • 掌握在企业内部网部署 Web 服务的多种方法 • 掌握修改 Web 服务缺省配置的方法 • 使用 UDDI SDK 把 Web 服务发布到 UDDI 注册表中 • 使用 UDDI SDK 搜索 UDDI 注册表定位 Web 服务