论文部分内容阅读
摘要: 在这个网络发达、网络技术飞速发展的时代,网络对client/server结构体系新技术的需求也日益增大。在这个环境下,C/S技术的发展得到了长足的进步。而现代C/S的飞速发展,也相应地带动了三层应用程序的发展。三层体系结构是现代C/S研究中的一个热点。三层体系结构能够在 Visual FoxPro 中实现吗?我们需要怎样去做呢?那么相对于三层的一层和两层又是指的什么呢?本文讨论了这些问题。
关键词: client/serverVisual FoxPro三层体系结构
在C/S模型中有三层模型。当客户和服务器是在同样的环境时就是一层结构。它描述了你单独用Visual FoxPro编译的应用程序。数据完整地进入表单,并遵循控制数据全部写入同样的地方且在同样的地方运行它的规则。不管你是直接从表还是通过视图读取数据,也不管规则是在你的代码片断还是在触发器中,你只有一个单独应用程序层:Visual FoxPro。而在两层结构中,数据被移动到另一个环境中,并通过第一层读取数据。这描述了传统的client/server应用程序。数据保留在后端例如SQL Server或者Oracle中。前端响应用户的界面(表单、菜单等等)。在一个传统的两层结构中,自定义规则通常在后端强迫数据完整一致。在三层结构体系中,自定义规则是存储在它们自己的环境中,典型的是存储在一个单独的计算机上,以便多个前端能够使用它。前端提供界面,后端提供数据,而中间层维护自定义规则的执行。这就意味着你有两个client/server会话,一个是前端和中间层之间的,另外一个是中间层和后端之间的。前端从不直接和后端会话。
三层结构体系有两个明显的好处。第一个好处是你能够有更多的层来划分工作。你的应用程序有三块,用户界面、数据、规则,你有三层去处理这些事情。第二个好处是很容易重新使用你的自定义规则,因为不管前端还是后端的规则都不是隐藏的。如果你在Visual FoxPro中编写了你的全部数据确认规则,这样可以在不同的地方重新使用规则,比如说在Visual Basic或者Access应用程序中。如果它们处于它们自己的层中,那么任何前端都可以通过它们发送数据给任何后端。
这就是两层和三层结构体系的普通想法。事实上,如果你使用Visual FoxPro去建立一个client/server结构体系,在如何构造你的应用程序上你可以有着更多的灵活性。在一个两层结构体系中,你可以在后端,在Visual FoxPro,或者两者都在,强迫执行完整规则。这对要执行的规则来说是非常恰当的和简洁的。如果你在Visual FoxPro中执行它,用户将立刻得到数据回馈,而后端就不用花费时间去检查结果。如果你有500个用户每天输入100次,这就使得后端不用处理太多的工作。如果在前端仅仅是存取后端数据,而且是通过你的Visual FoxPro应用程序,那么你就能够轻而易举处理巨大容量的,甚至是全部的需要输入到前端的数据确认代码。
但是如果另外一个前端需要去读取数据呢?如果Access和Visual Basic程序能够输入或者编辑命令,则你将不得不在后端确认结果。如果仅仅是用Visual FoxPro编写的其他程序读取数据,你可以写Visual FoxPro代码,并能通过一个存储过程或者一个数据确认类来共享它。在三层结构体系中,你还能通过在前端执行数据的完整性来划分工作。中间层用什么来编写呢?Visual Basic希望你用Visual Basic去编写中间层,用VB6.0去创建OLE服务器。OLE服务器能够通过从Visual FoxPro使用OLE自动控制来调用。数据将传递给中间层,并进行确认。如果数据被拒绝,中间层将让FoxPro得到有关的这一切。如果数据是正确的,它将被发送到后端,并同时通知FoxPro。
我们可以从Visual FoxPro中用你使用任何OLE自动控制服务的同样方法使用这个VB中间层。你可以发出如下命令来启动和服务器的一个对话:
oData=CreateObject(″VBServer.BizRules″)
当你希望发送数据到中间层,你可以发出如下代码:
oData.Send(″Update employee Set salary=87000000″)
如果数据有效你可以使用如下代码去查看:
If oData.ValidData
=MessageBox(″Success″)
Else
=MessageBox(oData.ErrorMessage)
Endif
请注意上面的语法是假设性的。实际执行时可能是不一样。
用这个方法的不利之处是什么呢?你不能使用Visual FoxPro的远程视图来编写client/server应用程序,至少在目前VFP的版本中是不能的。还有,通过OLE发送数据要比通过ODBC慢得多。
你可以在 Visual FoxPro 中编写中间层。当前端希望保存数据的时候,保存数据到表的操作将在网络上某个地方等待到结束。中间层是Visual FoxPro应用程序,为了确认新的数据要经常查询表。数据不是被拒绝就是被发送到SQL Server。中间层能够在一个表中保存一个成功或者失败的消息。前端将根据这个查询表并查明发送的数据是否有效。
通过例子我们可以看到将同样的有效性规则写入一个存储过程和放入一个数据库的区别。每个Visual FoxPro应用程序能够在前端打开数据库,并运行有效性检查代码。只将有效的数据发送到SQL Server中,三层结构体系中Visual FoxPro会比其他的做得更好。
参考文献:
[1][美]Patrick O’Neil Elizabeth O’Neil.数据库原理、编程与性能.机械工业出版社.
[2]匡松.Visual FoxPro程序设计教程.西南交通大学出版社.
[3]徐人凤.SQL Server 2000 数据库及应用.高等教育出版社.
[4]章立民.SQL Server 2005数据库开发实战.机械工业出版社.
关键词: client/serverVisual FoxPro三层体系结构
在C/S模型中有三层模型。当客户和服务器是在同样的环境时就是一层结构。它描述了你单独用Visual FoxPro编译的应用程序。数据完整地进入表单,并遵循控制数据全部写入同样的地方且在同样的地方运行它的规则。不管你是直接从表还是通过视图读取数据,也不管规则是在你的代码片断还是在触发器中,你只有一个单独应用程序层:Visual FoxPro。而在两层结构中,数据被移动到另一个环境中,并通过第一层读取数据。这描述了传统的client/server应用程序。数据保留在后端例如SQL Server或者Oracle中。前端响应用户的界面(表单、菜单等等)。在一个传统的两层结构中,自定义规则通常在后端强迫数据完整一致。在三层结构体系中,自定义规则是存储在它们自己的环境中,典型的是存储在一个单独的计算机上,以便多个前端能够使用它。前端提供界面,后端提供数据,而中间层维护自定义规则的执行。这就意味着你有两个client/server会话,一个是前端和中间层之间的,另外一个是中间层和后端之间的。前端从不直接和后端会话。
三层结构体系有两个明显的好处。第一个好处是你能够有更多的层来划分工作。你的应用程序有三块,用户界面、数据、规则,你有三层去处理这些事情。第二个好处是很容易重新使用你的自定义规则,因为不管前端还是后端的规则都不是隐藏的。如果你在Visual FoxPro中编写了你的全部数据确认规则,这样可以在不同的地方重新使用规则,比如说在Visual Basic或者Access应用程序中。如果它们处于它们自己的层中,那么任何前端都可以通过它们发送数据给任何后端。
这就是两层和三层结构体系的普通想法。事实上,如果你使用Visual FoxPro去建立一个client/server结构体系,在如何构造你的应用程序上你可以有着更多的灵活性。在一个两层结构体系中,你可以在后端,在Visual FoxPro,或者两者都在,强迫执行完整规则。这对要执行的规则来说是非常恰当的和简洁的。如果你在Visual FoxPro中执行它,用户将立刻得到数据回馈,而后端就不用花费时间去检查结果。如果你有500个用户每天输入100次,这就使得后端不用处理太多的工作。如果在前端仅仅是存取后端数据,而且是通过你的Visual FoxPro应用程序,那么你就能够轻而易举处理巨大容量的,甚至是全部的需要输入到前端的数据确认代码。
但是如果另外一个前端需要去读取数据呢?如果Access和Visual Basic程序能够输入或者编辑命令,则你将不得不在后端确认结果。如果仅仅是用Visual FoxPro编写的其他程序读取数据,你可以写Visual FoxPro代码,并能通过一个存储过程或者一个数据确认类来共享它。在三层结构体系中,你还能通过在前端执行数据的完整性来划分工作。中间层用什么来编写呢?Visual Basic希望你用Visual Basic去编写中间层,用VB6.0去创建OLE服务器。OLE服务器能够通过从Visual FoxPro使用OLE自动控制来调用。数据将传递给中间层,并进行确认。如果数据被拒绝,中间层将让FoxPro得到有关的这一切。如果数据是正确的,它将被发送到后端,并同时通知FoxPro。
我们可以从Visual FoxPro中用你使用任何OLE自动控制服务的同样方法使用这个VB中间层。你可以发出如下命令来启动和服务器的一个对话:
oData=CreateObject(″VBServer.BizRules″)
当你希望发送数据到中间层,你可以发出如下代码:
oData.Send(″Update employee Set salary=87000000″)
如果数据有效你可以使用如下代码去查看:
If oData.ValidData
=MessageBox(″Success″)
Else
=MessageBox(oData.ErrorMessage)
Endif
请注意上面的语法是假设性的。实际执行时可能是不一样。
用这个方法的不利之处是什么呢?你不能使用Visual FoxPro的远程视图来编写client/server应用程序,至少在目前VFP的版本中是不能的。还有,通过OLE发送数据要比通过ODBC慢得多。
你可以在 Visual FoxPro 中编写中间层。当前端希望保存数据的时候,保存数据到表的操作将在网络上某个地方等待到结束。中间层是Visual FoxPro应用程序,为了确认新的数据要经常查询表。数据不是被拒绝就是被发送到SQL Server。中间层能够在一个表中保存一个成功或者失败的消息。前端将根据这个查询表并查明发送的数据是否有效。
通过例子我们可以看到将同样的有效性规则写入一个存储过程和放入一个数据库的区别。每个Visual FoxPro应用程序能够在前端打开数据库,并运行有效性检查代码。只将有效的数据发送到SQL Server中,三层结构体系中Visual FoxPro会比其他的做得更好。
参考文献:
[1][美]Patrick O’Neil Elizabeth O’Neil.数据库原理、编程与性能.机械工业出版社.
[2]匡松.Visual FoxPro程序设计教程.西南交通大学出版社.
[3]徐人凤.SQL Server 2000 数据库及应用.高等教育出版社.
[4]章立民.SQL Server 2005数据库开发实战.机械工业出版社.