应用WSDK-实现和使用DIME的Web Services


小气的神

2002-10-20

Article Type: In-Depth

难度等级:7/9

版本:1.26

现在还很清晰的记得几乎是一年之前,自己使用ASP.NET 做A+ B的简单Web Services。也记得那篇文章的题目很吸引人,叫什么《一步一步开始Web Services》。那也是我在CSDN的很早的几篇文章之一。不知不觉已经有近一年的时间了,当我看到WSDK并写这篇文章时,我开始有些怀念以前的文章。

今天我们来看一些有趣的应用,它们主要是根据微软最新的Web Services开发库(Microsoft Web Services Development Kit Technology Preview Beta)的一些Web Services的高级应用。尽管比起一年前的应用它进步了许多,给了Web Services许多想像和发展的空间。同时也指明未来微软对Web Services的支持和远景。但对于任何一个使用技术或对于Web Services发展的开发人员来说,Web Services的发展依然还是太缓慢,每个里程碑都粒粒可数,一步一寸。2001年成立WS-I.org, 2002年Web Services的基础开发库进入Beta和发布,年底我们可能拿到正式的版本。但有关Web services安全和事务的规范和实现还是遥遥无期。

也许我们还有足够的耐心等待Web Services继续成长,也许它像专家预测的那样还有5年的时间发展完善。但有一点可以肯定,应用和学习Web Services可以从今天开始,从现在开始,事实上每个熟悉Web Services的人已经开始在他们的项目中应用Web Services。Web Services已经开始慢慢地影响我们应用程序的架构。当一项技术开始在不知不觉和无形中影响改变软件开发的编程和程序架构时,那么这种技术势必具有很强的生命力。Java如此、Web Services如此、XML如此、我喜欢的dotNET也是如此:)

今天的我们要看到的也十分简单,我们将使用WSDK中的新功能,在Web Services实现和使用DIME。这之前你需要了解什么是DIME、什么是WSDK,一些简单的ASP.NET的Web Services以及一些简单的操作,我保证这次不用A+B作为演示的范例。

如果你安装了VS.NET,那么你还需要做的是去这里Download下WSDK的开发包(微软附带的这两篇文章非常的棒,建议你一定抽空看),我知道这个预览版之前是叫GXA,还好最后改成WSDK,我不希望GXA和dotNET一样有太多的产品和概念充斥,从而变得含晦不清。啊,别问我:什么是GXA

WSDK的文档中也没有介绍什么是DIME,简单的说它就是在Soap的消息中附带二进制的数据,这意味着你不仅可以在Web Services传递文本和常用的数据类型,而且也可以传递和接受二进制的声音、图像和任何二进制的东东。SOAP基于客户/服务器端的,这也意味着DIME对于两者都必须透明和同时支持。

在WSDK没有发布前我们也是可以用ASP.NET来实现DIME,很笨(后面我们会看到它的局限性),最重要的是没有一个统一的规范,对于这样的Web Services来说,客户端几乎根本或很难编程使用。下面我们实现一个简单的DIME应用的客户/服务端,同时也提一下如何使用Microsoft SOAP Tookit v3 Trace utility,我的朋友常告诉我说这个东东不知怎么用,也没有PocketSoap提供的TCapTrace好,也许是个人习惯,但Trace utility未必真的无法使用,明白了就很简单了。为了学习这个Trace utility的用法你还需要Download Microsoft SOAP Toolkit 3.0

这样看来我们大概会做这样三件事,生成一个带有DIME的Web Services,产生一个Client消费这个Web Services。最后我们使用Trace进行跟踪。老实说,如果你明白DIME和ASP.NET,那么你会发现很多是熟悉新的设置工作而不是代码。

一.生成Web Services

       这是比较简单的,主要是一些设置,你需要在这里学会如何使用WSDK,同时学会设置增加或附加的Web Services。记得以前你是设置注册表,现在不同了,你需要跟XML的配置文档打交道。

