NET

2024-09-02

NET(精选8篇)

1.NET 篇一

自动代码生成 ― 无论是数据访问层、业务实体类还是用户界面 ― 可以大大提高开发人员的生产效率。这一生成过程可以基于许多输入,例如数据库、任意 XML 文件、UML 关系图等。Microsoft?Visual Studio?.NET 随附了对从 W3C XML 架构文件 (XSD) 进行代码生成的内置支持,分为两种形式:类型化数据集以及与XmlSerializer配合使用的自定义类。

XSD 文件描述了允许包含在 XML 文档中以便被该文档视为有效的内容。由于需要以类型安全的方式对数据进行处理(这些数据最终将被序列化为 XML 数据以供使用),因此产生了各种将 XSD 转换为类的方法。我们可以回想一下,XSD 并“不是”作为一种描述对象及其关系的手段而创建的。已经存在一种更好的格式可用于该目的,它就是 UML,并且已被广泛用来对应用程序进行建模以及根据模型生成代码。因此,在 .NET 及其面向对象的编程 (OOP) 概念以及 XSD 的概念之间存在某些(预料的)不匹配现象。当您将 XSD 映射到类时,请记住这一点。

也就是说,可以将 CLR 类型系统视为 XSD 的子集:它支持一些无法映射到常规 OO 概念的功能。因此,如果您只是使用 XSD 来对类进行建模,而不是对文档进行建模,您很可能找不到任何冲突。

在本文的其余部分,我们将讨论类型化数据集方法,还将讨论通过 xsd.exe 工具生成的自定义类如何有助于得到更好的解决方案,以及如何扩展和自定义从 XSD 到类的生成过程的输出。

为了最深入地领会本文的内容,您需要对 CodeDom 有一些基本的了解。

类型化数据集有什么问题?

类型化数据集正在越来越多地用于表示业务实体,也就是说,用于充当应用程序各个层之间的实体数据传送器,甚至充当 Web 服务的输出。与“正常的”数据集不同,类型化数据集很有吸引力,因为您还可以获得对表、行、列等的类型化访问。然而,它们并非没有代价和/或限制:

•实现开销:数据集包含许多可能不为您的实体所需的功能,如更改跟踪、类似于 SQL 的查询、数据视图、大量事件等等。•性能:与 XML 之间的序列化速度不够快。XmlSerializer的性能很容易超过它。•互操作性:对于返回类型化数据集的 Web 服务的非 .NET 客户端而言,可能难以解决。•XML 结构:许多分层的(而且完全有效的)文档及其架构无法扁平化为表模型。

获取有关类型化数据集的更多信息。

因此,除非数据集的其他功能普遍对您有用,否则使用类型化数据集进行数据传递可能不是最佳选择。值得庆幸的是,还有另一个可以利用的选择。

XmlSerializer 和自定义类

XmlSerializer改善了 XML 数据处理方法。通过序列化特性,XmlSerializer能够根据对象的 XML 表示形式还原对象,并且能够反序列化到 XML 形式。此外,它还能够以非常有效的方式完成这些工作,因为它可以生成动态编译的基于XmlReader的(因而也是流式的)类,该类专门用于序列化(以及反序列化)具体的类型。所以,它确实非常快捷。

阅读有关 XML 序列化特性的更多内容。

当然,猜测使用哪些特性以便符合某个 XSD 绝对不是一件好玩的事情。为了解决这个问题,.NET SDK 随附了一个可以帮助您完成艰苦工作的实用工具:xsd.exe。它是一个命令行应用程序,能够根据 XSD 文件生成类型化数据集和自定义类。自定义类在生成后具有相应的 XML 序列化特性,因此在进行序列化时,可以保证完全忠实于架构。

阅读 Don Box 对 XSD 以及 CLR 映射和特性的介绍。

迄今为止,一切都很好。我们具有有效且快速的方法将 XML 转换为对象或者将对象转换为 XML,并且我们具有能够为我们生成类的工具。问题在于,我们有时希望得到与所生成的内容稍有不同的内容。例如,xsd.exe 所生成的类无法数据绑定到 Windows 窗体网格,因为它查找属性而不是公共字段来显示。我们可能希望在许多地方添加自己的自定义特性,将数组更改为类型化集合,等等。当然,我们在做这些事情的时候,应保证在序列化时能够与 XSD 兼容。

自定义 XSD 将明显改变所生成的类的形式。如果您只是期望将 PascalCaseIf 变成实际的 XML 标准以便使用 camelCase,那么我建议您三思而后行。MS 的一些即将问世的产品表明它们将要使用 PascalCase 来表示 XML,以便使它们更好地支持 .NET。

如果您需要进行更多的与上述自定义类似的自定义,您的选择是什么?人们几乎普遍认为 xsd.exe 是不可扩展的,并且没有办法对其进行自定义。这是不准确的,因为 .NET XML 团队实际上向我们提供了恰好可供该工具使用的类。您将需要自己动手使用CodeDom以便利用它们,但自定义程度只受到您需要的限制!

