仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 834|回复: 12
打印 上一主题 下一主题

[学习教程] ASP.NET编程:口语C#:托付与事务仓酷云

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:26:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)net网页编程是开放的,相同的工具就会有很多公司在做,加上net网页编程已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。系列文章索引:《口语C#
我们进来用饭,老是喜好往人多买卖好的馆子,由于如许的馆子常常滋味和服务都对照好,而那些买卖冷僻的馆子常常置之不理。买卖好的馆子当然有其优点,但往如许中央就餐又老是必要先列队等地位,以是排号是对照盛行的体例。固然,假如这家馆子的坐位充分,就不必要排号,可是上菜又对照慢。不管如何,假如厨房一时半会儿没法做好你的菜,那末你就只好耐烦地守候,在这个时分你能够做本人的事变,跟伴侣谈天、玩手机大概看玉人,没有人会傻傻地站在厨房门口目不斜视地盯着厨师手中的锅铲直到做好本人的菜。
在软件开辟事情中,我们也经常会碰到相似的成绩,我们向某个服务器(或相似于服务器的工具)发送一个哀求,必要猎取到反应信息后才干持续某项事情,可是假如这项事情不是最主要的大概今朝独一的事情项,我们完整没有需要让这个守候历程拦阻全部软件的利用,假如如许做了,那将取得十分糟的用户体验,就像我们看到有人一动不动地站在厨房门口等菜一样。
C#供应了托付机制来完成异步处置,也就是说,你向服务器发送哀求今后就能够把精神用在做其余事变上,服务器前往哀求后使用程序会主动挪用你之前布置好的办法来处置接上去的事情。换句话说,你点好了菜,接上去就能够和伴侣谈天,厨房做好了菜不管是叫号仍是由服务员端到你桌下去,归正不必你再费心了。
上面我们先创立一个主顾类:
  1. 1:publicclassCustomer
复制代码
  1. 2:{
复制代码
  1. 3:publicintID{get;privateset;}
复制代码
  1. 4:
复制代码
  1. 5:publicCustomer(intid)
复制代码
  1. 6:{
复制代码
  1. 7:this.ID=id;
复制代码
  1. 8:}
复制代码
  1. 9:}
复制代码
在这个场景中,我们不必要付与Customer类太多属性,我们假定这家餐馆接纳的体例是叫号而不是由服务员把菜端到每一个主顾桌上,以是Customer类只需有个ID号就够了。
接上去我们来完成这个叫号的办法,固然很复杂,可是一定只要不是一家餐馆接纳这类体例,因而我们把这个办法放在独自的一个类内里:
  1. 1:publicclassDelegateDemo
