ASP.NET编程:基于ASP.NET MVC框架开辟Web论坛使用程序仓酷云
C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。【IT168专稿】我想经由过程本系列文章从头至尾构建一个完全的ASP.NETMVC论坛使用程序,终极的目标是切磋和推进利用ASP.NETMVC框架构建使用程序的最好理论。1、简介
在本篇中,我想先从全局方面先容一下论坛使用程序的整体方针。在本篇中,我将会商一下制止代码坏滋味的主要性,还将会商怎样使用软件计划准绳和形式来匡助你编写合适将来改动的富有弹性的代码。最初,我还将论证一下为何我选择利用测试驱动开辟体例构建本系列文章中的论坛使用程序。
2、甚么样的软件是好的软件
我不想仅仅为了构建论坛使用程序而恣意构建此论坛使用程序。我的方针是尽量构建最棒的论坛使用程序。
这个方针当即激发如许一个成绩:甚么样的软件是好的软件?是甚么招致一个使用程序比另外一个使用程序更好一些或更差一些呢?在事前没有一个关于“好软件”的界说之前,我没法声明我构建了一个完善的论坛使用程序。
因而,上面是我关于“好软件”的界说。
3、好软件是计划得易于修正的软件
存在多种缘故原由大概必要你改动软件:
1)你大概必要在一个现有软件上增加新的特性
2)你大概必要修正一个现有软件中的毛病
3)你大概必要优化现有软件
4)你大概必要改善现有软件的计划
一样平常说来,计划糟的软件是难于改动的。有些软件计划得云云糟,乃至于每一个人都惧怕碰一碰它。我们人人应当都利用过计划得糟的软件。当软件欠好时,你很但愿它爽性走开;乃至假如无机会的话,你大概想重新入手下手从头编写这款软件。
4、制止代码坏滋味
Robert和MicahMartin把糟的软件部分形貌为代码坏滋味。以下代码坏滋味意味着此软件的誊写是相称糟的:
1)僵化性(Rigidity)—僵化的软件是如许的软件,当你在某个地位作一修改时即请求对体系作出响应的一系列的变动。
2)懦弱性(Fragility)—懦弱的软件是如许的软件,你在某个地位作一修改时即打断别的多处的一般运转。
3)不用要的庞大性—不用要的庞大软件是指过分计划的软件,其目标是为了处置任何大概的改动。
4)不用要的反复—不用要的反复软件中包括大批的反复性代码。
5)流畅性—流畅的软件是指难于了解的软件。
【注重】上述这些代码滋味在Micah和RobertMartin的出名《AgilePrinciples,Patterns,andPracticesinC#》中失掉充实的形貌。在此,激烈倡议读者读一下这本书。
注重,上述这些代码滋味都与一切的代码改动相干联。每个这些代码滋味都将妨害代码的改动。
5、软件计划准绳
遵守优秀的软件计划准绳,将有助于编写软件易于顺应将来变动的软件。软件计划准绳有多少,也不尽不异。比方,Cunningham和CunninghamWiki形貌面向对象计划的11个准绳:
http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign。
个中提到的面向对象计划的前五个准绳与RobertMartin及他的儿子MicahMartin编著的《AgilePrinciples,Patterns,andPracticesinC#》中所主意的软件计划准绳是分歧的。别的,RobertMartin还在ObjectMentor启示的博客上会商了这些准绳:
http://www.objectmentor.com/resources/publishedArticles.html。
别的,我还发明有别的两本书中也供应了有关软件计划准绳的极为有效的信息。第一本是EricFreeman,ElisabethFreeman,KathySierra,BertBates编著的《HeadFirstDesignPatterns》;第二本是BrettMcLaughlin,GaryPollice和DavidWest编著的《HeadFirstObject-OrientedAnalysisandDesign》。只管这些书所会商的准绳与RobertMartin的提法其实不非常不异,可是它们却非常邻近。
不外实在的情形是,上述一切这些针对软件计划准绳睁开会商的资本都源自RobertMartin的事情。RobertMartin并非一切准绳的创造者,可是他切实其实是第一个把这些准绳搜集到一同的人。上面列出这些软件计划准绳:
[*]SRP—单一义务准绳
[*]OCP—开关准绳
[*]LSP—Liskov交换准绳
[*]ISP—接口断绝准绳
[*]DIP—依附颠倒准绳
上述这个准绳的汇合恰好对应于缩略词SOLID。
上面的软件计划准绳列表来自于《HeadFirstDesignPatterns》一书:
[*]封装变更
[*]多用组合罕用承继
[*]基于接口而不是基于完成编程
[*]在交互的对象间勉力完成松耦合
[*]类应当为了扩大而开放,可是为了修正而封闭
[*]依附于笼统,而不要依附于详细类
[*]仅仅对你的伴侣扳谈
[*]不挪用我,我们会挪用你
[*]一个类应当唯一一个改动的来由
固然,上述准绳之间也存在很多的堆叠的地方。比方,“单一义务”准绳与前面的“一个类应当唯一一个改动的来由”这一准绳是相分歧的。但是,它们所夸大的重点仍是有所分歧。更多的细节在此方便赘述。
一切这些计划准绳的真正念头在于,勉力构建出可以顺应变更的软件。上述准绳分离关于分歧的准绳举行响应的论述,终极目标也不外是为了创立出能够经得起工夫测试的软件。
6、软件计划形式软件计划形式形貌的是使用软件计划准绳所遵守的战略的成绩。换句话说,一个软件计划准绳是一个好的头脑,而一个软件计划形式是你用于完成这类好的头脑的工具。
软件计划形式的头脑最后源于书本《DesignPatterns:ElementsofReusableObject-OrientedSoftware》。恰是这本书为别的很多形貌软件计划形式书的创作带往灵感。
比方,另外一本书《TheHeadFirstDesignPattern》就以一种更容易于了解的体例向人们先容了GOF所著的书(即下面的那本《DesignPatterns:ElementsofReusableObject-OrientedSoftware》)中所引进的计划形式。这本书中统共具体先容了以下14种软件计划形式:
[*]Strategy
[*]Observer
[*]Decorator
[*]Factory
[*]Singleton
[*]Command
[*]Adaptor
[*]Fa 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 众所周知,Windows以易用而出名,也因此占据不少的服务器市场。 提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。 这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。 ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
页:
[1]