您可以在下列文章中阅读有关CodeDom的内容:

Generating and Compiling Source Code Dynamically in Multiple Languages

Generate .NET Code in Any Language Using CodeDOM

返回页首

2.NET 篇二

1ASP.NET与ADO.NET技术简介

1.1 ASP.NET技术

ADO.NET作为NET Framework中的重要组成部分, 是微软公司推出的一种新型的动态网站的设计技术和程序框架, ASP.NET技术的应用大幅提高了网站的性能和开发效率[1]。ASP.NET不仅拓展并加强了ASP (动态服务器页面) 在网页开发过程中的功能优势, 而且突破了单纯以ASP技术进行网站开发的各种限制, 其最为关键的网站设计技术特色为:为网站设计提供了一个多语言组ASP件的开发与执行环境。件的开发与执行环境。

1.2 ADO.NET技术

ADO.NET是即动态网站数据访问服务, 是ASP.NET技术的关键组成部分, 具体说来则是在NET平台中专门用来进行后台数据操作与存储的一组类[2]。虽然ADO.NET是在ADO (数据库中的数据结构) 的基础上发展而来的, 但是ADO.NET的功能却要比ADO强大的多。ADO.NET中除了引入面向对象结构外, 还将标准的可标记扩展语言 (XML) 作为数据交换的主要格式, 从而实现网络中ADO.NETXML不同系统的相互运作。不同系统的相互运作。

2ADO.NET数据交换原理

由1.2可知ADO.NET是针对ADO的部分缺陷, 进行重新设计的新型数据访问对象, 其可以有力地支撑动态网站中的底层数据交换模型[3]。基于ADO的RecordSet (数据库表中的记录集) 对象在不同的应用程序或者不同的计算机组件之间进行交换时, 必须以COMmarshalling (列集) 机制为基础, 将相关数据和参数进行二进制格式的包装, 而由于.COM只支持Automation (自动化) 的数据类型。因此, 在利用ADO进行RecordSet对象交换时, 还需要依次进行必要的数据转换, 增加了对象处理的复杂程度。而ADO.NET中的DataSet对象可以利用可标记扩展语言实现数据交换, 使得交换后的数据可以直接通过防火墙被相关的计算机程序或组件所利用。此外, 由于可标记扩展语言 (XML) 是一种简单的文字数据, 因此, 系统接受端的应用程序在运行时, 就无需受到以COM为基础的相关应用程序的限制, 在简化了Marshalling数据包装过程的同时, 也有效提高了系统数据交换的速度。Marshalling

3ADO.NET连接与控制的数据库对象3ADO.NET连接与控制的数据库对象

利用ADO.NET技术进行数据库管理的实质则是ADO.NET中的对象对数据库的管理作用。由前文可知ADO.NET技术是在ADO技术的基础上发展而来的, 因此, 其除了具有ADO的Command与Connection对象外, 还具有许多新的对象与程序化接口, 例如ADO技术的基础上发展而来的, 因此, 其除了具有ADO的Command与Connection对象外, 还具有许多新的对象与程序化接口, 例如DataSet、DataReader以及DataAdapter对象等[4]。

3.1 数据库的命令执行对象Command

ADO.NET中的Command对象主要是数据库的查询、调用或存储的过程以及对返回程序内特定表内容的直接请求[5]。在ADO.NET中, Command对象具有三种不同类型的查询命令执行原理, 分别为: (1) 利用Execute Non Query (不需返回数据命令) 返回的并不是系统所需查询的数据行, 而是系统需要返回的行数; (2) Executer reader (执行-查询) 是进行数据读取的一种简单且高效的方法, 其可以将Oledb reader对象的查询结果返回, 具体的返回方法为:若存在相关数据的记录, 则系统将自动读取第一条记录, 然后将其数据指针自动下移;若不存在数据记录, 则直接返回False; (3) 最后一种方法则为xecute-Xml-Reader方法, 是专门用来处理以可扩展标记语言格式为主的系统返回结果的查询工作的。

3.2 数据库的连接对象Connection

ADO.NET中的Connection是用来与数据库建立或断开连接的对象, 其在数据库管理中具有“渠道”的作用, 其他对象例如Data-Set和DataReader等均需要通过其才能与系统数据库进行连接, 进而提交并获取相关查询结果。Connection建立对象与数据库连接的方法主要包括了如下几种:

1) 利用SQLServer (结构化语句查询服务) 结构将对象与数据库连接并打开数据库的方法, 方法的具体实现方法如下:

Dim splcon as New sqlConnection (dserver=lo-Calhost;uid=sa;pwd=sa;datebase=Northwindd) ;

sqlcon.Open;

sqlcmm.Connection= splcon

其中对象释放与断开连接的方法分别为:sqlcon.Close与sqlcon1=Nothing

2) 低级应用程序接口 (OLEDB) 进行对象连接与打开数据库的方法为:

Dimoleconnas New oleconn (dprovider=SQLOLEDB;database=Northwind;userid=sa;pwd=sad) ;

olecmm.Connection= oleconn

