回 帖 发 新 帖 刷新版面

主题:[转帖]学网络的要看一下!张老师的WEB服务

在Visual FoxPro中创建Web服务
注:该文章节选自作者的《Visual FoxPro程序设计参考手册》

创建一个Web服务是一个复杂的过程,这涉及到要使用Internet信息服务(IIS)、Visual FoxPro COM服务程序和简单对象访问协议(SOAP)。在这节中将结合上节中介绍的XMLAdapter和在20.4节中介绍的CursorAdapter来建立一个可以通过HTTP进行获取和修改SQL Server 2000附带示例数据库Northwind中Customers表的Web服务实例。该Web服务的流程图18-11所示。可以看出,这是一个3层架构的客户/服务器模式。




图18-11 Web服务流程图

18.4.1 建立COM服务程序
创建Web服务,首先要建立一个COM服务程序,然后才可以使用Visual FoxPro的Web服务发布向导将COM升迁为Web服务。

1.建立项目和类
新建一个名为MyWebService的项目,然后在项目中使用以下代码创建一个叫做MyClass的.prg文件,在其中建立了一个ChangeCustomer类。

DEFINE CLASS ChangeCustomer AS Session OLEPUBLIC 

    DataSession=2       &&私有数据工作期

    

    PROCEDURE Init

        SET MULTILOCKS ON 

    ENDPROC 

    

    PROCEDURE GetCustomerInfo HelpString "获取客户信息"

        LOCAL oXMLAdapter AS XMLAdapter,oCA AS String,cXML AS String

        oCA=CREATEOBJECT("MyCursorAdapter")    &&建立CursorAdapter对象

        oCA.CursorFill()                            &&按oCA的Alias属性指定的名称生成临时表

        oXMLAdapter=NEWOBJECT("XMLAdapter")   &&建立XMLAdapter

        oXMLAdapter.AddTableSchema(oCA.Alias)      &&加载临时表到XMLAdapter对象

        oXMLAdapter.ToXML("cXML")               &&生成XML字符串

        RELEASE oXMLAdapter,oCA                 &&释放对象实例

        RETURN cXML                            &&返回XML字符串

    ENDPROC 

 

    PROCEDURE UpdateCustomer(cXML AS String) HelpString "更新客户信息"

        LOCAL oXMLAdapter AS XMLAdapter,oCA AS CursorAdapter

        oXMLAdapter=NEWOBJECT("XMLAdapter")     &&建立XMLAdapter

        oXMLAdapter.UTF8Encoded=.F.

        oXMLAdapter.IsDiffGram=.T.

        oXMLAdapter.LoadXML(cXML,.F.)              &&加载XML

               

        oCA=CREATEOBJECT("MyCursorAdapter")

        oXMLAdapter.Tables(1).ChangesToCursor(oCA.Alias) &&还原缓冲表

        oCA.CursorAttach(oCA.Alias)                    &&将还原出的缓冲表与CursorAdapter建立关联

        =TABLEUPDATE(.T.)                          &&发送更新

        RELEASE oXMLAdapter,oCA

    ENDPROC     

    

    PROCEDURE Error(nError AS Integer,cMethod AS String,nLine AS Integer)

        LOCAL cText AS String 

        cText=cMethod+" 错误号="+LTRIM(STR(nError,5))+" 行号="+LTRIM(STR(nLine,8))+" "+MESSAGE()

        COMRETURNERROR(cText,_VFP.ServerName)

    ENDPROC 

ENDDEFINE     

 

*!* 建立基于CursorAdapter的子类,用于连接到SQL Server

