web动态实现方案

实时动态页面的实现方案

对实时动态页面的要求多产生于一些要求自动更新实时数据的应用中,如电网监控、股市监测等。具体要求是:用户只需选取希望浏览的图表,但无需介入操作,该图表就能根据实时数据不断更新,用户总能观察到最新情况。

要实现上述功 能,结构上有两种方案:一种是设置一个中介服务器,该服务器作为控件和后台系统信息交流的中介;另一种是不设中介服务器,但在提供实时数据的后台服务器上 留出供控件通信用的数据接口,控件可以直接从后台服务器上定时获得当前实时数据。按数据提供方式分也有两种:一种是由客户端定时向服务器发出请求,指明需 要的实时数据,服务器收到请求后将满足请求的动态数据发送至相应客户;另一种是客户端只请求一次,服务器端便定时将满足请求的实时数据传到客户端,直到客 户更换要显示的图表或停止刷新。上述各方案都有其优点和局限,在应用中可考虑实际情况采用相应方案。

工作流程为:用户先从Web服务器上下载包含ActiveX 控件的网页,控件随即在客户机上注册运行,并通过Winsock同中介服务器或直接同提供实时信息的网,如股票信息网相连接,定时取得动态实时数据,并刷 新显示。在这个体系中,客户有两条线路获得信息,一条是和Web Server的连接,从这条线上用户访问主页;另一条就是控件和后台信息网的连接,从这条线路上用户可以访问实时数据。后一条线路用Winsock建立, 传输速度远大于前一条线路,且控制灵活、效率高,不和主页下载争资源。通过这条线路,用户甚至可以传送远程控制信息实现遥控操作。

利用MFC开发ActiveX控件

利用VC5.0 开发的这种控件,功能可扩展性强,理论上独立的VC5.0程序具有的功能,该控件都能实现,例如控件直接绘制浏览器,可以使用OpenGL等图库,图形图 像功能强大。实时数据刷新频率理论上可达毫秒级,用户通过鼠标可以实现各类交互操作,如旋转、缩放,图2就是一幅GL图形,并有一个缩放工具条进行缩放操 作。如果是在计算机上观看,可以看到这几个三维图在不断旋转。

应该说,较好的开发工具可直接用API编程或使用ATL模板库,利用MFC开发ActiveX控件不是一个好的选择,因为控件运行需要MFC DLL的支持。假如客户机器上没有这些类库(这种情况很少,但确实存在),第一次下载就要花费些工夫。不过对于熟悉MFC的开发员来说,这些问题相对MFC提供的便利来说都是可以忽略的。

由于VC5.0对ActiveX控件的开发提供了许多便利,所以开发一个ActiveX控 件并不像许多人想象中的那么困难复杂,通过VC 5.0的AppWizard,实现控件的主类从ColeControl类派生出来,该类则是CWnd的一个子类,所以你可以像对窗口类编程一样对这个主类 编程。为了实现上面提及的功能,首先必要重载它的OnDraw函数加入需要绘制的对象,加入Winsock类(CSocket或 CAsyncSocket),以实现与后端数据服务器的通信。如果需要用OpenGL绘制丰富多彩的立体图,则要初始化GL环境。其他的工作就在于用户如 何控制程序的调度,使得各功能都能正常工作且与其他部分正常通信。此外,后端服务器程序也要增加对应于该控件的接口。

这样的一个程序编译通过后,就成为一个可用于Web的控件,后缀名是OCX。按照前面叙述的方法将该OCX置入主页,基本的工作就算完成。

综上所述,利用VC5.0开发ActiveX控件用于Web浏览,主要有以下几个特点:

1.采用Winsock的通信机制,速度快、控制灵活、效率高;

2.控件采用VC5.0编制,功能可扩展性很强;

4.控件第一次下载虽然稍费时间,但下载后即在用户机上注册,以后可直接调用,速度效率均好;

5.ActiveX技术是微软发展的重中之重,且已成为当前软件发展的潮流所向,发展空间广阔;

6.系统采用VC开发,可以利用已有的采用C语言编制的系统,开发工作量大大减少。