其中, olecmm表示olecmm.Command的对象, 释放对象的方法为:

olecmm= nothing;

oleconn1Close;

oleconn= nothing

3.3 存储数据读取对象DataSet

3.3.1 DataReader对象

动态网站当中, 当以浏览的方式对大量的信息数据进行查看时, 通常会占用大量的内存, 从而使系统的性能下降。例如, 在利用ADO-Recordset对象对某个链接中的1000行数据库记录进行读取时, 则必须将此1000行数据记录平均分配到上述链接当中, 一直到这个链接的生命周期完全结束。假定在同一时间内, 存在多个用户对同一台计算机进行上述操作, 则计算机的内存则不可避免地被过度使用[7]。为了解决这一问题, ADO.NET为系统提供了Data Reader对象。Data Reader对象的实质是从数据返回的一个只能向下滚动的只读型串流, 且基于DataReader的数据程序在当前内存之中每次仅保留一条记录, 从而为系统节省了较大的内存空间, 提高了系统的运行效率。Data Reader对象的应用主要体现在以下两种数据处理情况: (1) 客户界面并未用到数据绑定, 且更新数据是在基于结构化查询语言的前提下, 以手写形式形成的代码, 在此种情况下, Data Reader对象将为系统提供有效的数据访问方法; (2) 另一种则是需要查询数据库状态但无需实现数据自动更新功能的情况。此时, ADO.NET中基于结构化查询语言的Da-taReader对象通过实现对SQL Sever平台的数据库进行直接操作, 在借助低级程序接口Oledb的基础上, 对ADO中的核心成员数据进行支持[8]。情况 (1) 和情况 (2) 具体的数据库管理方法为:

1) DimmyReaderAs Sq-l

DataReader=myCommand.ExecuteReader ()

2) DimmyReaderAs OLEDb

DataReader=mayCommand.ExecuteReader ()

值得注意的是两种情况下ADO.NET对数据库的管理方法均是在VB程序语言下进行实现的。

3.4 数据绑定

数据绑定是ADO.NET对数据库进行管理的另一主要方法。所谓数据绑定是指将计算机浏览器的显示控件与数据源相连, 则ASP.NET在无需人工参与的情况下, 便可以将数据源中的数据自动显示出来的一种自动化数据管理方法。在进行系统数据绑定前, 首先要指明数据源, 再利用Databinder的数据绑定语法实现相关数据的最终绑定。利用ADO.NET对数据库实现绑定的方法主要包括了如下三种: (1) 仅使用一个单独控件, 在单一控件的使用过程中, 只有其自身与数据源进行连接, 即原始的Databinder方法; (2) 利用一个包装控件, 此时, 该包装空间中可以包括诸多子控件, 进而实现多个控件与数据源相连接, 并达到数据绑定的目的, 即基于DataGrid的数据绑定法; (3) 在不借助任何连接的基础上, 对Web页面上显示的所有内容连接进行直接获取, 以达到数据绑定的目的[9]。以此方法作为数据绑定的主要方法可以使系统在运行过程中, 为用户自动更新逻辑, 大幅提高了数据的绑定和利用效率。

4 结论

本文通过对ASP.NET与ADO.NET技术的概念和特点进行分析, 在阐述ADO.NET技术的数据交换原理的基础上, 从数据库的命令执行对象Command、数据库的连接对象Connection、存储数据读取对象Data以及数据绑定等方面对ADO.NET连接与控制的数据库对象展开了具体研究。可见, 未来加强对ASP.NET中ADO.NET对数据库的管理的研究和应用力度, 对于促进动态网站的设计与完善以及数据库技术的快速发展具有重要的历史作用和现实意义。

摘要:近年来, 我国的计算机网络技术发展迅速, 且为推动我国各个社会生产领域的发展做出了较大贡献。作为计算机网络技术发展的必然产物, 数据库技术的产生与发展不仅代表了我国的计算机网络技术已经进入了一个新的阶段, 更代表了我国整体科技生产力的进步和发展。该文以数据库的管理为研究对象, 通过对ASP.NET和ADO.NET技术进行分析, 在结合ADO.NET数据交换原理的基础上, 对其在数据库管理中的应用展开了深入研究。

关键词:ASP.NET,ADO.NET,数据库管理

参考文献

[1]王珺.基于ASP.NET的进销存管理系统的设计与实现[D].武汉:华中科技大学, 2013.

[2]孙美卫.基于C#应用的ADO.NET数据库访问技术[J].吉林工程技术师范学院学报, 2014, 4 (12) :85-87.

[3]李江慧, 殷旭东.基于ASP.NET的酒店客房管理系统[J].电脑编程技巧与维护, 2014, 12 (5) :50-51.

[4]陈永松.基于创新能力的.NET网站开发课程群建设[J].计算机时代, 2014, 7 (11) :52-55.

[5]莫灼宇.基于.Net的小微型企业人力资源管理系统设计[J].时代漫游, 2014, 1 (30) :43.

[6]孙甲水.优化查询WEB数据库方法及其实现[J].科技视界, 2014, 10 (21) :217-218.

