html5中文学习网

您的位置: 首页 > 网络编程 > ASP.NET » 正文

ASP.NET中共用代码_.NET教程_编程技术

[ ] 已经帮助:人解决问题
asp.net
在 ASP.NET 中由於可直接使用或替 DLL ,大部分人不心共用原始的,由於 ASP.NET 在行可最新原始供站行,是否一定要用 DLL 行於管理者,有的,但系或程式,共用原始意味相同原始可供各案同共用,在或某一案,共用原始的,亦等同於所有案一起更新,此外亦可降低相同功能似原始,有助於力的提升及案小共同。

例如早期案存取料可能以 OLEDB ,而到 .Net framework 1.1 入 ODBC 後,在新案,於共用程式可加入 ODBC 支援,原先案亦同得 ODBC 支援效益。

在 ASP.NET 中共用原始有三方法:

使用 Web 使用者控制 (*.ascx)
使用程式宣告
伺服器端Include指示法
在上手或相 ASP.NET 中多半都介到 Web 使用者控制,因此本文不重介,而方法 2、方法 3 可考的料少,可考文末其他考所列址。在上述方法中,Web 使用者控制是於使用者介面共用,程式或 Include 指示於、模或 HTML 等法共用,在用途及分上亦有所不同。

首先建立一例,原始切割四案部份,如 1,程式如下:


1
Test.aspx

<%@ Page Language="vb" AutoEventWireup="false" %>
<script language=vb runat=server src="testClass.vb" /%>
<!-- #include virtual = "Include.aspx" --%>

testClass.vb

Public Class testClass
Public Function Test() As String
Return TypeName(Me) & ": testClass.vb Function"
End Function
End Class

Include.aspx

<script language=vb runat=server src="testFun.vb" />
<script language=vb runat=server id="modInclude">
Function Test1()
Response.Write(TypeName(Me) & ": Include.aspx Function Test1" & "<br>")
End Function
</script>
<%
Dim cTest As New testClass

Test1()
Test2()
Response.Write(cTest.Test() & "<br>" & vbNewLine)
%>

testFun.vb

Public Function Test2()
Response.Write(TypeName(Me) & ": testFun.vb Function Test2" & "<br>")
End Function

Test.aspx 是的,其他三都是示共用的引入,引入外部原始之法有:

使用程式宣告
<script language="codelanguage" runat="server" Src="pathname" />
在本的原始,可建立物件、列等,可 Visual Basic .Net 共用原始,例如本例中 testClass.vb。在 Web Form 内不能建立新的模,故如 testFun.vb 不能另外使用 Module…End Module。在物件中,由於於含,故案不能直接存在任何於部分的原始,若要使用 Visual Studio .Net IDE 境(以下 VS.NET)原始,建在使用程式宣告以物件主,以避免 VS.NET 提示。

伺服器端 Include 指示法
<!-- #include file | virtual = filename -->
此方式如同原先 ASP 引入案方式,由於於 ASPX 原始的一部份,因此在案可使用於部分的相定,亦可再引入其他原始。若要使用 VS.NET 原始,建副名取 .aspx,可使用 VS.NET 提示、自感知及上明功能。

在例,了保原始引入,不要使用 VS.NET 中行的功能,才不自依照用程式建立 DLL 照,致不易分辨函或物件功能是否由原始引入,因此直接由 Internet Explorer(以下 IE)址列直接入址 http://localhost/Include/test.aspx。此外,由於未透 VS.NET 行,因此法承 DLL 之物件,若使用 VS.NET 建本例,手移除 Global.asax 及每一 Web Form (*.aspx) 原始中,Inherits 的性,才不致生。

在此例中,主要示容的程式分隔放置在 Include.aspx ,呼叫各函或建立物件,在 IE 上示果如 2,一易的共用原始就此成形,若各部分程式有修正,只要重新整理 IE,即可依修正後的程式示,在系案可得不小的性。


2
更一步
在含中可能想要共用其他部分的的或函,此不能直接在含中使用,想要使用的方法有三:

以 Shared 字宣告或函
主物件作
宣告一主物件引用
在原先例中加入 Shared.aspx ,因此 Test.aspx 也小幅修改行,修改部分程式加上底。修改後的程式行成果如 3 所示。

Test.aspx

<%@ Page Language="vb" AutoEventWireup="false" ClassName="myTest" %>
<script language=vb runat=server src="testClass.vb" />
<!-- #include virtual = "Shared.aspx" -->
<!-- #include virtual = "Include.aspx" -->

Shared.aspx

<script language=vb runat=server id="modShared">
Public Shared shdMe As Object
Public Shared shdString As String = ""

Public Class cTestObj
Public Function Test(Byval commonObj As Object)
Return commonObj.PublicFun(SharedFun("cTestObj"))
End Function
End Class