首先我们New一个新的ASP.NET 的Web Services的项目,之后你需要加WSDK的Reference.点击项目右键在下面的对话框中加入WSDK的引用。如下图:

然后在ASMX的代码中加入下面的代码:

using Microsoft.WSDK.Dime ;

using Microsoft.WSDK ;

using System.Net ;

并且确认是否有using System.Web;using System.Web.Services;

然后我们加入一个方法,代码如下:

[WebMethod]

public void GetdotNETToolsLog()

{

WebRequest  WebReq = WebRequest.Create( "http://localhost/images/webFlag.png" ) ;

WebResponse WebRes = WebReq.GetResponse() ;

SoapContext respContext = HttpSoapContext.ResponseContext ;

DimeAttachment dimeAtt = new DimeAttachment( "image/jpeg", TypeFormatEnum.MediaType, WebRes.GetResponseStream() ) ;

respContext.Attachments.Add( dimeAtt ) ;

}

之后,可以保存编译我们的项目。看得出这段代码是要将一幅图片返回给请求这个Web Services方法的客户端。下面运行前的设置工作:

在Solution explorer中找到你这个项目的Web.config文件,双击到编辑模式,然后加下面的配置信息到该文件的<system.web></system.web>中,我建议你最好加在</system.web>的前面一行。

<httpModules>

<add name="WSDK" type="Microsoft.WSDK.HttpModule, Microsoft.WSDK,Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

</httpModules>

<!--

The following section is required when the DIME feature of the WSDK is used.

-->

<webServices>

<soapExtensionTypes>

<add type="Microsoft.WSDK.Dime.DimeExtension, Microsoft.WSDK, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" priority="1" group="0"/>

</soapExtensionTypes>

</webServices>

也许你会问这些东东我怎么知道,特别是PublicKeytoken 简单一些你可以在WSDK的安装目录中找到WSDK.config 这个文件中有你需要的所有有关WSDK的配置信息和格式。复杂一点你可以系统安装目录的assembly目录中找到Microsoft.WSDK然后按右键的属性中看到。再复杂一点你可以通过命令符方式:Gacutil –l Microsoft.WSDK 来获得你需要的信息,如果gacutil没有dump出你需要的Microsoft.WSDK 的信息,那么可能很不幸,你的WSDK并没有安装正确。

当你完成设置之后,可以F5编译和运行这个有DIME功能的Web Services。如果结果显示那个你熟悉的Web Services蓝色界面那么这部分可以告一段落。不要试图点击Html上的调用(Invoke)按钮,因为你的浏览器并不能解释DIME的SOAP消息。

换作以前相同的代码可能是像下面这样的:

[WebMethod()]

public Byte[] GetImage()

{

string filename = "c://dotnetflag.jpg" ;

System.Drawing.Bitmap sampleBitmap = new System.Drawing.Bitmap( filename ) ;

System.IO.MemoryStream memStream = new System.IO.MemoryStream() ;

sampleBitmap.Save(memStream,System.Drawing.Imaging.ImageFormat.Jpeg ) ;

return memStream.ToArray() ;

}

你会说以前的简单,但是如果一个SOAP消息中带有不同的图片文件或混合的二进制数据,那么你会看到后面客户端很难消费这种Web Services,当然这篇文章我没有举这种情形的例子。


特别:

本文原创,CSDN署名首发,所有文字和图片版权所有。未经授权请勿传播、转载或改编。

如果有问题或建议,请发电子邮件给new2001@msn.com