[7]林奕君.基于ASP.NET技术的高校图书馆网站系统建设[J].华章, 2014, 12 (31) :353.

[8]桂婷.ADO.NET中DataReader对象的探讨研究[J].电脑知识与技术, 2013, 6 (12) :5999-6001.

3.Yard, Net,Table 篇三

When interviewed by Xinhua News Agency, Liang Zhanming, a farmer in Shanglumo Village of Yanghong Town, said that in 2013 his 1.2-hectare land produced 40,000 kg of pears, which sold for 4.4-4.8 yuan ($0.72-0.78) per kg and netted him a total revenue of 170,000 yuan ($27,732). Buyers came from across the country, from as far away as south Chinas Guangdong Province and Guangxi Zhuang Autonomous Region.

“But in 2014, beaten by harsh frosts and droughts, the pear output was only 25,000 kg,” said Liang. “Few buyers have come to buy and almost all of the pears are still in my cellars. The prices fell to 2.56-2.66 yuan($0.42-0.43) per kg before the Spring Festival(which fell on February 19 this year).”

Qiao Bin, deputy head of Yanghong Town, said that in 2014 a total of 7.5 million kg of pears were produced in the town, 2 million of which are still waiting for buyers.

“Weve had difficulty selling pears this year,”he said.

Recently, farmers in Shanglumo Village have gotten rich from pear sales, which raised their expectations for pear prices, causing the slow pear sales this year. Most Shanglumo villagers now still wait for buyers to come and are not aware of promoting through e-commerce and other new methods of selling farm produce. Behind the unreasonable expectations on farm produce is the regions underdeveloped ecommerce.

Having no access to price information from e-commerce platforms, many farmers have overestimated the sales and prices of pears. To accelerate the establishment of county-level e-commerce platforms is the solution to preventing farmers from being hurt by low prices and slow sales of farm produce.

Chinas rural e-commerce has already shown explosive growth since 2009. According to a research report on countylevel e-commerce by Alibaba Group, in 2013, through Alibabas customer-to-customer platform Taobao.com and their businessto-customer platform Tmall.com, 1.4 billion parcels were sent out from Chinese counties, and more than 2 million shops registered on these two platforms were from the rural areas.

Underdeveloped and underutilized

Li Qi, a member of the Ministry of Commerces e-commerce consulting committee, said the rapid development of rural ecommerce will be a good opportunity to solve the problem of sluggish sale of farm produce.

“Currently, some agricultural products produced in rural areas are still primary materials with simple packages, but products sold through online shops must be well packed and processed. Through the transformation of agricultural products to processed products and then to commodities in online shops, prices of farm produce will rise signifi-cantly. The government must offer training to farmers in this regard,” said Li.

Wei Yanan, head of Rural Youth Work Department of Shaanxi Provincial Committee of the Communist Youth League of China, has long been engaged in studying e-commerce in rural areas. He said there are three challenges in developing e-commerce in rural areas.

Farmers do not correctly understand ecommerce. Some e-commerce concepts that are commonplace in cities are still novelties to farmers and even rural government officials. To them, simply opening a shop on Taobao.com is e-commerce.

Wei said there are two mistaken ideas in the development of rural e-commerce: considering e-commerce an independent industry or considering e-commerce just a marketing method. Both methods ignore the connection between e-commerce and real industries, making e- commerce directionless, like water without a source.

Rural e-commerce needs policy support, government investment and technologies. To grow e-commerce in rural areas that are less developed than cities, the government must play a chief role.

On the other hand, many local governments only focus on setting up e-commerce industrial parks or attracting investment, but give inadequate support to online shops opened by farmers. For instance, it is difficult for farmers to obtain loans or enjoy policy support for opening online shops.

In Weis opinion, without supporting policies and services, the development of the ecommerce industry will remain fragile.

Logistics also impede the development of e-commerce in rural areas.

Many farmers are interested in opening online shops, but few of them have gone into action. An important reason is the restriction of logistics, said Wei. At present the logistics costs are high to develop e-commerce in rural areas, especially those mountain areas.

Li also said, restricted by various conditions, logistics costs in rural areas are usually higher than those in cities, impeding the transportation of farm produce out of rural areas and that of industrial products into these areas.

Promotion on all fronts

To accelerate the development of rural e-commerce, Li said commerce and agricultural departments should strengthen the research, formulation and implementation of rural e-commerce policies.

Another research report released by Taobao.com last September shows online shops in counties will need 2 million employees in the next two years.

“At present, a large number of young migrant workers are returning to the countryside from cities. I suggest the government strengthen training of farmers and university graduates to work for rural e-commerce through various training measures,” said Wei.

“The government must also attach importance to the construction of industrial chains, including telecommunications, logistics, packing and processing, as well as supporting small online shops while introducing big investments,” Wei stressed.“Through establishing local farm produce brands and supporting county-level ecommerce platforms, the government can and should accelerate the development of ecommerce in rural areas.”

Leading industrial companies and farmerscooperatives should also be fully utilized to accelerate the development of rural e-commerce, said Li.

