您好,欢迎来到360论文服务中心!设为首页 | 加入收藏

360论文服务中心

客服中心

全国咨询电话:18810141013

QQ :点击这里给我发消息 80017332

 点击这里给我发消息 634602927

手机:18810141013

邮箱:634602927@qq.com

短信:18810141013

本站介绍

360论文服务中心是最受欢迎的论文发表与论文编辑服务网站。

360论文服务中心于2000年创建,注册用户量已突破152万人,并帮助近380万人次顺利发表论文。14年来,360论文服务中心始终遵循热情快捷、安全可靠的服务宗旨,深受广大网民青睐。360论文服务中心主要设有论文发表部、论文创作部、期刊合作部、论文采编部、技术运营部和市场推广部等多个部门,是目前国内论文行业,规模最大、服务人员最多的正规网站。

创作发表说明

1. 如果您没有论文,还要评定职称,需要发表论文,请联系我们,客服人员会及时处理;

2. 教授、博士组成的论文指导团队,专业打造高品质论文;

3. 合作期刊,全国最全,与杂志社关系稳定,保证刊期。

360论文服务中心 > 论文资料 > 计算机论文 > 计算机网络论文 >

电子文档保护系统Microsoft .NET技术的研究

2016-04-24 18:47 字体:   打印 收藏 

