在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之自定义拦截器

WebService自定义拦截器

C++调用gSoap编写的WEBSERVICE与C#.NET间接口自定义结构体不能重复使用

最近项目开发从C/S架构转成B/S架构后,开始使用webservice技术,由于我们的webservice是由vc++实现的,因此用到了gSoap库实现webservice,而上端业务我们采用了C#编...
  • acidy
  • acidy
  • 2014-02-23 15:22
  • 1163

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

WebService学习笔记(七)自定义拦截器

添加自定义拦截器,CXF允许程序员自己操作SOAP协议。 Envelope可分为两部分,Header(可选) 与Body,通过自定义拦截器,可在Header部分里添加认证信息。 服务端代码...

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

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

普元 EOS Platform 7.6 webservice图元添加自定义Header

普元 EOS Platform 7.6 webservice图元添加自定义Header
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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