复制代码
  1. 2:{
复制代码
  1. 2:{1
复制代码
  1. 2:{2
复制代码
  1. 2:{3
复制代码
  1. 6:{
复制代码
  1. 2:{5
复制代码
  1. 8:}
复制代码
  1. 9:}
复制代码
  1. 2:{8
复制代码
然后我们来创立最主要的类,餐厅类:
  1. 2:{9
复制代码
  1. 2:{
复制代码
  1. 3:publicintID{get;privateset;}1
复制代码
  1. 4:
复制代码
  1. 3:publicintID{get;privateset;}3
复制代码
  1. 6:{
复制代码
  1. 3:publicintID{get;privateset;}5
复制代码
  1. 3:publicintID{get;privateset;}6
复制代码
  1. 3:publicintID{get;privateset;}7
复制代码
  1. 3:publicintID{get;privateset;}8
复制代码
  1. 3:publicintID{get;privateset;}9
复制代码
  1. 4:0
复制代码
  1. 4:1
复制代码
  1. 4:2
复制代码
  1. 4:3
复制代码
  1. 4:4
复制代码
  1. 4:5
复制代码
  1. 4:6
复制代码
  1. 4:7
复制代码
  1. 4:8
复制代码
  1. 4:9
复制代码
  1. 5:publicCustomer(intid)0
复制代码
  1. 5:publicCustomer(intid)1
复制代码
  1. 5:publicCustomer(intid)2
复制代码
在这个餐厅类内里,有一个主顾的汇合,暗示以后餐厅里一切的主顾,我们先往这个汇合内里塞10个主顾出来以备待会儿叫号。然后我们在这个类内里声了然一个托付EnumCustomerCallback,并限制了它的函数署名。要利用这个托付的函数就必需切合该托付的署名情势。比方,该餐馆接纳叫号的体例,也就是说我们要把DelegateDemo.CallCustomers办法传送给EnumCustomerCallback托付,因而它俩的函数署名是分歧的。然后我们还界说了一个EnumCustomers办法,该办法的以EnumCustomerCallback托付为参数。该办法实行的内容是挨个遍历以后一切主顾,至于遍历到每一个主顾是接纳甚么样的体例,叫号仍是有服务员端菜呢,取决于传送给以后托付的办法来实行。
好,接上去我们来实行这段代码看看效果:
  1. 5:publicCustomer(intid)3
复制代码
  1. 2:{
复制代码
  1. 5:publicCustomer(intid)5
复制代码
  1. 5:publicCustomer(intid)6
复制代码
  1. 5:publicCustomer(intid)7
复制代码
  1. 5:publicCustomer(intid)8
复制代码
  1. 5:publicCustomer(intid)9
复制代码
  1. 8:}
复制代码
在这段代码的第4行,我们创立了一个托付实例callCustomers,并把叫号的办法DelegateDemo.CallCustomers传送给它坐位该餐馆上菜的体例。然后我们再把这个体例传送给该餐厅的遍历主顾的办法,让它在遍历到每一个主顾的时分接纳老板设定好了的体例往实行。
上面的截图就是以上代码实行的了局,喇叭里挨个叫出主顾的编号,关照他们往取餐:

<br>
接上去我们来先容一下事务机制,之以是把事务放在托付前面讲,是由于事务是在托付的基本上完成的。这一次我们站在厨师的角度来对待甚么是事务。
作为一个厨师,炒菜是最基础的事情内容,而关于餐厅的服务员来讲,能够拿着点菜单往叫厨师来炒菜,因而这就存在一个察看者形式,即公布和定阅的机制。服务员公布说:“主顾要个青椒肉丝”,厨师定阅说:“行,我即刻炒个青椒肉丝”。界说事务必要注重的是,事务必要两个参数,一是激发该事务的对象,本例中是卖力点菜的服务员;二是事务动静对象。个中,事务动静对象必需派生自System.EventArgs类。
因而我们先来计划一个点菜单作为事务动静类:
  1. 6:{1
复制代码
  1. 2:{
复制代码
  1. 6:{3
复制代码
  1. 6:{4
复制代码
  1. 6:{5
复制代码
在这个点菜单中,我们只包括了菜名和数目,由于关于厨师来讲,他只需晓得这两个基础信息就够了。接上去我们来界说这个厨师类:
  1. 6:{6
复制代码
  1. 2:{
复制代码
  1. 6:{8
复制代码
  1. 4:
复制代码
  1. 7:this.ID=id;0
复制代码
  1. 6:{
复制代码
  1. 7:this.ID=id;2
复制代码
  1. 7:this.ID=id;3
复制代码
  1. 9:}
复制代码
  1. 7:this.ID=id;5
复制代码
  1. 7:this.ID=id;6
复制代码
  1. 7:this.ID=id;7
复制代码
  1. 7:this.ID=id;8
复制代码
  1. 7:this.ID=id;9
复制代码
  1. 8:}0
复制代码
在厨师类中包括了一个Waitress对象,这暗示公布者,也就是叫厨师炒菜的服务员。第8行,厨师把本人增加进预订者列表,也就是说在服务员下票据的时分,厨房里得有现成的厨师才行,假如厨房里没有厨师,服务员公布了点菜事务也没人接招。
然后我们来看看事务的公布者,服务员:
  1. 8:}1
复制代码
  1. 2:{
复制代码
  1. 8:}3
复制代码
  1. 8:}4
复制代码
  1. 8:}5
复制代码
  1. 8:}6
复制代码
  1. 8:}7
复制代码
  1. 8:}8
复制代码
  1. 8:}9
复制代码
  1. 9:}0
复制代码
  1. 9:}1
复制代码
  1. 9:}2
复制代码
  1. 9:}3
复制代码
  1. 4:2
复制代码
  1. 9:}5
复制代码
  1. 9:}6
复制代码
  1. 9:}7
复制代码
  1. 9:}8
复制代码
  1. 9:}9
复制代码
  1. 1:publicclassDelegateDemo0
复制代码
在这个服务员类内里,我们起首界说了一个带有两个参数的托付和一个事务。托付的两个参数一个是公布者对象,另外一个是事务信息对象。然后,服务员类还供应了一个点餐办法,点餐办法创立一个事务信息类(点菜单),假如事务的定阅者不为空,也就是说厨房里今朝有厨师,那末服务员就会把这个点菜单发送已往,而事务的定阅者会有专门的办法来处置这个事务。
  1. 5:publicCustomer(intid)3
复制代码
  1. 2:{
复制代码
  1. 1:publicclassDelegateDemo3
复制代码
  1. 1:publicclassDelegateDemo4
复制代码
  1. 8:}5
复制代码
  1. 1:publicclassDelegateDemo6
复制代码
  1. 1:publicclassDelegateDemo7
复制代码
  1. 1:publicclassDelegateDemo8
复制代码
  1. 9:}
复制代码
来自:http://www.ckuyun.com/Autumoon/archive/2008/07/05/1236346.html
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。
沙发
发表于 2015-1-21 06:59:59 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-22 13:04:49 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
变相怪杰 该用户已被删除
地板
发表于 2015-1-25 10:51:44 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
小魔女 该用户已被删除
5#
发表于 2015-1-25 21:15:55 | 只看该作者
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
深爱那片海 该用户已被删除
6#
发表于 2015-1-25 23:24:02 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
透明 该用户已被删除
7#
发表于 2015-2-4 09:59:04 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
分手快乐 该用户已被删除
8#
发表于 2015-2-6 09:06:13 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
因胸联盟 该用户已被删除
9#
发表于 2015-2-15 21:03:47 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
老尸 该用户已被删除
10#
发表于 2015-3-4 13:40:56 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
谁可相欹 该用户已被删除
11#
 楼主| 发表于 2015-3-7 04:15:08 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
若天明 该用户已被删除
12#
发表于 2015-3-14 09:07:14 | 只看该作者
能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
小妖女 该用户已被删除
13#
发表于 2015-3-21 01:11:00 | 只看该作者
对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-11 06:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表