2.3.1  Windows  Socket
Windows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。它包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口.应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。
(1) TCP/IP协议
TCP/IP是广为应用的互连网络协议。现在的网络几乎全部支持TCP/IP协议,因而无论从可移植性、可使用性还是发展前景来看,采用TCP/IP协议开发网络通信软件都是一个最佳选择。
协议是一组定义软件如何工作的规则。TCP是传输控制协议的简称,IP是互连网协议的简称。但是TCP/IP并不仅仅是把两个简称合并在一起的含义,TCP/IP实际上是一个协议组,它不仅包括TCP协议和IP协议,还包括许多其它的协议,所有这些协议共同工作,完成Internet上的信息传递。
常用的TCP/IP协议主要有:IP互连协议(Internet Protocol),负责主机之间的传输数据;TCP传输控制协议(Transmission Control Protocol),负责在应用程序之间传递数据;UDP用户数据报协议(User Datagram Protocol),提供给用户进程的无连接协议,也负责在应用程序之间传递数据,但不执行正确性检查;ICMP互连网报文控制协议(Internet Control Message Protocol),处理主机间的差错和传送控制;ARP地址解析协议(Address Resolution Protoco1),负责将网络层地址转换成链路层地址;RARP反向地址解析协议(Reverse Address Resolution Protoco1),负责将链路层地址转换成网络层地址。
TCP/IP协议的核心是传输层协议(TCP、UDP)、网络层协议(IP)和物理接口层,这三层通常在操作系统的内核中实现。TCP/IP网络环境下的应用程序是通过网络系统编程界面(Socket)实现的,而Socket又利用下层的网络通信协议实现的通信工作[28]
(2) Socket
Socket是网络通信的基本构件,一个Socket对应于通信的一端。网络通信的Socket接口模型将通信主机或进程当作端点。每个网络对话包括两个端点:本地主机(或进程)和远地主机(或进程)。Socket接口将网络对话的每个端点称为一个Socket。Socket是可以被命名和寻址的通信端点,一个正在被使用的Socket都有它的类型和与相关的进程。
Socket存在于通信域中。通信域也称地址族,是为了处理一般的线程通过Socket通信而引进的一种抽象概念。Socket通常只和同一个域中的Socket交换数据(数据交换也可能跨越区域界限,但这时一定要执行某种转换)。Windows Socket只支持单一的通信域,即Internet域(AF—INET),各种进程使用AF-INET域来进行通信。
Socket可以根据通信性质分类。应用程序一般仅在同一类型的Socket之间进行通信。不过只要底层的通信协议允许,也完全可以在不同类型的Socket之间进行通信。Windows Socket目前支持两种Socket:数据流Socket和数据报Socket。
数据流Socket提供了双向的、有序的、无重复并且无记录边界的数据流服务。数据报Socket接口支持双向的数据流,但并不保证是可靠、有序、无重复的。也就是说,一个从数据报Socket接收信息的进程有可能发现信息重复了,或者和发出时的顺序不同。
(3) 客户/服务器模型
在TCP/IP网络应用中,多数网络应用程序是使用客户/服务器模型设计的。客户向服务器提出请求,服务器收到请求后,提供相应的服务。服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户程序提出了请求信息。此时,服务程序被“惊醒”并且为客户提供服务(对客户的请求作出适当的反应)。虽然基于连接的服务是设计客户/服务器应用程序的标准,但有些服务也是可以通过数据报Socket提供的。
通常,网络应用程序包含两个独立的应用程序:客户程序和服务器程序。但是,也可以设计同时完成这两种功能的程序,例如,一些服务器程序如果不能完成一个服务请求时,它将充当客户程序,向其它服务器程序请求信息。
(4) 网络进程通信
网络进程通信需要解决不同主机进程之间的相互通信问题。为此,首先需要解决网络进程标识问题。在同一主机上,不同进程可以用进程号唯一标识。但是,在网络环境下,各主机独立分配的进程号不能唯一标识一个进程。
在Internet网络中,使用IP地址表示主机。同时,一台主机内的每个网络进程使用协议端口(port)进行标识。这样,要唯一确定网络环境下的某个进程,就同时需要IP地址和端口号。端口是一种抽象的结构(包括一些数据结构和缓冲区),端口通常和一种特定的服务协议相关联。当某一进程通过系统调用和某一端口建立连接后,传输层传给该端口的数据都被该进程所接收,同样,进程发送给传输层的数据都通过该端口输出。在TCP/IP协议中,端口操作类似于文件I/O操作,进程获取一个端口,相当于获取一个本地的I/O文件,可以对该端口进行读写访问[29]
(5) Socket编程模型
使用Socket接口进行网络通信时,按照下列步骤进行处理。
(a) 建立Socket。程序使用Socket进行网络通信时,必须先建立一个Socket,调用Socket函数可建立一个Socket。当建立Socket时,必须规定三个参数:协议族、Socket类型和协议。协议族参数确定一组相关的协议,如TCP/IP协议组。Socket类型参数指明程序将Socket用于数据传输还是字节流传输。协议参数指出程序希望使用的具体协议。
(b) 配置Socket。即程序要么将此Socket连到远地主机上,要么给此Socket指定一个本地协议端口。配置一个Socket,依赖于程序建立的网络连接类型(连接的还是无连接的)和程序起的作用。每个Socket需要五种信息:本地和远地主机的IP地址、本地和远程进程的协议端口以及连接使用的协议。使用Winsock API中不同的函数可配置一个Socket。
(c) 按要求通过Socket发送和接收数据。可使用Winsocket API在一个已配置好的Socket上传送和接收数据。Winsock API为此提供了四个函数:两个用于数据传送,另两个用于数据接收。
(d) 关闭Socket。本系统开发过程中将Win Socket编程常用的功能包装在TCPListener和TCPClient两个功能类中,TCPListener类在服务器端实现,运行在BackGroundWorker启动的多线程中,当监听建立以后,该线程等待客户端发起连接,进入阻塞状。TCPClient类在客户端实现,运行在主线程中,当客户端需要与服务器端进行通信时,TCPClient类初始化为实例,向服务器端的TCPListener类实例发起连接,当连接完成后,双方可以进行双向数据传输。服务器端和客户端程序按照事先制定的数据格式发送或接收指令和文档,完成双方的通信任务[30-31]
2.3.2  ADO.NET
ADO.NET集合了所有用于数据处理的类,是.NET数据库应用程序最终的解决方案,正在成为现今数据库开发的一种潮流,并代表了未来技术发展的方向。由于目前网络数据库是主流,ADO.NET在其运行效率、存取速度以及网络负载平衡等方面的均衡表现,使得它具有顽强的生命力。在进行数据库应用软件开发中,使用ADO.NET可以极大的帮助你以一种更加高效的方式来构建并完成任务。
ADO(ActiveX Data Object)对象是继ODBC之后,Microsoft主推的数据存取技术,ADO 对象是程序开发平台用来和OLEDB沟通的媒介,Visual Studio 2010中使用的ADO 版本为ADO.NET 4.0。ADO.NET是一组包含在.NET框架中的类库,用于完成.NET应用程序和各种数据存储之间的通信。它是Microsoft 为大型分布式环境设计的,采用XML作为数据交换格式,任何遵循此标准的程序都可以用它进行数据处理和通信,而与操作系统和实现的语言无关。下面将从访问机制、访问数据库的模式、主要对象等几个方面对ADO.NET技术进行研究分析[32-34]
(1) 访问机制
ADO.NET提供了两种数据访问模式:连接模式和断开连接模式。在断开连接模式下,当应用程序从数据源获得所需数据,就断开与数据源的连接,并将获得的数据以XML的形式存放在主存中。在处理完数据之后,再取得连接并完成更新工作,这样服务器的资源消耗较少,可以同时支持更多并发的客户机。连接模式下客户机一直保持和数据库服务器的连接,这和ADO技术是一致的。这种模式适合数据传输量少、系统规模不大、客户机和服务器在同一网络内的环境。ADO.NET有两个核心组件:数据集DataSet和.NET数据提供程序。其中DataSet类是断开连接模式的核心,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,可以描述复杂关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,不再依赖于数据链路。DataSet由一个或多个DataTable对象的集合和有关DataTable对象中数据的关系信息组成。DataTable对象由数据行(记录)、数据列(字段)以及主键、外键、约束组成。ADO.NET体系结构中另外一个非常重要的部分是数据提供者对象(DataProvider),它是访问数据库的必备条件。主要实现对数据的快速、只读访问。包括Connection,Command,DataAdapter,DataReader对象在内的组件,其中,Connection对象提供对数据源的连接;Command对象执行数据库命令,获得返回数据、修改数据、运行存储过程、以及发送或检索参数信息等;DataAdapter使用Command对象在数据源中执行SQL命令,用FILL方法将数据加载到DataSet中,使对DataSet中数据的更改与数据源保持一致;DataReader对象从数据库中按顺序读出各项记录,而且在内存中只保留一项记录[35,36]
(2) ADO.NET访问数据库的模式
Windows平台下的ADO.NET主要有3种访问数据库的模式,分别为OLEDB模式、ODBC模式和SQLCLIENT模式,另外还有其他数据访问模式,如对Oracle数据库的访问可以使用专用的Oracle模式。
(a) OLEDB模式
OLEDB模式主要用于访问OLEDB所支持的数据库。OLEDB是Microsoft公司开发的一种高性能的、基于COM的数据库访问技术,OLEDB和其他Microsoft公司数据库技术的不同之处在于其提供通用数据访问的方式。OLEDB数据提供程序通过OLED-BConnection对象提供了使用OLEDB公开数据源的连接,以及与Microsoft SQL Server的连接。
(b) ODBC模式
ODBC模式主要用于访问ODBC所支持的数据库,它是Windows平台的一种通用数据访问方式。一般在Windows平台下存在的数据库都可以通过建立系统DSN来实现对数据库的调用。
(c) SQLClient模式
SQLClient只用于访问MS SQL Server数据库,是ADO.NET中比较特殊的组件。当然,MS SQL Server也是OLEDB和ODBC所支持的,因此也可以通过OLEDB和ODBC模式来访问MS SQLServer,但实验证明对访问MS SQL Server来说,采用SQLClient模式比OLEDB和ODBC模式效率更高,所以使用MS SQL Server作为数据库开发应用程序时,最好使用SQLClient模式访问[37,38]
(3) ADO.NET的主要对象
ADO.NET中有很多重要的对象。这些对象主要实现两个主要的功能:(1)数据访问:用于访问数据库中数据和操作数据库的类型;(2)数据表示:用于包含数据库数据(如数据表)的类型。这两种类型之间联系密切,在数据库开发中两种类型都会用到。ADO.NET包含很多重要的对象,其中Connection对象、Command对象、DataAdapter 对象、DataReader 对象。是数据访问类,其他如: DataSet 对象、DataTable对象等是数据表示类。通过使用这些对象,使得对数据库的操作更加简单。
(a) Connection对象
在ADO.NET中,使用Connection对象连接到特定的数据源。使用的Connection对象取决于数据源的类型。创建Connection对象时,应在连接字符串中提供与DBMS通信必要的信息,如数据库的位置、用于认证的用户名和密码以及要访问的DBMS中的数据库。所有其他ADO.NET数据访问类都依靠Connection与数据库进行通信。数据库连接只在传输数据时才打开,因此创建Connection实例时并不自动连接数据库。Connection定义了Open()和Close()方法,用于控制连接何时可用。
(b) Command对象
Command对象提供与数据库交互的主要方法。可以用Com-mand对象来执行SQL语句、运行存储过程等。要使用Command对象执行命令,有三种选择,有些命令不返回结果,这种情况下就可以使用Command.ExecuteNonQuery()方法;有些命令返回一个结果,就需要使用Command.ExecuteScalar(方法;如果是返回多行命令,就应用Command.ExecuteReader()方法。对于不同的数据库调用模式,使用的Command是不同的,对应的Command要与其对象模式相对应。
(c) DataReader对象
DataReader用于以最快的速度检索并检查查询所返回的行。DataReader主要提供从数据库服务器向应用程序的快速只向前的数据流。由DataReader返回的数据是只读的。而且当前内存中每次仅存在一条记录。在程序开发的过程中,开发人员经常需要执行一些简短的操作,比如访问单独的用户名和密码。在执行这些操作时,就可以直接使用DataReader对象。对象支持最小特性集,所以它的速度非常快,而且是轻量级的。正是由于这些特性,它也被认为是流水游标(fire hosecursor)。DataReader并不在内存中缓存数据,也不提供更改数据库中记录的方法。DataReader是一个依赖于连接的对象。使用DataReader对象时,首先必须调用DataReader.Read()方法选择结果集中的一行,再不断调用该方法来移动DataReader,获取数据信息。获取到一行时,Read()方法返回True;否则返回False。
(d) DataAdapter对象
DataAdapter用于从数据源检索数据并填充到DataSet中的表,它还将对DataSet的更改解析回数据源。DataAdapter充当数据库和ADO.NET对象模型中非连接对象之间的桥梁的同时,还能隐藏和Connection、Command对象沟通的细节。DataAdapter使用.NET Framework数据提供程序的Connection对象连接到数据源,并使用Command对象从数据源检索数据以及将更改解析回数据源。DataAdapter对象包含4个不同类型的Command,SelectCommand用来取得数据来源中的记录;InsertCommand用来添加记录到数据来源;UpdateCommand用于更新数据来源中的记录;DeleteCommand用于删除数据来源中的记录。DataAdapter最常用的两个方法是填充DataAdapter.Fill()和更新DataAdapter.Update()。Fill()方法从数据库中获取数据;Update()方法更新数据库中的数据。这两个方法都可以用于数据集或单个数据表。
(e) DataSet对象
DataSet是ADO.NET的核心,它是从数据源中检索到数据在内存中的缓存,处理从数据存储中读出的数据,并以离线方式存在于本地内存中。DataSet可以使用相同的方式来操作不同数据来源取得的数据。不管底层的数据库是SQL Server还是Oracle, DataSet的行为都是一致的。在DataSet中可以包含任意数量的DataTable,且每个DataTable对应一个数据库。一般来说,一个对应DataTable对象的数据表就是一组数据列DataRow与数据行DataColumn的集合。可以使用这些对象与DataRelation对象互相关联。DataSet可将数据和架构作为XML文档进行读写。数据和架构可通过HTTP传输,并在支持XML的任何平台上被任何应用程序使用。开发人员可以使用WriteXmlSchema方法将架构保存为XML架构,并可以使用WriteXml方法保存架构和数据。若要读取既包含架构又包含数据的XML文档,可以使用ReadXml方法[39]
本系统中ADO.NET技术的主要应用主要ET的主要服务器端的用户管理模块、策略控制模块、角色管理模块、权限管理模块、文档管理模块、日志管理模块,实现对数据中心相应数据表的数据存取功能。
程序中创建一个数据集DataSet,其中包含九个DataTable与数据库中数据表相对应。服务器端程序启动时,数据适配器DataAdapter通过预先编写的SQL语句将数据表中的数据加载至DataSet中。DataSet与数据源BindingSource绑定,BindingSource负责将程序各个管理维护界面中的用户输入控件与数据表中的字段相对应。数据导航栏BindingSourceNavigator提供了数据操作常用的增加、删除、浏览和修改功能。在管理维护界面中完成编辑后,数据保存按钮所对应的执行代码完成数据源锁定和更新功能,对数据的修改部分保存到数据库中[40]
2.3.3  多线程技术
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。多线程的优点:使用线程可以把占据长时间的程序中的任务放到后台去处理,用户可以同时处理多件事情,不需等待执行提高了程序的运行速度。在该系统中使用多线程技术,可以提高文件传输效率,提高服务器的响应能力和并发处理能力[41-45]

2.4 本章小结

           企业数据不断泄露、丢失等安全问题日益严峻,文档保护技术是在这种需求下应运而生的一种安全技术理念。本章结合当前的实际情况,对系统中涉及的几种关键技术进行了详细地阐述,并对技术进行了研究分析,包括:加解密技术、Windows Hook技术和.NET技术。


联系我们

全国免费热线:400-086-0807
咨询QQ:634602927
投稿邮箱:634602927@qq.com