在SPS中加入自定义WebService

转载 2006年06月12日 13:51:00
  前几天写了一个WinForms的客户端软件,可以远程连接SPS站点并(断点续传)上传文件。
  
  图片:
  登录:http://blog.joycode.com/kaneboy/gallery/image/761.aspx
  设置每次上传的Block Size:http://blog.joycode.com/kaneboy/gallery/image/762.aspx
  上传:http://blog.joycode.com/kaneboy/gallery/image/763.aspx
  界面简陋哈,呵呵,现在主要是实现功能阶段。
  
  WinForms客户端程序是通过连接SPS站点中自定义的WebService来获取信息、上传文件的。由于SPS接管了ASP.NET的WebService处理,所以加入自定义的WebService有点麻烦,先讲讲SPS自己怎么处理自己的WebService的:
  
  SPS把所有的WS都放在_vti_bin虚拟目录中,这个虚拟目录映射的是Program Files/Common Files/Microsoft Shared/Web Server Extensions/60/ISAPI目录,呵呵,这个目录下就放着所有SPS自带的WS,如果有客户端连接这里的WS,SPS会通过执行wsdisco.aspx和wswsdl.aspx这两个文件来返回客户端所请求的WebService的Disco和WSDL信息。
  
  wsdisco.aspx的执行流程很简单:比如客户端请求versions.asmx这个WebService,那么wsdisco.aspx会在这个目录中查找名称为versionsdisco.aspx的文件,然后用Server.Execute()方法来执行它,versiondisco.aspx更简单,就是把version.asmx的Disco信息输出。wswsdl.aspx的流程类似。
  
  知道了SPS处理WS的方式,加入自己的WS就很简单了。如果你根本用不着它自带的WS,而且想用自己的方式来返回Disco和WSDL信息,那么可以改写wsdisco.aspx和wswsdl.aspx这两个文件,让它们实现自己的处理方式。或者按照SPS的方式来,把自己的WS、Disco信息、WSDL信息都用和SPS相同的方式来加入就行了。我是用的后者。
  
  如果看看SDK里面SPS自带的WS,可以看到它们都是把请求的数据用XML来描述并返回XmlNode对象,这是个好方法,我自己的WS也都是采用类似的方式返回XmlNode。
  
  自己还有一个想法,就是让用户可以用Office Research Service来直接在Office里面对SPS文档库进行全文检索的搜索,呵呵,同样是WS的应用,实现并不困难。
  
  另外说说别的事,关于.Net Assembly的Decompiler的,最近常常用.Net Reflector的Decompiler功能看自己写的Assembly,主要看看C#编译器怎么处理一些代码的。昨晚灵机一动,用VS2003的VC#和Delphi8分别写了一段一模一样的代码,创建一个Array然后用一个循环赋值后用IndexOf来查找一个值,分别生成Assembly后再用Decompiler来看,看看他们处理的代码是否一样。
  
  结果发现C#编译器生成的MSIL几乎被忠实的反编译成了和源码一模一样的代码,包括for循环,而D8编译器生成的MSIL的循环则被还原成用一个if和goto实现的循环。
  
  哈哈,我想这不能证明D8的编译器比C#编译器更能优化代码,而是证明Decompiler更熟悉C#编译器编译的MSIL的风格(也就是说,这个Decompiler的作者专门研究了C#编译器编译for、if...的结果),所以更能忠实的还原代码。

相关文章推荐

自定义类型的webservice

  • 2017年08月15日 17:52
  • 624KB
  • 下载

xfire传入传出自定义类型和集合类型-webservice分析

1.xfire eclipse插件安装步骤,详细内容见:http://xfire.codehaus.org/Eclipse+Plugin Overview The XFire Eclipse p...

webService学习(二)—— 调用自定义对象参数

webService学习(二)—— 调用自定义对象参数 本文主要内容: 1、如何通过idea进行webService Client的简单实现(不再使用wsimport的方式,其实是ide帮我们做了...

MOSS中如何自定义WebService

MOSS中如何自定义WebService Posted on 2008-05-13 21:25 生鱼片 阅读(2326) 评论(3) 编辑 收藏 所属分类: Sharepoint --> ...
  • tom1995
  • tom1995
  • 2017年04月12日 20:19
  • 70

webservice 传递自定义类

webservice传递的内容必须是可序列化的,不管是参数还是返回值。webservice传递的自定义实体类必须在声明的类前面标示[Serializable],指明可序列化的。当涉及到传递实体类集合的...

VB6与WebService中的自定义类

两种情况:    1. WebService中返回自定义类    2. WebService中的参数是自定义类    简单示例:    WebService代码:using System; using...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在SPS中加入自定义WebService
举报原因:
原因补充:

(最多只允许输入30个字)