仓酷云 发表于 2015-1-18 11:26:11

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

也许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中就会包括其编译了局。比方:
Contract.Requires(x!=null);以下所示,前置前提一般作为办法体中的参数考证,以下所示:
publicRational(intnumerator,intdenominator){Contract.Requires(denominator!=0);this.numerator=numerator;this.denominator=denominator;}假如不切合Contract.Requires()指定的前提,就会挪用Debug.Assert(false),然后挪用Environment.FailFast()。假如不论在编译时利用哪一个标记,您都但愿程序会合包括前置前提,那末可使用Contract.RequiresAlways()。
当办法停止时,后置前提暗示其了局必要满意的左券。它经由过程Contract.Ensures()办法指定,以下例所示:
publicintDenominator{get{Contract.Ensures(Contract.Result()!=0);returnthis.denominator;}}固然仿佛在前往了局之前就指定了前提,实践它仍是会在前往了局以后,挪用者失掉了局之行进行考证。
对象稳定量则为每一个实例指定前提。
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编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

透明 发表于 2015-2-4 04:02:40

那么,ASP.Net有哪些改进呢?

爱飞 发表于 2015-2-5 22:20:58

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

柔情似水 发表于 2015-2-6 15:55:09

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

老尸 发表于 2015-2-10 10:09:30

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

再现理想 发表于 2015-2-28 19:33:19

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

因胸联盟 发表于 2015-3-3 22:49:46

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

admin 发表于 2015-3-11 13:52:53

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

小魔女 发表于 2015-3-18 15:22:54

碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。

若相依 发表于 2015-3-26 01:52:45

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
页: [1]
查看完整版本: ASP.NET网页编程之代码左券组件利用详解仓酷云