VC++编程技术:用VC++实现企业网络数据共享
安安 2017-11-21 来源 :网络 阅读 1124 评论 0

摘要:本文将为大家讲解关于VC++编程技术,通过用VC++实现企业网络数据共享相关知识点进一步的认识和理解!

    本文将为大家讲解关于VC++编程技术,通过用VC++实现企业网络数据共享相关知识点进一步的认识和理解!


    针对现今不同企业或者同一企业内部与外部网络的数据共享要求,提出一套如何应用计算机技术来实现这一需求的解决方案。对这一技术在应用领域的需求做出了全面具体的分析,阐述这一技术的设计思想和实现细节,并且对实现过程中涉及的各类知识做出了详细的解释。最后给出了具体的实现算法。

  关键词:数据共享;组件开发;电子商务;COM+;组件调用 

  1. 引言

  1.1. 企业网间数据共享要求的提出


  随着计算机网络技术的发展,电子商务得到了非常广泛的应用,同时也对计算机应用技术提出了更高的要求。

  现今互连网上,有数以万计的企业建立了企业网络并且拓展到国际互连网上实现电子商务应用。显然,各企业网络使用的后台数据库产品不尽相同,而希望计算机辅助做出正确详实的决策与统计,除了有本企业的数据以外还必须拥有其他企业提供的可共享数据,这就对实现企业间的信息与数据共享提出了要求。

  1.2. 企业网间数据共享的一般做法概述

  针对数据共享的要求,现今一般做法有三种:1、有网络开发能力的两企业通过企业信息部门的开发人员,联合重新开发一套新系统,完成数据连接,这样可能导致旧系统利用率不够;2、在约定的时间两企业的网络管理员同时打开面向对方的数据库服务器软件,通过现有DBMS厂商提供的连接机制进行两数据库之间的连接,这样做,对操作人员提出很高的技术要求,另外,如果双方的数据库产品之间没有提供基于网络的互连机制,该方案就行不通。3、在约定的时间派遣数据库管理员到其他企业执行数据导入,这样做效率比较低,很难达到数据共享要求。

  1.3. 本文提出方法的目标

  本文提出一种基于现有网络通信技术的切实可行的方案,设计一种通信机制。该机制挂接在两个企业服务器之间,嵌入在两个企业的电子商务应用系统之中,在保证不增加企业现有商务系统的开发负担的条件下,实现两企业的信息互连。


  2. 企业网络间数据共享机制的设计

  2.1. 对机制进行模块划分


  该机制应用于B/S结构的商务应用平台,主要目标是将数据库中的数据根据用户要求提取出来并传输到另一服务器上,然后根据用户需求进行选择性导入。分为三个子模块:一、数据发布子模块,主要实现企业对需要共享的数据信息进行选择发布;二、数据传输子模块,主要实现将企业发布的数据传输到另一台企业服务器上;三、接收数据导入子模块,主要实现将其他企业传输来的数据选择性导入本企业的数据库服务器中。

  2.2. 数据发布与数据导入子模块的设计

  数据发布子模块拥有连接数据发布企业的数据库的接口,提供网络管理员定制数据发布条件的界面,集成为企业商务网站的一部分。采用的是该企业的网络编程语言(如ASP/JSP等)编写。

  接收数据导入子模块提供用户对其他企业发布的共享数据进行选择性导入的界面,根据用户定制的要求,将符合条件的数据更新到企业数据库中。

  以上两块设计思想是原企业商务系统的设计思想。

  2.3. 数据传输子模块的设计

  数据传输模块的设计是机制实现的关键。不同企业由于其本身性质有区别和现有商务系统的开发者不同,所以数据库模式是完全不同的,例如:各企业经销的产品在规格和属性上各不相同,因此,对于不同企业,数据库中产品表的设计完全不同,另外,由于不同的软件开发者设计习惯有异,有些企业数据库中的某些表其他企业数据库中没有,或只对应其他企业数据库中的一张表。因此,各企业在不明确其他企业数据库模式的情况下要实现数据协同和共享,只能将提供共享的数据先导出在本企业的数据缓冲区中。

  常用的缓冲可采用文件缓冲和内存缓冲池方法,由于电子商务平台中传输过渡数据的数据量非常大,而且这类平台是一般使用ASP/JSP编写的,显式对内存空间的调用过于烦琐、不稳定,所以,内存中开辟缓冲池行不通,故应使用文件缓冲方式。对文本文件调用、读写与判断十分烦琐,而且文本文件缺乏固定的如数据库表的数据模式,不易操作,因此,不应使用文本文件作为缓冲,而认为使用过渡数据库为佳,过渡数据库应以单个文件形式存在并容易访问。Office系列产品中的Access恰好满足这些要求,因此,以Access数据库文件作为过渡数据库。

  下面要解决的是基于网络传送过渡数据库,可以采用FTP的方式将过渡数据库文件获取到服务器上。通常电子商务平台的开发使用ASP/JSP,因此需要设计一种专门传输文件的服务器端组件,在ASP/JSP页面中根据组件定义的COM接口对FTP函数进行调用,实现传输。


  3. 企业网络间数据共享机制的实现

  3.1. 数据发布子模块的实现


  数据发布子模块实现流程叙述为:企业网站后台管理登录à用户选择发布数据à显示发布网页à根据网页提示确定数据发布条件à将条件组合拼接成SQL语句并执行检索操作à将检索结果插入固定模式的ACCESS数据库中的表。发布条件即是SQL语句中where子句确定的内容,是将发布网页中用户确定的条件转换并拼接得到的。选取固定模式的ACCESS数据库是因为对一特定企业其所需发布的数据信息类在一段时间内是固定,根据这一特点,可以设计出固定模式的过渡数据库,这样大大简化了发布的实现。

  3.2. 接收方数据导入子模块的实现

  实现流程如下:


  每个企业都有属于自己发布的过渡数据库,现需获得的是某特定企业提供的过渡数据库,因此,在接收过渡数据的时候必须提供被接收企业的标识,通过该标识在本地数据库中查询其对应的连接信息,有URL、用户名、密码、端口,根据这些连接条件调用FTP组件的COM接口执行FTP操作取得某特定企业的过渡数据库。另,由于不明取得的数据是否是本数据库中已有的,就需要在导入时检查数据冗余,冗余数据取消导入。


  3.3. 数据传输子模块的实现

  该模块以组件的形式提供给用户,属于DCOM范畴内的实现。用户只需要在其网络服务器上完成该组件注册,就可以根据该组件的调用说明进行数据传输的实现。

  该模块的开发使用ATL,下面阐述具体开发过程:

  1>. 基于Visual C++ 6.0工具建立ATL工程,本文将其定名为dbftp,组件基于MFC类进行编写,载体为动态链接文件并新建COM 接口提供外部调用;

  2>. 建新ATL类,本文定类名ftpmdb。因为要编写的是进程内服务器,在用户调用时起作用,所以新建的ATL类提供了可以方便用户定制的COM接口--Iftpmdb;

  3>. 定制COM接口的方法和属性,增加方法getmdb,属性errorstring,方法函数是数据传输的实现,属性是出错原因,因此,外部调用时,使用getmdb方法以后,需读取errorstring获得调用结果。最后,在ftpmdb类中添加CComBSTR类型的成员变量errorstring;

  4>. 进入getmdb函数添加执行代码,另外,需注意此函数所在文件需将MFC中负责网络通信类的头文件afxinet.h包含入内,函数算法按步骤简述如下:

  1)接口提供连接和本地配置信息,为BSTR类型字符串,需转换为CString类型,以方便向MFC的网络类函数传递参数,示例如:

