开篇介绍

Web Service 的用途非常广几乎无处不在,像各大门户网站上的天气预报使用到的第三方 Web Service API,像手机客户端和服务器端的交互等都可以通过事先设计好的 Web Service 接口来实现两个不同平台的信息沟通。

记得第一次做 IPhone 手机客户端与服务器端交互的 Web Service 接口的时候,由于我们在客户端开发和服务器端开发都没有 IOS 平台开发经验,白天有其它的项目,只能利用晚上的时间不断尝试。最终在第三个通宵的时候,尝试搭建的第3套不同版本的 Web Service 接口终于和 IPhone 手机客户端成功通讯交互。前两套 Web Service 接口可以交互,但是在图片和有些个别地方总有丢数据的情况,所以 Web Service 给我带来的痛苦熬夜经历还是记忆犹新。那时还很单纯,说让加班就加班,玩命表现…不过很享受“尝试,失败!再尝试,再推进,再失败!再尝试,再推进,再失败,再推进,成功!!!”“有问题,出现问题一定能解决,再怎么不能解决,最终一定也能解决!”的决心和过程。

后来在一个美国某保险公司的 BI项目中也使用到了 Web Service, 其原因是美国一个保险公司对于他们的客户信息的隐私保护,还涉及到一些非常敏感的资金结算等业务,这些信息他们不会轻易开放给开发者。因为有一些非常敏感的业务涉及到客户公司的内部财务结算还有用户账户等信息都是通过客户 IT 部门提供的 Web Service 接口来实现的。

实现过程

调用的过程实现起来非常的简单,下面使用美国的一个 ZIP Code Web Service 接口来获取指定 ZIP Code 的地区信息。

http://www.webservicex.net/uszip.asmx?op=GetInfoByZIP

输入 US Zip Code,例如 54404 提交后就能看到返回的一个 XML 格式的结果。Wisconsin 州的 Marshfield, 美国中北部的一个小镇。

下面演示在 SSIS 中使用 Web Service 接口,传人指定的参数返回相应的结果。

首先,新建一个 HTTP Connection Manager 这个连接的作用是用来连接到 WSDL(Web Services Description Language)的 XML 描述页面。这个页面提供了 Web Service API 接口,还有一些参数和返回值的约定。

这里 Web Service 接口的安全性配置可以忽略,但是在实际大多数项目中对 Web Service 接口的使用都用用户验证的。

看看这个WSDL描述文件 - http://www.webservicex.net/uszip.asmx?WSDL

我们将在后面使用到这个 Service - USZip 以及它下面的接口方法。

新建一个 Web Service Task,指定刚创建的 HttpConnection。

WSDLFile 这里先创建一个新的空白的 wsdl 文件,然后在这里指向这个文件。

OverwriteWSDLFile - True, 允许覆盖。

一定要记得点击 Download WSDL ,这样就会把上面看到的 XML 信息下载并保存到指定的 WSDL 文件中。

切换到 Input 选项选择输入的接口方法和参数。Service 选项会列出所有的服务,服务下面会提供方法,当选择完方法后会显示出每个方法需要的参数和类型。在这里我选择的是 GetInfoByZip 方法,它有一个输入参数,字符串类型,我使用自定义的变量 VarZipCode 来作为参数传递到 Web Service 接口中。

Output 是一个 string 类型的变量,用它来接受 Web Service 接口返回的 XML 格式字符串,里面包含了有关城市和州的信息。

下面先创建一张表,用它来保存通过 ZipCode查询返回的信息。

IF OBJECT_ID('DEMO_WS_USRegion') IS NOT NULL
DROP TABLE DEMO_WS_USRegion
GO CREATE TABLE DEMO_WS_USRegion
(
ZipCode NVARCHAR(255),
AreaCode NVARCHAR(255),
[State] NVARCHAR(255),
City NVARCHAR(255),
TimeZone NVARCHAR(255)
)

创建一个 Data Flow, 选择一个 XML Source 并进行编辑。

在进行这一步之前,一般的操作是在上一步将 Web Service 返回的 XML 输出到一个 XML 文件,然后在这里指定一下 XML 文件的路径地址,然后点击 Generate XSD 产生 xsd 文件。

在这个例子中我省略了对这些步骤的描述,这里选择的 Data access mode 是从一个变量中读取的,这个变量是前面出现的  VarCityInfo。

看看 Columns 中,返回的对 XML 输出解析出来的列。

Source 指定好了,后面的就容易办了,拖放一个 OLE DB Destination 控件,指定相关的目标表并关联映射到 XML 源的输出列。

保存并执行 Package,检查数据库,输出正确。

Package 变量信息

如果有一个 List 存放所有的 US ZipCode, 那么可以循环调用 Web Service 接口将所有的跟 Zip Code 相关的城市信息都可以一次性加载到数据表中。

更多 BI 文章请参看 BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server) 如果觉得这篇文章看了对您有帮助,请帮助推荐,以方便他人在 BIWORK 博客推荐栏中快速看到这些文章。