Web页面的开发主要分为三类:静态Web页面、半动态Web页面以及Client端动态页面。本文重点论述基于ActiveX Control(控件)动态实时页面的开发。

regsvr32 netshare.ocx        注册netshare.ocx控件

regsvr32 /u netshare.ocx    解除netshare.ocx控件的注册



1.概论

 

1.什么是静态连接库,什么是动态链接库
         静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库

静态链接库与静态链接库调用规则总体比较如下。

 

对于静态链接库(比较简单):
首先,静态链接库的使用需要库的开发者提供生成库的.h头文件和.lib文件。

生成库的.h头文件中的声明格式如下:
extern "C" 函数返回类型 函数名(参数表);
在调用程序的.cpp源代码文件中如下:
#include "..\lib.h"
#pragma comment(lib,"..\\debug\\libTest.lib") 
//指定与静态库一起链接

第二,因为静态链接库是将全部指令都包含入调用程序生成的EXE文件中。因此如果用的是静态链接库,那么也就不存在“导出某个函数提供给用户使用”的情况,要想用就得全要!要不就都别要!:)

 

对于动态链接库:
动态链接库的使用需要库的开发者提供生成的.lib文件和.dll文件。或者只提供dll文件。
首先我们必须先注意到DLL内的函数分为两种: 
(1)DLL 导出函数(#add 还有导出类),可供应用程序调用; 
(2)DLL 内部函数,只能在DLL 程序使用,应用程序无法调用它们。
因此调用程序若想调用DLL中的某个函数就要以某种形式或方式指明它到底想调用哪一个函数。

 

  先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发

展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的

指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的

DLL文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或

静态链接库。


对动态链接库,我们还需建立如下概念:

  (1)DLL 的编制与具体的编程语言及编译器无关

  只要遵循约定的DLL接口规范和调用方式,用各种语言编写的DLL都可以相互调用。譬如Windows提供的系统DLL(其中包括了Windows的API),在任何开发环

境中都能被调用,不在乎其是Visual Basic、Visual C++还是Delphi。

  (2)动态链接库随处可见

  我们在Windows目录下的system32文件夹中会看到kernel32.dll、user32.dll和gdi32.dll,windows的大多数API都包含在这些DLL中。

kernel32.dll中的函数主要处理内存管理和进程调度user32.dll中的函数主要控制用户界面;gdi32.dll中的函数则负责图形方面的操作。

  一般的程序员都用过类似MessageBox的函数,其实它就包含在user32.dll这个动态链接库中。由此可见DLL对我们来说其实并不陌生。

  (3)VC动态链接库的分类

  Visual C++支持三种DLL,它们分别是Non-MFC DLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。

  非MFC动态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或MFC编写的应用程序所调用;MFC规则DLL 包含一个继承自CWinApp的类,但其无

消息循环;MFC扩展DLL采用MFC的动态链接版本创建,它只能被用MFC类库所编写的应用程序所调用。


注:

什么是lib文件,lib和dll的关系如何
什么是lib文件,lib和dll的关系如何 (1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行

起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll

文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态

编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动

态库的灵活性,在版本升级时,同时要发布新的应用程序才行。 (3)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文

件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文

件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代

码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。

 

 

 

 

VC中使用外部的lib,dll,头文件
VC中使用DLL需要用到相应的lib文件和头文件,编译时需要用到头文件,链接时用到lib文件,运行exe时用到dll。
添加头文件目录可以使用tools->options 中的directories下的include files进行添加
添加lib文件可以使用两种方法:
1、在TOOLS->OPTIONS->Directories->Library files,加入你的LIB文件所在的目录,然后在Project->setting->object->Object/Library Modules中加入你的

LIB文件,如you.lib


2、在Project->Add to Project->Files中将你的LIB文件直接加入到工程中去

3.首先要使用该函数的

地方加上该LIB的头文件,然后在project->setting->link->加上你的LIB文件的路径
DLL则是在运行exe时,与其放在同一目录下即可

来自:http://www.cnblogs.com/weiqubo/archive/2011/03/29/1998310.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值