用vfp编写Web Service(二)

发布Web Service

在IIS中建立虚拟目录

这个步骤很简单,建立一个虚拟目录。设定好以后的属性页是:


图一

这里我只设定了两个属性,其他保持默认状态。设名称为:First_web_service,设本地路径为DLL所在路径,这里是:D:\VFP7_Web_Service。

在Visual FoxPro 里发布 Web Service

工具-〉向导-〉Web Services

图二

弹出如下界面:

图三

这里,COM Server里,我们选择刚才编译的那个DLL。

为了获得更多信息,按“Advanced...”按钮,弹出如下对话框:

图四

这里 WSDL 文件是必须设定的,它描述这个Web Service 能够提供的服务,以及对外的接口。我们让它存放在虚拟目录下,文件名是FoxWebService.WSDL。

这里还有一个有用的选项就是“IntellSense Scripts”,关联Web Service与Visual FoxPro开发环境之间的关系:将Web Service的接口注册到IntellSense中,这样在Visual FoxPro里调用这个Web Service就会很方便的;当然,这里也可以不将Web Service 注册到 IntellSense 中,而在Visual FoxPro 里注册,具体方法参见:《Visual FoxPro 7 全新登场--Web Service Client》。

还有一个选项“Automatically generate web service file during project build”,意思是:当重新编译项目生成COM时,同时建立新的Web Service文件;这个选项其实是一个Visual FoxPro的Project Hook,同样可以在Visual FoxPro的开发环境里设定。

这里填写完有关数据之后,按“OK”,回到图三。按动“Generate” 按钮,如果注册成功,将跳出对话框:

到这里,算是到公告成了。

测试Web Service

简单的测试代码

怎么使用一个Web Service,如果你看过《Visual FoxPro 7 全新登场--Web Service Client》一文,应该是没什么问题的,这里只给出代码:

*请务必保证 C 盘根目录中不存在FoxWebService.txt文件,如果有就删除它(我们的目的是证明Web Service 是“无状态”的)
LOCAL oweb as VFPWebService_WS
LOCAL loWS
loWS = NEWOBJECT("Wsclient",HOME()+"ffc\_webservices.vcx")
loWS.cWSName = "VFPWebService_WS"
oweb = loWS.SetupClient("http://BOEWORKS/first_web_service/FoxWebService.wsdl", "FoxWebService", "FoxWebServiceSoapPort")
XMLTOCURSOR(oweb.GetInvoice(0),"test")
?oweb.GetSumSales({^1997-01-01},{^1997-3-30})

如果测试成功了,就请查看C 盘根目录中的 FoxWebService.txt 文件,我的文件中的内容是(根据试验时间,结果会有不同):

开启时间23:50:47关闭时间23:50:48开启时间23:50:50关闭时间23:50:50

无状态的Web Service

这里我们发现,在这段代码执行过程中,Web Service 对象创建、毁灭了两次;而几乎同样的代码,基于COM的应用,对象只创建、摧毁一次。——这就说明了Web Service是“无状态”的,客户程序每一次调用,就自动创建,调用完毕就自动摧毁。这里调用了两次,分别是调用GetInvoice()方法和GetSumSales()方法。这两次方法的调用是没有任何关系的,也就是说,Web Service是不会保存前一次调用后产生的状态,供以后调用时使用,这与传统的COM调用是有很大的区别的。

这里最有迷惑力的是这一段代码:

oweb = loWS.SetupClient("http://BOEWORKS/first_web_service/FoxWebService.wsdl", "FoxWebService", "FoxWebServiceSoapPort")

看上去等同于调用COM时使用的CreateObject(),我还没有仔细查看SOAP的文档,但我想这段代码只是请求Web Service的接口,并在客户机本地初始化一些东西,而对Web Service没有什么影响。

无状态的利弊

无状态的最大好处就是高效率,Web Service不是为几个客户提供服务的,它不可能记忆每一个客户端的请求状态,如果那样做,系统效率将很低很低。但是,如果Web Service不能知道客户程序的状态,也不能与客户程序进行很好的交互,不能很好的交互,就不能做出大的、好的项目。这是俄我想起了ASP,作为Web 应用,它也是无状态的,但为了实现服务器与客户机的交互(状态记忆),就提出了所谓的保存在客户端的 cookies 和服务器端的Session对象……以求效率与功能的平衡。

到底什么是Web Service的发布

后记

Web Service 是很新、很流行的东西,很欣慰——Visual FoxPro 7 能很好的支持它的开发。虽然我在学习过程中遇到很多磨难,这不能说这种技术有什么不好,只能认为我的水平太次,真的应该好好学习了……

又是凌晨一点了,我很担心这篇东西的价值——有多少网友能顺利的把试验做下来,毕竟本文涉及了很多 Visual FoxPro 开发人员不熟悉的东西……

时间: 2024-11-03 21:44:21

