C#listView用三层架构怎么连接数据库

C#listView用三层架构怎么连接数据库,第1张

其实很简单,就是将本来的listView控件直接绑定数据库变成绑定数据对象。

1.在Model(实体层)中:新建一个实体类,名字可以随便取,这里取名为DataObj

2.在DAL(数据链路层)层中:写一个以IList<DataObj>为返回类型的方法,其中用List<DataObj>盛载查询到的数据流将它们返回出来;

3.在BLL(业务逻辑层)层中:BLL层其实没什么,只要写一个方法接收DAL层中传过来的数据流,此方法仍然是以IList<DataObj>为返回类型;

4.在web层(用户层)中:添加一个网页,将listView控件拖到页面上,listView的ID默认为listView1,编辑listView中的Edit columns项,向其中添加BoundField,想显示多字段就加多少,编辑每个BoundField中大DataField,DataField中的字段必须与DataObj中的public类型字段相一致,

编辑完成后在页面的后台代码.aspx.cs文件的page_Load()方法中调用BLL中的那个以IList<DataObj>为返回类型的方法,用一个实例化的IList<DataObj>实例命名为listData接收那个方法返回的数据,最后是写两行代码:

listView1.DataSource=listData

listView1.DataBind()

这样就完成了三成架构的listView的数据绑定。

数据链路层最重要的作用就是:通过一些数据链路层协议(即链路控制规程),在不太可靠的物理链路上实现可靠的数据传输。再具体些,可将数据链路层的主要功能归纳如下:

1.链路管理:当网络中的两个结点要进行通信时,数据的发方必须确知收方是否已经处在准备接收的状态。为此,通信的双方必须先要交换一些必要的信息。或者用我们的术语,必须先建立一条数据链路。同样地,在传输数据时要维持数据链路,而在通信完毕时要释放数据链路。数据链路的建立、维持和释放就叫做链路管理。

2.帧同步:在数据链路层,数据的传送单位是帧。数据一帧一帧地传送,就可以在出现差错时,将有差错的帧再重传一次,而避免了将全部数据都进行重传。帧同步指的是收方如何从收到的比特流中准确地区分出一帧的开始和结束。

3.流量控制:发方发送数据的速率必须使收方来得及接收。当收方来不及接收时,就必须及时控制发方发送数据的速率。

4.差错控制:在计算机通信中,一般都要求有极低的比特差错率。为此,广泛地采用了编码技术。编码技术有两大类。一类是前向纠错,即收方收到有差错的数据帧时,能够自动将差错改正过来。这种方法的开销较大,不适合于计算机通信。另一类是检错重发,即收方可以检测出收到的帧中有差错(但并不知道是哪几个比特错了)。于是就让发方重复发送这一帧,直到收方正确收到这一帧为止。这种方法在计算机通信中是最常用的。本章所要讨论的协议,都是采用检错重发这种差错控制方法。为了防止发送方等待收方应答时出现等待死锁,还将提供超时控制机制。重发帧后,为了防止收方收到重复帧,通常为帧给定一个帧序号。

5.区分数据和控制信息:由于数据和控制信息都是在同一信道中传送,而在许多情况下,数据和控制信息处于同一帧中。因此一定要有相应的措施使收方能够将它们区分开来。

6.透明传输:简单的说,透明传输就是发送方发送什么的数据,不管数据传输过程是如何实现的接收方将收到什么样的数据。更确切地说,所谓透明传输就是不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧出现了与某一个控制信息完全一样时,必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输的透明的。

7.寻址:在多点连接的情况下,必须保证每一帧都能送到正确的目的站。收方也应当知道发方是哪一个站。

应当指出的是:虽然本章以是广域网为背景来讨论数据链路层协议的,但是,这里所涉及的许多概念对学习整个课程都是很重要的。至于比广域网更为复杂的局域网的数据链路层协议,将在第5章进行讨论。

数据链路层(Data Link)是网络协议中的第二层。

链路: 从1个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点。

数据链路: 在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输。

不同类型的数据链路,所用的通信协议可能是不同的。

广播信道: CSMA/CD协议(比如同轴电缆、集线器等组成的网络)

点对点信道: PPP协议(比如2个路由器之间的信道)

数据链路层的3个基本问题:

1.封装成帧2.透明传输3.差错检验

帧(Frame) 的数据部分就是网络层传递下来的数据包(IP数据包,Packet)

最大传输单元 MTU(Maximum Transfer Unit)

每一种数据链路层协议都规定了所能够传送的帧的数据长度上限

以太网的MTU为1500个字节

图片备用地址

数据部分一旦出现了SOH、EOT,就需要进行转义。

图片备用地址

由于在接收端在接收的时候把转义符还原了,感受不到数据的变化,所以是透明传输。

图片备用地址

图片备用地址

数据链路层首部是帧首部的一部分

FCS是帧尾部的一部分, FCS是根据数据部分+数据链路层首部计算 得出

接收端接收到信息后会计算出FCS并进行比较,如果发现不一致,网卡就会把这条信息丢弃(抓包工具也抓不到)

数据经过不同的数据链路层,对应的层会把之前的帧开始和结束符替换为自己的协议帧。

CSMA/CD(Carrier Sense Multiple Access with Collision Detectio),

载波侦听多路访问/冲突检测(主要是为了支持单工通信和半双工通信)。

使用了CSMA/CD的网络可以称为是以太网(Ethernet),它传输的是以太网帧。

以太网帧的格式有:Ethernet V2标准、IEEE的802.3标准

现在使用最多的是:Ethernet V2标准

为了能够检测正在发送的帧是否产生了冲突, 以太网的帧至少要64字节

用交换机组件的网络,已经支持全双工通信,不需要再使用CSMA/CD,但它传输的帧依然是以太网帧。

所以,用交换机组建的网络,依然可以叫做以太网。

图片备用地址

首部:目标MAC地址 + 源MAC地址 + 网络类型(IPV4/IPV6)

以太网帧:首部 + 数据 + FCS

以太网帧的数据长度:46 ~ 1500字节

以太网帧的长度:64 ~ 1518字节(源MAC + 目标MAC + 网络类型 + 数据 + FCS)

当数据部分(从网络层传入的数据)的长度小于46字节时(总长度不足64字节),

数据链路层会在数据的后面加入一些字节填充,接收端会将添加的字节去掉。

图片备用地址

Frame(F): PPP协议是有帧开始和结束符的,0x7E

Address(A): 图中的值是0xFF,形同虚设,点到点信道不需要源MAC、目标MAC地址

Control(C): 图中的值是0x03,目前没有什么作用

Protocol(协议): 内部用到的协议类型(PPP协议的子分支协议)

虽然PPP帧和以太网帧的协议不一样,但是网络层的数据是一样的,仅仅是帧的首部和尾部发生了变化。

路由器和路由器直连时是PPP帧,如果在两个路由器之间加一个交换机,就不是PPP帧了,而是以太网帧。

因为路由器之间是点对点,不需要知道对方的MAC地址,但是以太网帧是广播信道,每一台设备必须确认自己是否是接收方。

PPP协议也是需要进行字节填充的:

图片备用地址

将0x7E替换成0x7D5E

将0x7D替换成0x7D5D

网卡接收到一个帧,首先会进行差错校验,如果校验通过则接收,否则丢弃。

Wireshark抓到的帧是没有FCS,因为它抓到的是差错校验通过的帧,帧尾的FCS会被硬件去掉,所以抓不到差错校验失败的帧。

图片备用地址

欢迎大家的意见和交流

email: [email protected]


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9907709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存