To solve the problem of logistics, Li suggested the government use the post networks as the logistics platform for rural e-commerce, since the China Post has established complete mail delivery networks all over the country.

4.面试题.net 篇四

2、C#中的委托是什么?编写一个简单的委托代码。

3、C#中抽象类是什么?编写一个简单的抽象类代码。

4、例举ASP.NET页面之间传值的几种方式。

5、override与重载的区别

6、求以下表达式的值,写出你想的到其中一种实现方法:1-2+3-4+……..+m7、.NET中读写数据库需要用到那些类?他们的作用?

8、.NET异常处理机制?

9、写出下面题目的SQL语句

表1TB_BMBM 部门基本信息表

BMBM 部门编码

BMMC 部门名称

表2TB_BMJE部门月营业表,YY年

MM 月

BMBM 部门编码

JE部门营业额

A.要求写一条SQL语句查询有哪些部门年累计金额>1000的,注意要按 年YY,部门名称BMMC分组的累计金额查询

B.查出表1中有哪些部门不在(表2中季度金额>200的部门)中

10、用一条SQL语句 查询出每门课都大于80分的学生姓名

namekechengfenshu

张三语文81

张三数学75

李四语文76

李四数学90

王五语文81

王五数学100

5.net学习心得 篇五

下面来演示一下反射的实例

(1)新建一个类库项目。在解决方案上单击右键选择添加“新建项目”,在弹出来的框中选择“类库”,在下面名字栏中输入classlib。然后删除class1类,新添加一个类“classperson”,添加如下代码:

namespace classlib

{

public class classperson

{

public classperson():this(null)

{

}

public classperson(string strname)

{

name = strname;

}

private string name;

private string sex;

private int age;

public string name

{

get { return name; }

set { name = value; }

}

public string sex

{

get { return sex; }

set { sex = value; }

}

public int age

{

get { return age; }

set { age = value; }

}

public void sayhello()

{

if (null==name)

console.writeline(“hello world”);

else

console.writeline(“hello,” + name);

}

}

}

添加完之后编译生成一下,就会在这个类库项目中的.bindebug中有一个classlib.dll文件。然后添加一个控制台应用程序。引入system.reflaction的命名空间。添加的代码如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.reflection;//添加反射的命名空间

namespace consoleapplication4

{

public class program

{

static void main(string[] args)

{

console.writeline(“列出程序集中的所有类型”);

assembly ass = assembly.loadfrom(“classlib.dll”);

type[] mytype = ass.gettypes();

type classperson = null;

foreach (type p in mytype)

{

console.writeline(p.name);

if (p.name==“classperson”)

{

classperson = p;

}

}

console.writeline(“列出classpersonl类中的所有的方法”);

methodinfo[] md = classperson.getmethods();

foreach(methodinfo m in md)

{

console.writeline(m.name);

}

console.writeline(“实例化classperson类,并调用sayhello方法”);

object obj = activator.createinstance(classperson);

object objname=activator.createinstance(classperson,“飞鹰”);

methodinfo mysayhello = classperson.getmethod(“sayhello”);

mysayhello.invoke(obj, null);//无参数构造函数

mysayhello.invoke(objname, null);//有参构造函数

console.readkey();

}

}

}

运行之后的结果是:

列出程序集中的所有类型

classperson

列出classpersonl类中的所有的方法

get_name

set_name

get_sex

set_sex

get_age

set_age

sayhello

tostring

equals

gethashcode

gettype

实例化classperson类,并调用sayhello方法

hello world

hello,飞鹰

2.using的作用

(1)引入命名空间,如:using system。

(2)using别名。

格式:using 别名=包括详细命名空间信息的具体的类型

例如:在两个命名空间(namespace1,namespace2)里各有一个myclass类,这时可以这样引入命名空间,

using aclass=namespace1.myclass;

using bclass=namespace2.myclass;

实例化时:

aclass my1=new aclass;

bclass my2=new bclass;

(3)using定义范围

即时释放资源,在范围结束时处理对象。例如:

using(class1 cls1=new class1())

{

}

6.net实习周记 篇六

时间:20xx年7月25日—20xx年7月30日

这个星期,依旧是学习如何关于客户上个星期,学习了降低期望值,这个星期,学习的是把握话题和话题的转移作为客服,有时候我们是同时和好几个人交流,可能这个时候会有顾客把客服当做聊天对象了,问题一个接着一个这个时候我们就要把握住话题,把谈话的主动权掌握在自己的手中聊的内容如果越来越不着边际,我们就要主动的问问:关于商品还有什么需要了解的么?或者委婉的告诉顾客我们现在非常忙,如果没有什么问题能不能结束对话在和顾客交流的过程中,还要注意一个时间上的控制除了回答顾客关于交易上问题,可以适当聊天,这样可以促进双方的关系但是我们要懂得控制聊天的时间和度,毕竟,我们的工作不是闲聊,我们还有很多正经的工作要做聊到一定时间后可以以“不好意思我有事要走开一会”为由结束交谈

实习感受:

