asp与asp.net有何区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp与asp.net有何区别?相关的知识,希望对你有一定的参考价值。
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:1、代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
2、代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
3、弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上php/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
那么,ASP.Net有哪些改进呢?
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++ , VB , JS等等,当然,最合适的编程语言还是MS为.Net Frmaework专门推出的C(读c sharp),它可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
ASP(Active Server Pages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。此外,它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
之后,微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
ASP与ASP.NET的区别:
1.开发语言不同
ASP仅局限于使用non-type脚本语言来开发,用户给WEB页中添加ASP代码的方法与客户端脚本中添加代码的方法相同,导致代码杂乱。
ASP.NET允许用户选择并使用功能完善的strongly-type编程语言,也允许使用潜加巨大的.NET Framework。
2.运行机制不同
ASP是解释运行的编程框架,所以执行效率加较低。
ASP.NET是编译性的编程框架,运行是服务器上的编译好的公共语言运行时库代码,可以利用早期绑定,实施编译来提高效率。
3.开发方式
ASP把界面设计和程序设计混在一起,维护和重用困难。
ASP.NET把界面设计和程序设计以不同的文件分离开,复用性和维护性得到了提高。
ASP.NET更好些 参考技术A
ASP.NET和ASP的区别有以下几点:
1、开发语言不同。
ASP使用non-type脚本语言来开发应用程序或web网页,在web端添加代码和在客户端添加代码一致,导致代码杂乱无章。
ASP.NET使用strongly-type编程语言开发应用程序或web网页,也可以使用.NET Framework框架开发,代码一致性较ASP好了许多。
2、运行方式不同。
ASP是解释运行的编程框架,使用js等脚本语言,运行速度慢。
ASP.NET是编译性的编程框架,运行效率高且使用的是服务器端预先编译好的代码库。
3、开发方式不同。
ASP是面向过程设计语言,代码前后端不分离,写在同一个页面,代码杂乱无章,维护性和可重用性较低。
ASP.NET则是面向对象设计语言,代码前后端分离,一部分专注于编写前端代码,一部分专注于编写相应的后台功能,代码井然有序,易维护且可重用性高。
4、复杂性不同。
ASP复杂性低,代码容易理解,但是开发效率不高。
ASP.NET则较为复杂,但是具有相应的框架,程序设计快速且思路清晰。
参考技术B asp.net肯定比asp有
特别多明显的优势
asp.net不仅仅是1个新的版本,而是web应用程序编程方面的1个全新的概念。asp.net
并不是对asp的改进,设计他的初衷是为用户提供尽可能的提供最好的应用程序架够。这就意味着asp.net
和asp
不兼容。(asp.net
和asp是互不干扰的。处理目前的asp页仍然是用和之前一样的机制,而新的价构则负责处理asp.net页,由于他们的扩展名不一样.aspx)
asp
1。asp
是一种脚本语言,他重要依靠javascript
和vbscript
可是他是经过解释的
解释语言有2个缺点
a
缺乏强类型(这类类型象由vb和c/c++这样的了类型语言支持)
b
缺乏编译环境。asp可以高速缓存代码,但他仍然要解释,并且这将导致一性能和伸缩性的问题
2
asp并木有为应用程序提供1个固有的架构。
3。象组件化,代码复用,快速开发等这样的技术人员提供了极大的便利,但在asp中却缺乏这种支持
asp.net
1
asp.net的四个目标
使代码更清楚
提高可部署性,可伸缩性,安全性以及可靠性
为不一样的游览器和设备提供更好的支持
支持一种全新的web应用程序
2
asp.net
支持多语言
asp曾在脚本引擎方面受到了限制,而.net
framework本质上支持多语言。
3
用asp的1个问题在于页面容易的定义了1个大的函数,该函数开始与页面的开始,结束于页面的末尾,不管是页面的内容是存html还是asp生成的html,他都是按照页面顺序显示的。因此我们的代码是依赖于他们的位置,并且没方法将html控件作为目标,除非将他们作为流的一部分显示
而asp.net处理了这个问题,方法是引用1个声明的基于服务器的模型。这类控件可以逆象编程,也可以是客户端驱动(Drive)的事件。
把1个html控件变成1个服务器控件
只需要加上runat=server
用id属性来标识他
4
asp.net
真正不存在无类型,这类语言的的可解释性。
asp.net已经不在支持vbscript了,但他仍然
支持
jscript。
5
代码和内容的分离
可以通过“代码内联”
和“后台编码”
实现
6
asp.net的配置由2个要素
决定
a
标准iis设置
b
配置文件(通用文件machine.config
他包含了所哟asp.net应用程序的默认值)
同时每一个asp.net应用程序还可以有自己的web.config
文件,来重写这类默认值。
7
部署
每一个asp.net应用程序都是独立的,其中包括配置文件和组件。在.net
framework中
组件不要注册,用户只需要将他们拷贝到目标位置即可(可是和
com/com+
组件进行交互时,他们仍然要注册) 参考技术C ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
1、代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
2、代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 参考技术D ASP的不足:
1、它是被解释执行的,并不是被编译执行的,所以比较慢;
2、它没有提供一个很好的开发环境;
3、不支持类,很难封装复杂的外理逻辑;
4、可随意加入脚本,很灵活,但也导致了不可维护性。
ASP.NET相应的优点:
1、它是被编译后再执行的,所以效率要比ASP高很多;
2、它有很高的开发环境,如VS.NET
2005,更容易调试程式;
3、支持类,支持面向对象,可以使用.NET
Framework
更好的进行开发;
4、它使设计和开发分开过来,如界面设计放在.aspx文件中,开发则放在.cs
或
.vb等文件中。这样更有利于程式的维护。
IIS/ASP.NET 的所有用户帐户是啥?它们有何不同?
【中文标题】IIS/ASP.NET 的所有用户帐户是啥?它们有何不同?【英文标题】:What are all the user accounts for IIS/ASP.NET and how do they differ?IIS/ASP.NET 的所有用户帐户是什么?它们有何不同? 【发布时间】:2011-08-09 09:54:14 【问题描述】:在安装了 ASP.NET 4.0 的 Windows Server 2008 下,有一大堆相关的用户帐户,我不明白哪个是哪个,它们有何不同,以及哪个是我的应用程序运行的真正的用户帐户在下面。这是一个列表:
IIS_IUSRS IUSR 默认应用程序池 ASP.NET v4.0 NETWORK_SERVICE 本地服务。什么是什么?
【问题讨论】:
使用 Windows Server 2012 和 ASP.NET 4.0 或更高版本? 【参考方案1】:这是一个非常好的问题,遗憾的是,在作为 Web 开发人员和设置 IIS 的背景下,许多开发人员并没有就 IIS/ASP.NET 安全性提出足够的问题。就这样吧……
涵盖列出的身份:
IIS_IUSRS:
这类似于旧的 IIS6 IIS_WPG
组。它是一个内置组,其安全配置使得该组的任何成员都可以充当应用程序池身份。
IUSR:
此帐户类似于旧的 IUSR_<MACHINE_NAME>
本地帐户,它是 IIS5 和 IIS6 网站的默认匿名用户(即通过网站属性的目录安全选项卡配置的用户)。
有关IIS_IUSRS
和IUSR
的更多信息,请参阅:
Understanding Built-In User and Group Accounts in IIS 7
DefaultAppPool:
如果应用程序池配置为使用应用程序池标识功能运行,则将动态创建一个名为 IIS AppPool\<pool name>
的“综合”帐户以用作池标识。在这种情况下,将为池的生命周期创建一个名为 IIS AppPool\DefaultAppPool
的合成帐户。如果您删除池,则此帐户将不再存在。对文件和文件夹应用权限时,必须使用IIS AppPool\<pool name>
添加这些权限。您也不会在您的计算机用户管理器中看到这些池帐户。有关详细信息,请参阅以下内容:
Application Pool Identities
ASP.NET v4.0:
-
这将是 ASP.NET v4.0 应用程序池的应用程序池标识。请参阅上面的DefaultAppPool
。
NETWORK SERVICE:
-
NETWORK SERVICE
帐户是 Windows 2003 中引入的内置标识。NETWORK SERVICE
是一个低权限帐户,您可以在该帐户下运行应用程序池和网站。在 Windows 2003 池中运行的网站仍然可以模拟该网站的匿名帐户(IUSR_ 或您配置为匿名身份的任何内容)。
在 Windows 2008 之前的 ASP.NET 中,您可以让 ASP.NET 在应用程序池帐户(通常为 NETWORK SERVICE
)下执行请求。或者,您可以将 ASP.NET 配置为通过本地 web.config
文件中的 <identity impersonate="true" />
设置模拟站点的匿名帐户(如果该设置被锁定,则需要由管理员在 machine.config
文件中完成)。
设置 <identity impersonate="true">
在使用共享应用程序池的共享主机环境中很常见(与部分信任设置结合使用以防止模拟帐户解除)。
在 IIS7.x/ASP.NET 中,模拟控制现在通过站点的身份验证配置功能进行配置。因此,您可以配置为作为池身份、IUSR
或特定的自定义匿名帐户运行。
LOCAL SERVICE:
LOCAL SERVICE
帐户是服务控制管理器使用的内置帐户。它在本地计算机上具有最低权限集。它的使用范围相当有限:
LocalService Account
LOCAL SYSTEM:
你没有问这个问题,但为了完整起见,我添加了。这是一个本地内置帐户。它拥有相当广泛的特权和信任。切勿将网站或应用程序池配置为在此身份下运行。
LocalSystem Account
实践:
实际上,保护网站的首选方法(如果网站有自己的应用程序池 - 这是 IIS7 的 MMC 中新网站的默认设置)是在Application Pool Identity
下运行。这意味着将站点在其应用程序池的高级设置中的身份设置为Application Pool Identity
:
然后您应该在网站中配置身份验证功能:
右键单击并编辑匿名身份验证条目:
确保选择了“应用程序池标识”:
当您应用文件和文件夹权限时,您授予应用程序池身份所需的任何权限。例如,如果您为ASP.NET v4.0
池权限授予应用程序池标识,那么您可以通过资源管理器执行此操作:
单击“检查名称”按钮:
或者您可以使用ICACLS.EXE
实用程序来执行此操作:
icacls c:\wwwroot\mysite /grant "IIS AppPool\ASP.NET v4.0":(CI)(OI)(M)
...或者...如果您站点的应用程序池被称为BobsCatPicBlog
then:
icacls c:\wwwroot\mysite /grant "IIS AppPool\BobsCatPicBlog":(CI)(OI)(M)
我希望这有助于解决问题。
更新:
我刚刚从 2009 年偶然发现了这个出色的答案,其中包含一堆有用的信息,非常值得一读:
The difference between the 'Local System' account and the 'Network Service' account?
【讨论】:
不同意使用同一用户进行匿名身份验证和应用程序池身份...如果您需要授予 apppoolidentity 对文件夹的写入权限... @giammin - 为什么不呢?除非您有特殊情况,否则使用应用程序池标识是最安全的方法,前提是每个站点都在自己的应用程序池中。讨厌“诉诸权威”,但做了 15 年的共享网络主机工程师和安全人员,这种方法在 IIS7+ 上是轻而易举的事。 @Kev 只是我不喜欢将网站上的写权限授予匿名用户 您的应用程序池可以通过使用 IIS AppPool\以上是关于asp与asp.net有何区别?的主要内容,如果未能解决你的问题,请参考以下文章