Public Class cTestShd
Public Function Test()
Return shdMe.PublicFun(SharedFun("cTestShd"))
End Function
End Class

Public Class cTestName
Public Function Test()
Dim webTest As New myTest
Return webTest.PublicFun(SharedFun("cTestName"))
End Function
End Class

Public Function PublicFun(Byval strOutput As String)
shdString &= "-[Public]"
Return strOutput & "-[Public]"
End Function

Public Shared Function SharedFun(Byval addString As String)
shdString &= addString & "-[Shared]"
Return addString & "-[Shared]"
End Function
</script>
<%
shdMe = Me
Dim clsObj As New cTestObj
Response.Write(clsObj.Test(Me) & "<br>")
Dim clsShd As New cTestShd
Response.Write(clsShd.Test() & "<br>")
Dim clsName As New cTestName
Response.Write(clsName.Test() & "<br>")
Response.Write(TypeName(shdMe) & ", " & shdString & "<br>")
%>


3
以 Shared 字宣告
或函以 Shared 字宣告共用後,及函更全域,本例中宣告共用一物件、一字串及一函,由於,在所有工作段 (Session) 未束前可以加,因此字串宣告同指定初值避免加,但使用若需有似需在系中共用,不一定需要使用 Session 物件。共用函可於物件中直接使用,不需考命名空的。

主物件作
物件可以透引或使用前述共用,在 cTestObj 中,物件以引方式到物件使用,在 cTestShd 透共用到。由於 PublicFun 函主物件下之公用函,因此透主物件命名空叫用。

宣告一主物件引用
在cTestName 中,示宣告一主物件使用,面生一困,主物件的名何?在本文中所有的程式都是被 Test.aspx 引入, ASP.NET ,上只是作一 aspx 理,所以在物件名定上只能有一,即是以 Test.aspx 定依。在 Test.aspx 修改例中,在第一行加入 ClassName 指示的性,指定的名即可在 cTestName 中使用,若是未指定名,以 Web Form 名小 (dot) 替下 (under line) 後物件名,如 2 中,Test_aspx 物件名,3中示 myTest 物件名。然在 cTestName 中可以宣告 Test_aspx 物件,但通常可能因共用的理由而不知道是哪 Web Form 引用,在此情下定物件名比方便。

其他特性,在 Shared.aspx 及 Include.aspx 分存在程式 (<% … %>),此特性亦有助於在不同分的共用程式,入行指定程式或宣告特定的,例如在料存取程式的上,可字串或常分割在一原始,查的程式分割在另一原始,不同的案或不同的料只要分建立的字串宣告即可,仍可引用共用的程式存取料。

此外,由Shared宣告後的共用,在多使用者同登入的境下,亦可考透 Shared 交息,例如聊天室的文字字串於不累加,即可使用 Shared 到效果。

最後要的是共用原始的限制。使用程式宣告,由於已法在此再引用其他程式,故引用深度一。使用 Include 指示,由於下的引入仍可使用 Include 指示,所以不知道最大可用深度。一般,深度於串,度於,而通常深度限制比度限制得峻(深度),因此做最大深度。首先以程式生出下面的程式到不同的案,n 由 1 ~ 10,000 行深度,了每案均能被行到,故在每案均使用程式行的出函,串接的如 4 所示。

loop[nnnnn].aspx

<script language=vb runat=server>
Public Function Responseloop[nnnnn]()
Response.Write("loop[nnnnn]<br>")
End Function
</script>
<% Responseloop[nnnnn]() %>
<!-- #include virtual = "loop[nnnnn+1].aspx" -->


4
作系 Windows XP SP2,配 P4 1.6G/384 MB,在中 n 介於 4,650 ~ 4,800 ,但是大量引用案下,在非常耗,在 n=4,650 ,期使用量暴增 460 MB 左右 (aspnet_wp.exe),原先中行其他程式使用 400 MB 相加後,到上限,或在等更高的中,可以再稍加增深度。在 n=4,800 ,此尚未到上限,即跳出 5 的,且 ASP.NET 之服程式 (aspnet_wp.exe) 生常止,息入事件簿後重新 ASP.NET 服程式,因此可以推定在 ASP.NET 1.1 下,最大深度不超 4,800。


5 (:中被人工遮罩之文字字串本名。)
原上深度超 10 以上,於一般人思考能力是高的挑,一般程式也不深度限制增,多半深度仍在 10 以,故目前最大深度超 4,650,大多的管理而言,已超需求。

本文共用原始可中大型系管理提供另一方向,平用可考以系主,散或案依委契要求,而原始或DLL交付,在多系共用原始的情下,亦可少原始成本,提升原始管理的能量,人或小所建的程式或函程式均可用此方法管理,到快速系的目的。

88hHTML5中文学习网 - HTML5先行者学习网
88hHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助