7.NET 篇七

1.1 两层结构及其局限性

两层结构有如下特点:

数据库访问和用户类型判断逻辑放在一起实现。

用户界面层直接调用数据访问实现。

整个系统功能放在同一项目中实现。

传统的两层结构的特点是用户界面层直接与数据库进行交互, 还要进行业务规则、合法性校验等工作。两层结构软件模型如图1所示。

这种结构存在着很多局限性, 比如:一旦用户的需求发生变化, 应用程序都需要进行大量修改, 甚至需要重新开发, 给系统的维护和升级带来了极大的不便, 用户界面层直接访问数据库, 会带来很多安全隐患。为了克服两层结构的局限性提出了三层结构。

1.2 定义

所谓三层体系结构, 是在客户端与数据库之间加入了一个“中间层”, 也叫组件层。这里所说的三层体系, 不是指物理上的三层, 不是简单地放置三台机器就是三层体系结构, 也不仅仅有B/S应用才是三层体系结构, 三层是指逻辑上的三层, 即使这三个层放置到一台机器上。通用三层结构软件模型如图2所示。

中间层通常包括业务逻辑层、数据访问层和数据对象模型层。此时的三层结构软件模型如图3所示。

用户界面 (User Interface, 简称UI) , 也称表示层, 位于最上层, 用于显示和接收用户提交的数据, 为用户提供交互式的界面。表示层一般为Windows窗体应用程序或Web应用程序。

业务逻辑层是表示层和数据访问层之间沟通的桥梁, 主要负责数据的传递和处理。

数据访问层主要实现对数据的读取、保存和更新等操作。

数据对象模型层即业务实体层。主要用于表示数据存储的持久对象。在实际应用程序中的实体类是跟数据库中的表相对应的, 也就是说一个表会有一个对应的实体类。当然有些三层结构并不包含单独的数据对象模型层, 而将其功能分解到业务逻辑层和数据访问层之中。

在三层结构中, 表示层直接依赖于业务逻辑层;业务逻辑层直接依赖于数据访问层;数据访问层直接依赖于数据对象模型层。

1.3 优势

三层结构主要体现出对程序分而治之的思想:数据访问层只负责提供原始数据, 并不需要了解业务逻辑;业务逻辑层调用数据访问层提供的方法自定义一些业务逻辑, 对数据进行加工, 本身不需要了解数据访问层的实现;表示层直接调用业务逻辑提供的方法把数据呈现给用户。

三层结构的优点在于不必为了业务逻辑上的微小变化而迁至整个程序的修改, 只需要修改商业逻辑层中的一个函数或一个过程;增强了代码的可重用性;便于不同层次的开发人员之间的合作, 只要遵循一定的接口标准就可以进行并行开发了, 最终只要将各个部分拼接到一起构成最终的应用程序。

三层结构的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下, 客户端不直接与数据库进行交互, 而是通过COM/DCOM通信与中间层建立连接, 再经由中间层与数据库进行交互, 这样会大大提高系统的安全性。

三层结构的应用程序更能够适应企业级应用日益增长的复杂度和灵活性的要求, 并且通过软件分层的高内聚、低耦合的原则, 实现扩展、维护和重用的要求, 可以大大提高开发效率。

2 搭建ASP.NET的三层结构框架

ASP.NET可以使用.NET平台快速方便地搭建三层结构。ASP.NET革命性的变化是在网页中也使用基于事件的处理, 可以指定处理的后台代码文件, 可以使用C#、VB作为后台代码语言。.NET中可以方便地实现组件的装配, 后台代码通过命名控件可以方便地使用自己定义的组件。表示层放在Web窗体中, 业务逻辑层、数据访问层和数据对象模型层用类库来实现, 这样就很方便地实现了三层结构。其方法如下。

(1) 建一个数据库 (简单起见可建Access数据库) , 以备存取数据。

(2) 新建解决方案

打开VS 2008, 新建一个“空白解决方案”, 将其命名为“Three Layers”。

(3) 搭建表示层 (网站)

在“解决方案资源管理器”中, 新建一个网站, 其存放位置为解决方案文件夹下的My Web子文件夹。

(4) 搭建业务逻辑层 (类库)

在“解决方案资源管理器”中, 新建一个“类库”项目。填写项目的名称为“Business Logic Layer”, 该项目用于实现业务逻辑。

(5) 搭建数据访问层 (类库)

在“解决方案资源管理器”中, 新建一个“类库”项目。填写项目的名称为“Data Access Layer”, 该项目用于实现数据访问层。

(6) 搭建数据对象模型层 (类库)

在“解决方案资源管理器”中, 新建一个“类库”项目。填写项目的名称为“Models”, 该项目用于实现数据实体。至此, 已搭建了三层结构 (添加了4个项目) 。

(7) 添加各层之间的依赖 (引用)

此时, 虽然三层结构的基本框架已经搭建成功, 但是各层之间是独立的。只有添加依赖关系, 才能让它们相互协作。

1) 添加表示层对业务逻辑层、数据访问层和数据对象模型层的依赖。