用vfp编写Web Service(二)的相关文章

用vfp编写Web Service(一)

写在前面 半年来,一直想写一篇关于用 Visual FoxPro 7 编写 Web Service 的文章,但总不成愿.这回不是我偷懒,为了了解这种新技术我和我的朋友们经历了种种"磨难".这里略作回忆,也算是新春来临之际对"往年"的回眸--算是没有浪费太多的生命. 磨难一:发布向导不能正确发布Web Service. 7月份就拿到了 Visual FoxPro 7,查遍Sample,没有发现有关于 Web Service 的 Demo.但在Help里以及微软对 Vi

通向架构师的道路(第十一天)之Axis2 Web Service(二)

一.总结前一天 前一天中我们讲述了如何生成一个Axis2的WebService, 如何布署以及4种不同的客户端, 它们是: 传统式, 非阻塞式, 双工模式, 双工非阻塞. 并且我们看到了一个Axis2的Web Service的布署描述: <service name="HelloWorld">          <parameter name="ServiceClass">org.sky.axis2.helloworld.HelloWorld&

使用Integrated Web Services Client for ILE在ILE程序中调用Web Service 二

什么是Web Service客户端处理器 Web Service客户端处理器(Client Side Handler)是Integrated Web Services Client for ILE提供的一种客户端Web Service调用监听机制,当客户端Stub程序封装好请求SOAP消息准备发送,或者客户端Stub程序接收到响应SOAP消息准备处理时,可以通过客户端Handler机制进行消息监听以及修改SOAP Header信息,然后 Integrated Web Services Clien

通向架构师的道路 第十一天 Axis2 Web Service(二)

一.总结前一天 前一天中我们讲述了如何生成一个Axis2的WebService, 如何布署以及4种不同的客户端, 它们是: 传统式, 非阻塞式, 双工 模式, 双工非阻塞. 并且我们看到了一个Axis2的Web Service的布署描述: <service name="HelloWorld"> <parameter name="ServiceClass">org.sky.axis2.helloworld.HelloWorld</para

在.NET里使用Visual FoxPro资源-vfp编写的Web Service

第三部分:在.NET里使用vfp编写的Web Service .NET和JAVA都以能够跨越不同平台作为卖点,JAVA似乎注重代码本身的跨平台特性..NET则更关注数据的跨平台,于是 .NET高举着XML Web Service的大旗出现在我们面前,从某种意义上说 .NET 就是 XML Web Service. Visual FoxPro 对XML Web Service 的支持是建立在MS XML与SOAP组件基础上的,用Visual FoxPro 编写 Web Service的核心就是上文

用Web Service传送文件(二)

更多话题 今天是 2002年7月20日.一个星期前,我推出了本文,得到了一些朋友的相应.他们提出了一些问题,我希望通过续写此文一并作答. 实现文件上传 朋友们问我,你的示例代码里只有文件从服务器下载到客户端的介绍,是不是在暗示 Web Service 不能实现文件从客户机上传到服务器?不是,这是我的疏忽,本来应该提到 "文件上传" 的问题! 其实这里所谓 "文件上传" 是很简单的,只不过是 "文件下载" 的逆向思维!客户端把文件读起,并转换成为

Web Service——下一代的WWW[转]

web Web Service一词似乎一夜之间就热了起来.所谓的Web Service是指由企业发布的完成其特别商务需求的在线应用服务其他公司或应用软件能够通过Internet来访问并使用这项在线服务. Web Service是下一代的WWW它允许在Web站点上放置可编程的元素能进行基于Web的分布式计算和处理.Web Service的发展非常迅速这个新规范SOAP.WSDL 和 UDDI的构建模块仅仅才出现了几个月就已经对设计.开发和部署基于 Web 的应用产生了巨大的影响软件产业的巨头和In

Web Service——下一代的WWW

web Web Service一词似乎一夜之间就热了起来.所谓的Web Service是指由企业发布的完成其特别商务需求的在线应用服务其他公司或应用软件能够通过Internet来访问并使用这项在线服务. Web Service是下一代的WWW它允许在Web站点上放置可编程的元素能进行基于Web的分布式计算和处理.Web Service的发展非常迅速这个新规范SOAP.WSDL 和 UDDI的构建模块仅仅才出现了几个月就已经对设计.开发和部署基于 Web 的应用产生了巨大的影响软件产业的巨头和In

手把手教你学Web Service

Well,各位观众,现在开始我的手把手交Visual Studio.net的第一课―-手把手教你学Web Service.有没有下一课还得看诸位看官的反应了!我们知道,在MS新一代战略.net中,Web Service占了一个相当次大的份量,为什么这样说那?那是因为Web Service 是未来编程的新 思路,他将编程由本机扩大到了Internet上,他通过一个proxy.dll就可以访问在Internet上 提供的Service,并且就像在本机上操作一样方便,其实,Web Service也可以