CString serverip=url;

    

  2)需建立新的Internet会话并进行FTP连接,同时可以开始接收连接错误代码,如下:

CInternetSession * session=new CInternetSession; CFtpConnection * conn;
try {
 conn=session->GetFtpConnection(serverip,user,pwd); 
 /*进行ftp连接*/
}
catch (CInternetException* pEx) {
 TCHAR szErr[1024];
 if (pEx->GetErrorMessage(szErr, 1024)){
  conn = NULL; errorstring.Empty();
  errorstring.Append("连接字符有误! ");
  errorstring.Append(szErr);
  return S_FALSE;
 }
 /*获得异常,写errorstring采用Append方法*/
 pEx->Delete();
}

   


  3)设定当前服务器上Ftp目录,Wininet函数为:

conn->SetCurrentDirectory(serverdir));

   


  4)寻找标志文件打开获取标志以确定状态,决定是否传输:

CFtpFileFind flagfind(conn);
flagfind.FindFile("flagout.txt")
CInternetFile * dbfile=conn->OpenFile("flagout.txt");
//从文件中读取标志位
dbfile->Read(flag,1); dbfile->Close();
if(flag[0]=='0'){/*标志为0不需传输*/
 return S_FALSE;
}

   


  5)获取远程过渡数据库文件,Wininet函数为:

conn->GetFile(fname,localdir+fname,false))

   


  6)重置标志为0,写回服务器端标志文件,完成传输,结束会话:

flag[0]='0'; dbfile=conn->OpenFile("flagout.txt",GENERIC_WRITE);
dbfile->Write(flag,1); dbfile->Close();
conn->Close(); session->Close();

   


  5>. 编译后产生目标文件dbftp.dll,该文件即是组件的载体;

  6>. 在其他服务器上注册该组件:将DLL复制到服务器的Winnt\System32目录中,注册命令行为:regsvr32 dbftp.dll,注册成功后在注册表中可以查询到Dbftp.ftpmdb的键,此即在创建服务器组件对象需使用的字符串。

  上述六个步骤阐明开发并注册组件的过程,下面说明在网络编程中对其进行调用的方法,以ASP为例,阐述调用过程。

  以request方法获得连接信息,如:

url=trim(request("url"))

   


  创建服务器组件对象并调用方法进行传输:

set tempdb=server.CreateObject("dbftp.ftpmdb")
tempdb.getmdb
url,uid,pwd,servpath,"temp.mdb",localpath

   


  读取组件的errorstring属性,以response方法输出结果:

Response.Write tempdb.errorstring

   


  以上即为数据传输子模块的详细实现。

  4. 总结

  本文提出的企业网间数据共享机制解决了基于Internet的不同数据库产品之间的连接问题,同时给用户在数据共享方面提供很大的选择空间,提供的良好界面以及操作整合,降低了对网络管理人员在专业领域知识上的要求,提高了数据共享的实时性和工作效率。但本方法并未对传输的数据文件进行加密,所以在该方面的问题还有待解决。

 

    希望这篇VC++编程文章可以帮助到你。总之,同学们,你想要的职坐标VC++频道都能找到!

本文由 @安安 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程