ASP.NET网页设计从 PHP 迁徙到 ASP.NET(2)
数据挖掘有点高深的,主要估计就是使用一些算法提取一些实用的数据。学好数据挖掘的话可以应聘baidu或者google,但是一般人家对算法的要求听高的。你最好还是学点应用型的吧。这种主要是研究型的。asp.net语法和罕见义务对照以下各部分对照了PHP和.NET的语法,并先容了怎样完成某些十分罕见的编程义务。
正文
PHP同意您利用C、C++和Unixshell款式语法在代码中拔出正文,正文唆使器中的任何内容都不会被实行。
一样平常来说,要在ASP.NET中正文出VisualBasic.Net代码,必要利用<%--翻开正文块,并利用--%>封闭正文块。
表2显现了这两种情况中的正文。
表2:服务器端正文
PHPASP.NET
/*
这是被正文出的
文本块
*/
<%--
这是正文
--%>
变量
固然PHP和VisualBasic.NET具有相似的言语机关,但语法却一模一样。因为VisualBasic.NET是基于OOP模子构建的,因此变量的声明要比PHP中变量的声明更松散(在PHP中声明变量时只需在变量名之前增加一个$标记)。
在VisualBasic.NET中声明变量时,要指定它的变量名和特征。变量的声明语句是Dim关头字。它的地位和内容决意了变量的特征。变量具有级别(比方部分变量和模块变量)、数据范例、保存期和可会见性。
固然这类办法最后看上往要比在PHP中指定变量庞大,但实践上它会给开辟职员带来便利。ASP.NET努力于匡助开辟职员创立牢靠的使用程序,而指定命据范例可使诸如变量清算、调试、非常和毛病处置和代码保护等义务变得加倍复杂。
表3显现了在两种情况中声明变量的示例。
表3:变量声明
PHPVisualBasic.NET
$head_count
$foo
$X
$obj
Dimhead_countASInteger
DimfooAsString
DimXasDate
DimObjasobject
声明数据范例
声明语句中的AS子句用于界说所声明变量的数据范例或工具范例。您能够为变量指定以下恣意范例:
基础数据范例,比方Boolean、Long或Decimal
复合数据范例,比方数组或布局
VisualBasic或其他使用程序中的工具范例或类,比方Label或TextBox
您能够在一个语句中声明多个不异范例的变量而不用反复数据范例。上面的语句将变量numStudents、numGTA和numProfessors声明为Integer范例:
DimnumStudents,numGTA,numProfessorsASInteger三个变量都是Integer范例。
有关数据范例的具体信息,请参阅DataTypes。有关面向工具编程的具体信息,请参阅Object-OrientedProgramminginVisualBasic。
声明保存期
变量的保存期是指变量可供利用的工夫段。利用Dim语句声明的部分变量仅在其实行过程当中存在。历程停止时,该历程的一切部分变量都将消散,这些变量的值也将丧失。
保存期这个观点很有效,由于它使开辟职员在创立使用程序时不用思索在年夜型使用程序中呈现的很多成绩,比方无效的内存办理。经由过程为变量选择准确的保存期,可使.NET对未在利用的变量实行清算操纵。
有关保存期的具体信息,请参阅Lifetime。
声明局限
部分变量是在历程(历程与函数相似)中声明的变量。非部分变量是在历程以外但在类或布局中声明的变量。
在类或布局中,非部分变量的种别取决于该变量是不是被共享。利用Shared关头字声明的变量是共享变量,它只要一个正本而且在类或布局的一切实例中共享。假如不利用Shared关头字,则该变量为实例变量,而且针对类或布局的每一个实例都将创立一个独自的变量正本。实例变量的给定正本仅可用于为之创立该正本的实例。
变量的局限是指能够援用它而不用限制其称号的一切代码集。变量的局限取决于声明变量的地位。位于给定地区中的代码可使用在该地区中界说的变量而不用限制其称号。声明局限时,将遵守以下划定规矩:
共享变量或实例变量的局限是在个中声了然该变量的布局或类。
部分变量的局限是在个中声了然该变量的历程。
可是,假如您在块中声明一个部分变量,则它的局限将只限于该块。部分变量在界说它的把持块中处于举动形态。把持块能够是历程、if语句和轮回语句等。
有关局限的具体信息,请参阅Scope。
声明可会见性
.NET撑持变量的可会见性,从而使开辟职员能够把持哪些代码可以会见特定的变量。比方,假如要为某个公式设置一些常数,而且要确保这些常数不会被它们地点类之外的其他代码变动,则可使用private按以下所示声明该变量:
PrivatemyConstantAsInteger
变量的可会见性由声明语句中利用的一个或多个关头字Dim、Public、Protected、Friend、ProtectedFriend或Private断定。开辟过程当中一般只利用public和private。
您可使用上述恣意关头字来声明模块、布局、类或实例变量。过程当中只同意利用Dim关头字,而且可会见性一直为private。
输入
PHP中输入数据的典范体例是利用echo()言语机关。ASP.NET中与此最类似的是Response.Write()办法(或<%=%>机关,它只是Response.Write()的简写情势)。表4显现了向页面写进值的基础语法。
表4:基础输入
PHPVisualBasic.NET
<?php
$hello="hihowareyou
";
echo$hello;
?
>
<%
DimHelloAsString="Hihowareyou"&vbcrlf
Response.Write(Hello)
%>
但是,这些用于向扫瞄器发送输入的办法次要是为了坚持与传统ASP的向后兼容性。ASP.NET供应了新的基于控件且面向事务的模子,您只需在服务器控件上设置属性便可将数据输入到扫瞄器中。经由过程这类手艺能够将结构与代码分明地分隔,从而简化了保护事情,而且在庞大情形下所需的代码要比PHP少很多。
<scriptlanguage="VB"runat="server">
SubPage_Load(senderAsObject,eAsEventArgs)
TheDate.Text=DateTime.Now
EndSub
</script>
Thecurrentdateis:<asp:Labelid="TheDate"runat="server"/>
此示例声了然一个名为TheDate的服务器端标签(Label)控件,并在该页面的Load事务中将此标签的Text属性设置为以后的日期和工夫。此代码的HTML输入与其他两个版原形同,分歧的是Label控件将本身出现为span标志(个中包括所设置的任何标签文本)。
前提处置
IF/ELSE
PHP具有多少前提处置表达式,比方for、while、switch和foreach,但最经常使用的是if/else表达式。VisualBasic.NET有几个十分相似的机关,其语法也很相似。表5对PHP和VisualBasic.NET中的等价前提逻辑举行了对照。
表5:基础前提逻辑
PHPVisualBasic.NET
if($a>$b){
print"aisbiggerthanb";
}elseif($a==$b){
print"aisequaltob";
}else{
print"aissmallerthanb";
}
Ifa>b
Response.write("aisbigger
thanb")
ElseIfa=bThen
Response.write("aisequalto
b")
Else
Response.write("aissmaller
thanb")
EndIf
切换
切换语句是年夜多半编程言语的罕见言语机关,用于经由过程多个值对单个表达式举行测试。它经常使用于交换包括多个elseif/else块的if语句。
对PHP的switch语句与VisualBasic的SelectCase语句举行了对照。
表6:switch与selectcase语句的对照
PHPVisualBasic.NET
switch($i){
case0:
print"iequals0";
break;
case1:
print"iequals1";
break;
case2:
print"iequals2";
break;
default:
print"iisnotequalto0,
1or2";
}
SelectCaseNumberi
Case0
description="0"
response.write("iequals0")
Case1
description="1"
response.write("iequals1")
Case2
description="2"
response.write("iequals2")
CaseElse
description="iisnotequal
to0,1or2"
response.write("iisnot
equalto0,1or2")
EndSelect
轮回
另外一个十分罕见的把持机关是轮回。PHP和.NET都撑持多少分歧的罕见轮回范例。
表7:For轮回
PHPVisualBasic.NET
for($i=1;$i<=100;$i++){
print$i;
}
DimsumAsInteger=0
DimcounterAsInteger
Forcounter=1To100Step5
sum+=counter
Next
Fori=1to100
Response.write(i)
NextI
在VisualBasic中,这类轮回范例被称为For...Next轮回,而在PHP中则称为For轮回。在此示例中,我们利用了+=运算符作为sum=sum+counter的简写体例。在PHP中,可使用Break;语句来中止轮回。而For...Next轮回能够经由过程ExitFor语句中止。
前提轮回
只需某个前提盘算为true,前提轮回便会延续反复一组指令。表8显现了这两种言语中的基础前提轮回示例。
表8:前提轮回
PHPVisualBasic.NET
$i=1;
while($i<=10):
print$i;
$i++;
endwhile;
DimcounteriAsInteger=1
DoWhilecounteri<=10
Response.write(i)counteri+=1
Loop
在VisualBasic中,这类轮回范例称为Do...Loop语句,或while轮回。PHP也撑持Do...While轮回,该轮回与while轮回十分相似,分歧的地方在于它是在每一个轮回的开头而不是入手下手反省真假表达式。Do...While轮回与惯例while轮回的次要不同是前者会确保运转第一个轮回(由于只在该轮回的开头反省真假表达式),而惯例的while轮回则纷歧定运转。(由于它在每一个轮回的入手下手反省真假表达式,假如它一入手下手便盘算为FALSE,该轮回将当即停止实行。)
上面给出了一个PHP中这类情形的示例:
$i=0;
do{
print$i;
}
while($i>0);
此轮回只运转一次,由于在第一次轮回后反省真假表达式时,表达式盘算为FALSE($i不年夜于0),以是轮回将中断实行。
在VisualBasic.NET中,您能够实行一样的操纵:
DimcounteriAsInteger=0
Do
response.write(i)counter
LoopWhilecounteri>0
可是,VisualBasic.NET撑持内置的轮回功效,这是PHP所不撑持的。该功效将对前提举行盘算,直到前提为真时为止。
Foreach轮回
PHP4(而非PHP3)包括一个foreach机关,它与ASP.NET和某些其他言语中的机关十分相似。它只是为轮回数组供应了一个复杂的路子。foreach只合用于数组,假如试图将其用于其他数据范例的变量或未初始化的变量,则会招致毛病。VisualBasic.NET中与此等价的轮回是ForEach...Next语句。表9显现了在这两种言语中轮回数组的示例。
表9:Foreach轮回
PHPVisualBasic.NET
$i=0;
foreach($aas$v){
print"$Key[$i]$v
";
$i++;
}
foreachvina
response.writea(v)(v&vbcrlf)
next
在VC.net的版本上,为了让C++运行在.NETFramework中,微软为C++引进了托管,就是托管C++(ManagedC++),这个根本就没有流行起来,自托管C++产生以后就没有收到过好评。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. 这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。 这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。 市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
页:
[1]