仓酷云

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

[学习教程] ASP.NET网页编程之代码左券组件利用详解仓酷云

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:26:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
也许C#刚上市的时候有些抄袭net网页编程吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但net网页编程在模仿C#,而且他从来都没能跟得上C#的脚步。InfoQ于不久前宣布了.NET代码左券组件供应下载的旧事。这个组件是对.NET的主要增补,此次我们将供应更加具体的内容。
假如要在.NET4.0公布之前利用代码左券,我们能够在VisualStudio项目中援用程序集Microsoft.Contracts.dll,该程序集安装在%PROGRAMFILES%/Microsoft/Contracts/PublicAssemblies目次下。.NET4.0会在mscorlib.dll中包括左券组件。我们能够指定左券考证,可在编译时(静态)或在运转时(静态)实行校验。左券包括几品种型:前置前提(Preconditions)、后置前提(Postconditions)、对象稳定量(ObjectInvariants)、断言(Assertions)、假定(Assumptions)、量词(Quantifiers)、接口左券(InterfaceContracts)和笼统办法左券(AbstractMethodContracts)。
前置前提利用Contract.Requires()举行界说,假如在编译时利用了标记(Symbol)CONTRACTS_FULL或CONTRACTS_PRECONDITIONS,那末IL中就会包括其编译了局。比方:
  1. Contract.Requires(x!=null);
复制代码
以下所示,前置前提一般作为办法体中的参数考证,以下所示:
  1. publicRational(intnumerator,intdenominator){Contract.Requires(denominator!=0);this.numerator=numerator;this.denominator=denominator;}
复制代码
假如不切合Contract.Requires()指定的前提,就会挪用Debug.Assert(false),然后挪用Environment.FailFast()。假如不论在编译时利用哪一个标记,您都但愿程序会合包括前置前提,那末可使用Contract.RequiresAlways()。
当办法停止时,后置前提暗示其了局必要满意的左券。它经由过程Contract.Ensures()办法指定,以下例所示:
  1. publicintDenominator{get{Contract.Ensures(Contract.Result()!=0);returnthis.denominator;}}
复制代码
固然仿佛在前往了局之前就指定了前提,实践它仍是会在前往了局以后,挪用者失掉了局之行进行考证。
对象稳定量则为每一个实例指定前提。
  1. [ContractInvariantMethod]protectedvoidObjectInvariant(){Contract.Invariant(this.denominator!=0);}
复制代码
至于其他范例的左券,断言暗示为Contract.Assert(),假定则暗示为Contract.Assume()。一个失利的Assert()会挪用Debug.Assert(false)。假定与运转时断言类似,分歧的地方在于静态查验的体例。假定用于指定“希冀”应当切合的前提,而因为某些限定,该前提没法失掉编译器的考证。
接口左券为接口指定前提。它们利用在联系关系于接口的自力类上,由于接口办法只能声明,而不克不及具有办法体。关于笼统办法左券一样云云。
以下为一个利用左券的类:

<br>
可用链接:InfoQ关于代码左券的旧事,代码左券下载(MSI),代码左券的在线文档(PDF),微软研讨院的代码左券网站。
检察英文原文:DetailsonUsingCodeContracts
本文出自:http://www.infoq.com/cn/news/2009/03/Code-Contracts-Details
听03很多师兄说主讲老师杭城方讲课很差就连旁听也没有去了)
冷月葬花魂 该用户已被删除
沙发
发表于 2015-1-21 06:23:17 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-21 06:23:17 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
小女巫 该用户已被删除
地板
发表于 2015-1-25 23:51:11 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
透明 该用户已被删除
5#
发表于 2015-2-4 04:02:40 | 只看该作者
那么,ASP.Net有哪些改进呢?
爱飞 该用户已被删除
6#
发表于 2015-2-5 22:20:58 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
柔情似水 该用户已被删除
7#
发表于 2015-2-6 15:55:09 | 只看该作者
现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
老尸 该用户已被删除
8#
发表于 2015-2-10 10:09:30 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
再现理想 该用户已被删除
9#
发表于 2015-2-28 19:33:19 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
因胸联盟 该用户已被删除
10#
发表于 2015-3-3 22:49:46 | 只看该作者
现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
admin 该用户已被删除
11#
发表于 2015-3-11 13:52:53 | 只看该作者
现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
小魔女 该用户已被删除
12#
发表于 2015-3-18 15:22:54 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
若相依 该用户已被删除
13#
发表于 2015-3-26 01:52:45 | 只看该作者
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 23:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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