DEFINE CLASS MyCursorAdapter AS CursorAdapter 

    Alias="Customer"

    BreakOnError= .F.

    DataSourceType="ODBC"

    Tables="Customers"

    SendUpdates=.T.

    AllowDelete=.T.

    AllowInsert=.T.

    AllowUpdate=.T.

    UpdateType=1          &&发送更新方式为UPDATE

    WhereType=1           &&Where子句类型为仅由KeyFieldList属性指定的主关键字段组成

    KeyFieldList="CustomerID"

    UpdatableFieldList="CustomerID, CompanyName"

    UpdateNameList="CustomerID Customers.CustomerID, CompanyName Customers.CompanyName"

    BufferModeOverride= 5  &&开放式表缓存

    cConnectionString="Driver={SQL Server};Server=localhost;Uid=sa;Pwd=;Database=northwind"

 

    PROCEDURE Init      &&类实例化时直接建立连接

        This.DataSource=SQLSTRINGCONNECT(This.cConnectionString, .T.)

        This.SelectCmd="SELECT CustomerID, CompanyName FROM Customers"

        This.CursorSchema ="CustomerID C(5), CompanyName C(40)"

    ENDPROC 

 

    FUNCTION Destroy()   &&在释放对象时断开与SQL Server的连接

        SQLDISCONNECT(This.DataSource)

    ENDFUNC    

ENDDEFINE           

上面代码中的GetCustomerInfo( )方法用于将Customers的CustomerID和CompanyName字段中的所有内容以XML格式返回给客户端;UpdateCustomer( )方法根据客户端发送来的Diffgrams格式的XML更新到Customers表。

2.编译项目为COM服务程序
在17.4.2节中详细介绍了编译COM对象的方法与原理,因此这里只简单介绍步骤。在正式编译前,需要预编译一下自动服务程序,才可以设置自动服务程序的项目信息。单击项目管理器的Build(编译)命令按钮,打开Build Options(编译选项)对话框,选择Multi-threaded COM server(多线程COM服务程序)选项进行连遍,编译成功后,该COM组件自动在本地计算机的Windows中注册并可用。

在项目管理器上单击鼠标右键,在弹出的快捷菜单上选择Project Info(项目信息)菜单项,打开如图18-12所示Project Information对话框,在Servers选项卡的Instancing(实例)下拉列表中选择服务类型为Multi Use(多重使用)。

单击项目管理器中的Build按钮重新连编项目为Multi-threaded COM server。

18.4.2 安装并配置Internet信息服务(IIS)
要在服务器上发布Web服务,需要IIS的支持。IIS在Windows XP中是作为可选组件提供的,可以在Windows的控制面板中双击“添加或删除程序”图标打开“Windows组件向导”对话框,在组件列表中复选“Internet信息服务(IIS)”组件,并单击“下一步”按钮进行安装,如图18-13所示。安装成功后,可以打开Internet Explorer浏览器,在地址栏中输入“http://127.0.0.1”,可打开默认的站点页面。

    

图18-12 设置服务类型 



图18-13 添加IIS组件

在安装好IIS后,应该为要发布的Web服务建立一个虚拟目录,以方便调用,步骤如下:

(1)在控制面板中双击“管理工具”图标,打开“管理工具”窗口。

(2)在“管理工具”窗口中双击“Internet信息服务”图标,打开“Internet信息服务”窗口,如图18-14所示。

(3)在“默认站点”节点上单击鼠标右键,在出现的快捷菜单中,选择“新建”菜单项下的“虚拟目录”选项,打开“虚拟目录创建向导”对话框,如图18-15所示。

(4)单击“下一步”按钮,在出现的如图18-16所示的“别名”文本框中为虚拟目录指定一个名称“FoxWebService”,通过该名称可以引用一个硬盘上的实际物理目录。

(5)单击“下一步”按钮,在出现的如图18-17所示的“目录”文本框中指定一个存放Web服务内容的实际物理目录。

(6)单击“下一步”按钮,将出现如图18-18所示的设置目录权限画面,如图设置后,单击“下一步”按钮,在出现的画面中单击“完成”按钮,虚拟目录将被成功创建到“默认网站”节点中,如图18-19所示。

   

     图18-14 “Internet信息服务”窗口   



 图18-15 “虚拟目录创建向导”对话框

    

图18-16 建立虚拟目录别名 



图18-17 设置物理目录

   

图18-18 设置目录权限 



图18-19 虚拟目录添加完成后

回复列表 (共1个回复)

沙发


没图!!!

看原文吧!
[url=http://blog.csdn.net/zhanghongju/archive/2006/05/29/762155.aspx]在Visual FoxPro中创建Web服务[/url]

我来回复

您尚未登录,请登录后再回复。点此登录或注册