2) 添加业务逻辑层对数据访问层和数据对象模型层的依赖。

3) 添加业数据访问层对数据对象模型层的依赖。

至此, 三层结构及各层之间的依赖关系创建完毕。

(8) 将表示层设置为启动项目

通过上述步骤, 就已经成功部署了ASP.NET的三层架构。表示层My Web网站放置用于显示的Web页面;事务逻辑层Business Logic Layer项目, 把所有的业务逻辑代码在该层实现;数据访问层Data Access Layer项目主要处理数据库的操作, 供事务逻辑层调用;数据对象模型层Models项目实现数据实体类, 供其他各层调用。只要在各个层中实现具体的类就可以成功实施三层结构的应用程序了。

3 应用举例

3.1 系统分析

本例的功能非常简单, 只是实现用户登录与注册的功能, 用户信息存放在数据库中, 旨在体现如何用ASP.NET实现三层结构。

表示层My Web网站放置用于显示的Web页面;事务逻辑层Business Logic Layer项目, 把所有的业务逻辑代码在该层实现;数据访问层Data Access Layer项目主要处理数据库的操作, 供事务逻辑层调用;数据对象模型层Models项目实现数据实体类, 供其他各层调用。

各层次之间的调用 (引用) 关系如表1所示。

3.2 创建框架

3.2.1 建立数据库

打开Access创建名为userinfo.mdb的数据库, 并为其创建一个名为t_User的表, 其结构如图4所示。

3.2.2 新建解决方案

打开VS 2008, 依次选择“文件”→“新建”→“项目”命令, 打开“新建项目”对话框中, 然后选择项目类型为“Visual Studio解决方案”, 选择模板为“空白解决方案”。然后填写解决方案的名称为“Three Layers”, 并指定保存位置, 如图5所示。单击“确定”按钮, 创建解决方案。

3.2.3 搭建表示层

(1) 在“解决方案资源管理器”中, 在解决方案名称上单击鼠标右键, 在弹出的快捷菜单中选择“添加”→“新建网站”命令。

(2) 在打开的“添加新网站”对话框中, 选择“ASP.NET网站”, 选择位置为“文件系统”, 并设置网站的路径, 如图6所示。

(3) 设计Default.aspx如图7所示。

(4) 添加一Web窗体, 将其命名为Welcome.aspx, 其设计视图如图8所示。

(5) 添加一Web窗体, 将其命名为Register.aspx, 其设计视图如图9所示。

(6) 将建好的userinfo.mdb拷贝到站点的App_Data文件夹下。

(7) 添加Global.asax, 在其Application_Start () 添加如下代码。

3.2.4搭建业务逻辑层 (类库)

在“解决方案资源管理器”中, 在解决方案名称上单击鼠标右键, 在弹出的快捷菜单中选择“添加”→“新建项目”命令, 打开“新建项目”对话框中, 然后选择项目类型为“Visual C#”, 选择模板为“类库”。填写项目的名称为“BusinessLogic Layer”, 该项目用于实现业务逻辑。此时项目的保存位置已经默认输入了, 是刚才创建空白解决方案时产生的路径, 如图10所示。

3.2.5 搭建数据访问层 (类库)

在“解决方案资源管理器”中, 在解决方案名称上单击鼠标右键, 在弹出的快捷菜单中选择“添加”→“新建项目”命令, 打开“新建项目”对话框中, 然后选择项目类型为“Visual C#”, 选择模板为“类库”。填写项目的名称为“Data Access Layer”, 该项目用于实现数据访问层。此时项目的保存位置已经默认输入了, 是刚才创建空白解决方案时产生的路径。

3.2.6 搭建数据对象模型层 (类库)

在“解决方案资源管理器”中, 在解决方案名称上单击鼠标右键, 在弹出的快捷菜单中选择“添加”→“新建项目”命令, 打开“新建项目”对话框中, 然后选择项目类型为“Visual C#”, 选择模板为“类库”。填写项目的名称为“Models”, 该项目用于实现数据访问层。此时项目的保存位置已经默认输入了, 是刚才创建空白解决方案时产生的路径。

至此, 已搭建了三层结构 (添加了4个项目) , 此时的解决方案如图11所示。

3.2.7 添加各层之间的引用 (依赖)

此时, 虽然三层结构的基本框架已经搭建成功, 但是各层之间是独立的。只有添加依赖关系, 才能让它们相互协作。

(1) 添加表示层对业务逻辑层、数据访问层和数据对象模型层的依赖。

在“解决方案资源管理器”中, 在表示层上单击鼠标右键, 在弹出的快捷菜单中选择“添加引用”命令, 打开“添加引用”对话框, 然后选择“项目”选项卡, 选中项目名称为“Business Logic Layer”的项目, 单击“确定”按钮, 如图12所示。

同样添加对Data Access Layer和Models的引用。

(2) 添加业务逻辑层对数据访问层和数据对象模型层的依赖。

