山那边是海 发表于 2015-1-18 11:17:53

ASP.NET网页设计不必IDE写C#的Hello World仓酷云

简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而net网页编程是公开了。用VisualStudio等IDE写C#的HelloWorld十分复杂,但离开了IDE你能不克不及打印出HelloWorld呢?这不是说事情时离开IDE,而是进修一下CLR的实行模子.
HelloWorld


[*]新建一个记事本,输出以下代码,另存为HelloWorld.txt.
usingSystem;

namespaceHelloWorld
{
classProgram
{
staticvoidMain(string[]args){
Console.WriteLine("HelloWorld!");
Console.ReadKey();
}
}
}
[*]翻开VisualStudio2008(2005,2010)命令提醒程序



[*]却换到HelloWorld.txt的目次


[*]运转命令:csc/out:Hello.exeHelloWorld.txt

如偶然外,将会编译出Hello.exe,能打印出HelloWorld.
CLR实行模子-编译期

CLR程序的实行历程大抵分为两步,编译期和运转期,编译期历程大抵以下图:

个中编译期逻辑上也可分为两步:

[*]CLR(C#)编译器承受源代码文件,并编译为托管模块.托管模块包含IL代码,元数据,CLR优等构成部分.下面的例子中就是将HelloWorld.txt编译成托管模块.
[*]一样平常程序集城市包括良多源代码文件(这里只要HelloWorld.txt)和资本文件,第二步就是把各个源代码文件和资本文件对应编译了局兼并成程序集.
实行下面两步就能够失掉一个XX.dll或XX.exe的程序集.就像下面的Hello.exe.
编译器怎样晓得要编译成托管模块仍是资本文件?实际上是必需明白告知编译器每一个文件的怎样编译,这个对应VisualStudio的文件属性的天生操纵.
右击任何VisualStudio办理资本计划的文件-->属性-->天生操纵:

指定Class1为嵌进的资本,用ILSpy检察会发明只是把Class1嵌进到程序会合,称号为:定名空间.文件名:

你乃至能够将一张图片设为编译让编译器试图往编译它,不外会报错.
运转期

下面天生了程序集,程序集内的是IL代码,它还不是可运转的代码.IL是与CPU有关的呆板言语.直到程序集被挪用,才会由JIT(Just-in-Time,及时)编译器编译为本机代码(CPU指令).在运转时,CLR实行以下步骤:

[*]反省程序集的平安特征;
[*]在内存平分配空间;
[*]把程序会合的可实行代码发送给JIT编译器,把个中一部分编译本钱机代码(CPU指令).
程序集的可实行代码在必要的时分由JIT编译编译,然后本机代码(CPU指令)就被缓存以备厥后的程序中实行.一旦使用程序停止,编译好的本机代码也会被抛弃.
比方假如将下面的代码改成:
staticvoidMain(string[]args){Console.WriteLine("Hello");Console.WriteLine("World!");Console.ReadKey();}第一个WriteLine必要先JIT编译,再实行.而因为已编译WriteLine的代码,以是第二个WriteLine会间接实行内存块中的代码,跳过JIT编译.
因为分派内存,JIT编译历程等,以是程序会在第一次运转时形成一些功能丧失,写ASP.NET时这类感到特变分明,按了F5会等好久才会显现首页.
上面摹拟感觉这个历程.用一年夜堆类延伸内存分派的工夫,参考这个文件HelloWorld.css(博客园不撑持txt格局):

再次运转命令:csc/out:Hello.exeHelloWorld.txt,失掉Hello.exe,实行时发明有必定的提早才会打印出HelloWorld.
天生本机代码

利用.NET供应的NGen.exe,能够将IL代码编译本钱机代码.能够办理下面的成绩.NGen.exe有两个感化:
加速使用程序的启动速率.由于代码已编译为本机代码,运转时不必要再花工夫编译
那做企业软件是不是最好用J2EE?

愤怒的大鸟 发表于 2015-1-20 19:47:46

但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。

飘飘悠悠 发表于 2015-1-25 23:17:30

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。

乐观 发表于 2015-2-3 23:30:40

由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。

透明 发表于 2015-2-4 23:16:53

Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。

莫相离 发表于 2015-2-10 22:48:00

微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。

若天明 发表于 2015-2-11 15:09:16

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

金色的骷髅 发表于 2015-2-12 03:09:21

逐步缩小出错代码段的范围,最终确定错误代码的位置。

再见西城 发表于 2015-2-16 22:25:53

但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。

海妖 发表于 2015-2-21 15:12:11

JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。

再现理想 发表于 2015-2-23 13:05:11

是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。

小女巫 发表于 2015-2-25 13:38:48

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

若相依 发表于 2015-3-7 21:08:33

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。

只想知道 发表于 2015-3-11 21:26:06

通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。

第二个灵魂 发表于 2015-3-28 05:11:05

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
页: [1]
查看完整版本: ASP.NET网页设计不必IDE写C#的Hello World仓酷云