微软BI 之SSIS 系列 - 在 SSIS 中使用 Web Service 以及 XML 解析的更多相关文章

  1. 微软BI 之SSRS 系列 - 实现 Excel 中图表结合的报表设计

    来自群里面讨论的一个问题,EXCEL 中有类似于这样的图形,上面是 Chart, Chart X轴上的值正好就是下方 Table 的列头,这个在 SSRS 中应该如何实现?   SSRS 2008.2 ...

  2. 微软BI 之SSRS 系列 - 在 Cube 中通过 MDX 查询实现基于父子递归关系的汇总报表

    之前我写了一篇在 SSRS 开发中处理这种父子关系的汇总与聚合的文章 (SSRS 系列 - 使用分组 Group 属性实现基于父子递归关系的汇总报表),示例中的查询是基于 SQL Server 关系型 ...

  3. BizTalk开发系列(二十六) 使用Web Service

    Web Service是在构建SOA平台中广泛使用的技术.在BizTalk开发过程中使用SOAP适配器接收和发送 Web Services 请求.业务流程可以发布为 Web Services 并使用外 ...

  4. 你会在C#的类库中添加web service引用吗?

    本文并不是什么高深的文章,只是VS2008应用中的一小部分,但小部分你不一定会,要不你试试: 本人对于分布式开发应用的并不多,这次正好有一个项目要应用web service,我的开发环境是vs2008 ...

  5. Visual Studio 2013中引入Web Service的简单方法visual studio 引用 wsdl

    http://blog.csdn.net/wangzhongbo_24/article/details/49954191 Web Service有三种表示方式 三种方式分别为WSDL.Endpoint ...

  6. VS2010下创建WEBSERVICE,第二天 ----你会在C#的类库中添加web service引用吗?

    本文并不是什么高深的文章,只是VS2008应用中的一小部分,但小部分你不一定会,要不你试试: 本人对于分布式开发应用的并不多,这次正好有一个项目要应用web service,我的开发环境是vs2008 ...

  7. 微软BI 之SSIS 系列 - 在 SSIS 中导入 ACCESS 数据库中的数据

    开篇介绍 来自 天善学院 一个学员的问题,如何在 SSIS 中导入 ACCESS 数据表中的数据. 在 SSIS 中导入 ACCESS 数据库数据 ACCESS 实际上是一个轻量级的桌面数据库,直接使 ...

  8. 在Salesforce中创建Web Service供外部系统调用

    在Salesforce中可以创建Web Service供外部系统调用,并且可以以SOAP或者REST方式向外提供调用接口,接下来的内容将详细讲述一下用SOAP的方式创建Web Service并且用As ...

  9. 在WinForm中使用Web Service来实现软件自动升级

    来源:互联网 winform程序相对web程序而言,功能更强大编程更方便,但软件更新却相当麻烦,要到客户端一台一台地升级,面对这个实际问题,在最近的一个小项目中,本人设计了一个通过软件实现自动升级技术 ...

随机推荐

  1. Java_myeclipse添加DTD约束(框架xml只能提示功能)

    以struts2中的xml为例 struts-2.3.4-all\struts-2.3.4\src\core\src\main\resources

  2. pika的阻塞式使用

    [root@cloudplatform ELK]# cat startIncHouTai.py import os # 杀掉内存中的进程 cmd='pgrep -f PutDataToKafkaInc ...

  3. 谈谈java多线程(一)

    其实很早就想写一些java多线程方面的文章,只是奈何这东西看着简单,但要真要理解和正确使用可能还需要花费一定的精力,虽然平时的工作中会用到这方面的知识,可是更多的只是为了完成工作,至于详细的东西,也没 ...

  4. Linux !的使用

    转自:https://www.linuxidc.com/Linux/2015-05/117774.htm 一.history 78 cd /mnt/ 79 ls 80 cd / 81 history ...

  5. 关闭swap的危害——一旦内存耗尽,由于没有SWAP的缓冲,系统会立即开始OOM

    SWAP的罪与罚 发表于2012-11-08 说个案例:一台Apache服务器,由于其MaxClients参数设置过大,并且恰好又碰到访问量激增,结果内存被耗光,从而引发SWAP,进而负载攀升,最终导 ...

  6. work工作消息队列Round-robin与Fair dispatch

    一:介绍 1.模型 有两种情形,分别是轮训分发与公平分发. 2.出现的场景 考虑到simple queue中的缺点. 因为生产者发送消息后,消费者消费要花费时间,这个会造成消息的堆积. 二:Round ...

  7. 科技界、IT届的外号

    牙膏厂 = Intel     挤牙膏来形容缓慢的升级速度 农企(推土机,打桩机,压路机).阿曼达.按摩店  = AMD 两弹元勋.老黄 = 黄仁勋,    核弹.英伟达 = NVIDIA 大法 = ...

  8. Linux proc目录下 几个系统文件下的各项参数 (cpuinfo,uptime,meminfo,stat,loadavg)

    参考链接: Linux 操作系统内核基本实验.pdf http://max.book118.com/html/2015/0919/25787869.shtm Linux下cpuinfo文件各项参数的详 ...

  9. anaconda虚拟环境管理,从此Python版本不用愁

    1 引言 在前几篇博文中介绍过virtualenv.virtualenvwrapper等几个虚拟环境管理工具,本篇要介绍的anaconda也有很强大的虚拟环境管理功能,甚至相比virtualenv.v ...

  10. 算法进阶面试题01——KMP算法详解、输出含两次原子串的最短串、判断T1是否包含T2子树、Manacher算法详解、使字符串成为最短回文串

    1.KMP算法详解与应用 子序列:可以连续可以不连续. 子数组/串:要连续 暴力方法:逐个位置比对. KMP:让前面的,指导后面. 概念建设: d的最长前缀与最长后缀的匹配长度为3.(前缀不能到最后一 ...