应用WSDK-实现和使用DIME的Web Services(上)相关推荐

  1. 应用WSDK-实现和使用DIME的Web Services(下)

    应用WSDK-实现和使用DIME的Web Services 小气的神 2002-10-20 Article Type: In-Depth 难度等级:7/9 版本:1.26 二.产生Client 消费W ...

  2. 通过Web Services上传和下载图片文件

    通过Web Services上传和下载图片文件 随着Internet技术的发展和跨平台需求的日益增加,Web Services的应用越来越广,我们不但需要通过Web Services传递字符串信息,而 ...

  3. Citco推出在Amazon Web Services上运行的新SaaS Æxeo Treasury™解决方案

    基于云的财资工具为另类投资基金经理提供支持 通过改善运营效率来增加价值,并提高安全性 纽约--(美国商业资讯)--面向金融服务行业的全球领先的服务供应商Citco Group of Companies ...

  4. 零基础 Amazon Web Services (AWS) 入门教程 (列表)

    在 Amazon Web Services 上托管 Web 应用程序 Web 应用程序 是指用户通过 Web 浏览器或专门的 Web 客户端访问的任何软件.Web 应用程序通常具有逻辑层级结构.例如, ...

  5. 应用WSDK - 实践Web Services的数字签名(下)

    应用WSDK - 实践Web Services的数字签名 小气的神 2002-12-05 Article Type: In-Depth 难度等级:8.2/9 版本:1.36 生成客户端部分 1.    ...

  6. java datahandler_Java Web Services:使用DataHandler类发送文件

    我是 Java Web Services的新手,所以我可能做错了. 我正在尝试使用DataHandler传输文件 – 这就是我所拥有的: 网络服务: import java.net.Malformed ...

  7. python excel web_使用python在WEB页面上生成EXCEL文件

    近日写的一个程序需要在WEB服务器上生成EXCEL文件供用户下载,研究了一下找到了以下比较可行的实现方案,下面以web.py为例,把相关代码贴出来供大家参考: 首先需要下载生成EXCEL的模块,推荐使 ...

  8. XFire发布Web Services

    步骤 1. 把XFire依赖的jar包放入lib文件夹下. 2. 在web.xml中加入如下代码: 3. 编写程序代码 首先编写一个功能的接口类. package com.yc.web.service ...

  9. 从WEB SERVICE 上返回大数据量的DATASET

    前段时间在做一个项目的时候,遇到了要通过WEB SERVICE从服务器上返回数据量比较大的DATASET,当然,除了显示在页面上以外,有可能还要用这些数据在客户端进行其它操作.查遍了网站的文章,问了一 ...

最新文章

  1. kobject_create_and_add
  2. 校正光学系统像差原则
  3. 利用Comet4J 及时推送消息
  4. Mysql水平分表-merge
  5. android天气查询(一)websevice之ksoap2软件包的使用
  6. 行业看点 | 量子计算时代即将到来?华人科学家揭秘“天使粒子”背后故事……...
  7. C#验证字符串是否是数字,是否包含中文,是否是邮箱格式,是否是电话格式
  8. 计算器c语言源代码全,C语言的计算器源代码
  9. 仿京东商城html网页源码
  10. 一个比较牛逼人的博客
  11. 全文检索Elasticsearch研究
  12. 0基础女生学网络安全合适吗
  13. 从零开始构建嵌入式实时操作系统2——重构
  14. Starlink卫星动力学系统仿真建模第一讲
  15. 运行中的程序突然出现Killed原因
  16. TM1637带秒点四位LED显示器模块ARDUINO驱动程序
  17. G-Q检验异方差存在及在Eviews的实现
  18. js怎么实现网站抓取手机号
  19. [笨木头FireFly 03]完整的服务端和客户端通信
  20. 追光几何助力RoboMaster,提升10倍效率轻松管理机械设计图纸

热门文章

  1. 如何找回四六级准考证号
  2. win10的计算机服务器,Tomcat服务器怎么在Win10系统上搭建-电脑自学网
  3. 腾讯安全在数字生态大会内容集锦
  4. MPEG-4关键技术
  5. 50N06S-ASEMI低压N沟道MOS管50N06S
  6. Python Tesseract识别验证码
  7. 【原创】吉他指板音名训练器 Guitar Tone Trainer
  8. 张江高科技园区企业_知名品牌入驻张江高科技园区 共筑上海浦东新高度
  9. 数字电路实验怎么接线视频讲解_1个视频了解火灾自动报警系统联动全过程!...
  10. 《深入理解计算机系统》实验四Architecture Lab下载和官方文档机翻