在SPS中加入自定义WebService
2006-06-12 13:51
134 查看
前几天写了一个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...的结果),所以更能忠实的还原代码。
图片:
登录: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...的结果),所以更能忠实的还原代码。
相关文章推荐
- 在SPS中加入自定义WebService
- 在SPS中加入自定义WebService
- 基于webservice soap协议利用xml格式自定义报文进行传输和解析返回报文(实例)
- Sharepoint 2010 自定义WebService 找不到网站应用程序
- DirectX:在graph自动连线中加入自定义filter(graph中遍历filter) 分类: DirectX 2014-10-30 09:39 524人阅读 评论(0) 收藏
- webservice发布在外网上的在system.web中加入这个就好使了
- Salesforce自定义按钮调用apex类,使用webservice
- 把自定义的muxer加入ffmpeg源码
- devise /users/edit controller中加入自定义方法
- 在WebService加入安全验证
- 如何把自定义word模板加入到word中我的模板里面
- StoryBoard 加入一个自定义View
- 调用WebService时加入身份验证,以拒绝未授权的访问
- 如何将自定义的三方库加入到cocoapods中管理
- 在cxgrid StoreToIniFile、RestoreFromIniFile 中 加入自定义属性
- 给font awesome中加入自定义图片
- 已有ssh项目中加入webservice(CXF)
- webservice第二篇【自定义webservice服务、soa、uddi概念、soap协议】
- webservice第二篇【自定义webservice服务、soa、uddi概念、soap协议】
- Nutch中搜索时把自定义的字段(filed)加入检索条件