在“解决方案资源管理器”中, 在业务逻辑层上单击鼠标右键, 在弹出的快捷菜单中选择“添加引用”命令, 打开“添加引用”对话框, 然后选择“项目”选项卡, 选中项目名称为“Data Access Layer”的项目, 单击“确定”按钮。

同样添加对Models的引用。

(3) 添加数据访问层对数据对象模型层的依赖。

至此, 三层结构及各层之间的依赖关系创建完毕。现在Three Layers解决方案资源管理器应该如图13所示。

3.2.8 将表示层设置为启动项目

运行程序前, 还需设置启动项目。在“解决方案资源管理器”中的表示层上单击鼠标右键, 在弹出的快捷菜单中选择“设为启动项目”命令, 将表示层设置为启动项目。

将表示层设置为启动项目后, 表示层 (站点) 自动创建了Bin文件夹, 该文件夹下生成了:Business Logic Layer.dll、Business Logic Layer.pdb、Data Access Layer.dll、Data Access Layer.pdb、Models.dll和Models.pdb等6个文件, 如图14所示。

8.NET 篇八

摘要:采用ASP.NET(C#)编写个人博客网站,易于管理,可重用性强。

关键词:ASP.NF;博客;B/S;C#

一、引言

博客Blog是Weblog的缩写,中文意思是“网络日志”,它通常是由简短且经常更新的帖子所构成,并且按照年份和日期的倒序排列。

本博客网站采用ASP.NET(C#)编写,以SQL Server为后台数据库,利用微软.NET编辑工具Visual Studio 2005来创建网站,利用ADO.NET接口技术连接数据库,对数据库操作。11l本博客网站分网站管理员、博客用户和游客三类对象。

二、技术

ASP.Net与现存的ASP保持语法兼容,实际上我们可将现有的ASP源码文件扩展名“.asp”改为“aspx”,然后配置在支持ASPNet运行时的IIS服务器的Web目录下,即可获得ASP.Net运行时的全部优越性能。目前ASPNet的开发语言有三种:C#,Visual Basic.Net和Jscript。本网站的开发使用的是C#。

本系统采用两层架构,web展示层的每个页面可以直接对数据库进行访问,而不用过多的实现数据库的连接和操作接口。其开发和调试的过程简单,但是日后的维护相当烦琐。数据库是系统的最底层。数据访问模块包含在web展示层中。Web展示层通过数据访问模块访问数据库。数据访问模块一般封装数据库的查询、添加、更新、删除等操作,同时还为web展示层提供访问数据库的接口。

本系统采用ASP.Net应用程序最基本的两层架构模式,各层的功能介绍如下:Web展示层是系统最高层,向用户展示各种界面。用户通过界面对系统进行操作,并实现用户各种操作信息的添加、修改和删除,与数据库直接关联。其数据库模块封装了对数据库的所有操作,包括数据的添加、修改、删除和查询。数据库则用来存储本系统的所有数据。

三、实现

博客系统实现了博客用户和游客之间基于网络的信息交流与沟通。系统的用户主要有三种:博客用户、游客和系统管理员,博客用户先注册才能使用本系统。系统主要由四个模块构成:

1评论:评论序号、评论用户ID、评论用户昵称、评论标题、评论内容、评论时间、评论的文章序号

2文章信息:文章序号、文章作者、文章标题、摘要、文章内容、文章发表日期、文章人气、回复、文章类型编号、文章类型名称、文章回复数

3留言:留言编号、网友昵称、留言标题、个人主页、留言内容、留言时间、留言回夏

4链接:链接编号、链接名称、链接地址

本系统根据用户登录身份不同,赋予不同的管理权限。管理员可以实现管理员密码的修改、用户删除和查询及删除和浏览文章;博客用户可以实现对自己信息的修改,管理文章、分类、链接和密码的修改;游客只能够实现浏览博客文章,匿名发表评论,给博客用户留言和注册成为博客用户。

在实现过程中,登录模块首页为login aspx文件,为了保证用户登录后不再重复显示登录窗口,设置了一个Session变量添加登录信息和自定义验证控件RequiredFieodVa,idater对用户名进行检查。注册的用户两次输入的密码要求必须一致,由CompareValidator控件控制。另外,在用户名字段加入了CompareVa,idator控件,对其编程验证数据库中是否已经存在填写的用户名,若已经存在,提示用户名存在;若不存在,注册条件均符合,则提示注册成功并返回用户登录界面。

数据库中的表关联关系:分类表ST_class的ST_c_id字段为主键,文章表ST—news的ST_c_id宇段为外键。文章表ST news的S7_n_id字段为主键,回复信息表ST_replav的ST_n_id字段为外键。

公用模块编写,数据库连接编写。为了应用程序方便移植,为版本控制提供更好的支持,可以在应用程序配置文件(也就是WEB CONFOG)中设置数据库连接信息。添加如下语句:

[注]数据库名、用户名、密码、服务器地址都必须和运行或调试的计算机上的保持一致。

四、结论

【NET】推荐阅读:

上一篇:小学语文教学趋势下一篇:人身损害具体赔偿项目的若干问题论文

热搜文章

    相关推荐