电脑技术网——专业手机电脑知识平台,关注科技、手机、电脑、智能硬件
JavaScriptASP编程PHP编程Python编程ASP.NET

在ASP.NET中用于.NET组件

2020-01-03 08:21:04 出处:[ 菜菜电脑网 ] 人气:次阅读

很多人在 @import 和 @assembly 页面标识的时候不已厌烦,本文将为你找回这些无论如何,知道你如何来常用.net的组件。

和asp中的类相比较有什么扭转?

如果你以前曾经整合过asp程序,那你理应是非常相像下面的一段代码了:

<script runat="server" language="vbscript">
dim fso
set fso = server.createobject("scripting.filesystemobject")
</script>

上面的代码询问我们在asp当中须要运用于server对象的createobject方法来建起一个类实例。上面的代码中,首先声明了变量fso,之后我们将变量fso赋于filesystemobject的对象(filesystemobject对象可以在scripting这个库中认出)。如果就让上面的asp代码设法正常列车运行,我们必须已确定系统性的dll文件已经被装有并且登记到服务器。当vbscript运行库被配备的时候,filesystemobject对象是时会被自动备案的。但是如果你不想用于第三方共同开发的组件或者用于你自己创建者的组件,你就能够小心装配并且申请你的组件了。
接下来让我们来想想,假设在asp.net中也长期存在filesystemobject这个对象的话,我们必要如何来实例转化成它:

可用vb.net :
<script runat="server" language="vb">
dim fso as scripting.filesystemobject = new scripting.filesystemobject()
</script>

应用于c#:
<script runat="server" language="c#">
scripting.filesystemobject fso = new scripting.filesystemobject();
</script>


正如你所见到的一样,在asp.net中实例化类是同asp有所不同的。其中最重要的不同点有:

在asp.net中已经不再可以常用vbscript语言了,而是被功能强大的vb.net所除去了
在asp.net当中,在你声明一个变量的同时,可以以外它的类型并且初始化这个变量
为了提及一个类,能够用到这样的暗示方法:名称空间[.子名称空间].类。
在上面的例子当中,我们提及了filesystemobject这个类,而filesystemobject这个类可以在名称空间scripting中见到。并不需要警惕的是,上面的名称空间实际上只是我们假设的一个名称空间,它并不依赖于于.net的架构当中,所以上面的代码实际上是无法试运行的。换句话来说就是,我们需自己构建scripting这个名称空间并且在这个名称空间当中定义filesystemobject这个类。

什么是名称空间?

在前面的章节当中我们已经应用于过“名称空间这个词。利用名称空间你可以将多个类组合而成在逻辑上具体的一些单元。通常,你亦会将一些备有十分相似功能或者具雷同状态的类裂解在一起。比如名称空间system.io的一个实例就相关联了那些用来处理方式重定向和控制器系统设计(比如:读完、撰写、截图文件)的类。值得注意的是,名称空间当中的类要有着多种不同的功能或者多种不同的状态并不是一个必须的促请。你可以按照任何规则少数人的的组织你自己的名称空间,甚至可以很难任何规则。

引述.net组件

不必注意到了,我们计算出来的第一个asp.net的例子只是用来教学展示的---它是无法运营的。现在让我们来看一个尽可能正常接入的实际例子:

用到vb.net组织起来message对象
<%@ assembly name="system.messaging.dll" %>
<script runat="server" language="vb">
dim mydir as system.messaging.message = new system.messaging.message()
</script>



用于c#成立message对象
<%@ assembly name="system.messaging.dll" %>
<script runat="server" language="c#">
system.messaging.message mydir = new system.messaging.message();
</script>

指令@assembly对此将一个不可数引述到当前的页面,从而使得所有在论域当中定义的类、界面、结构可以在当前页面民主自由的被应用于。在我们上面假定的例子当中,我们附加了system.messaging.dll这个可数。在这个交集当中相关联了system.messaging这个名称空间,system.messaging名称空间备有了序列化.net架构消息的功能。我们创设了message类的一个实例,从而可以利用它位址消息队列当中的消息了。如果我们必需在一个代码初始化的文件中建立联系message类,须要这样动手:

用作vb.net在代码附加文件中设立message对象
public class mypage
inherits system.web.ui.page
dim mydir as system.messaging.message = new system.messaging.message()
end class

应用于c#在代码默认文件中创建message对象
public class mypage : system.web.ui.page {
system.messaging.message mydir = new system.messaging.message();
}

须要同样的是,如果我们想编译器这个类,我们必须在编译器的时候指示编译器我们只能重述system.messaging.dll以及system.web.dll这两个文件。假设我们将上面的类留存沦为一个文件(mypage.vb或者mypage.cs),之后我们能够这样来程式码它:
编译器代码启动时的类

vbc mypage.vb /r:system.messaging.dll /r:system.web.dll
csc mypage.cs /r:system.messaging.dll /r:system.web.dll

传输给编译器的参数“/r:system.messaging.dll和“/r:system.web.dll同一个在web form上用到的指令@assembly充分发挥的效用是相同的。

什么是交集?

一个给定是一组不具备十分相似功能的逻辑单元的复合。他是基础的,可以自描述的系统设计单元,具备版本控制,可任用,许可安全控制的属性。它相关联那些用来体现所有原则上版本消费,安全标记符和其他信息的交集名单。

转用名称空间

我们已经注意到了,无论什么时候我们重述message对象,我们都无需发放完备的名称空间路径(也又叫无论如何随附的类名称)。不难想象,时间窄之后,这将才会助长令人不快和不必要的看上去代码。偶然的是,我们可以在一个页面定义一个名称空间的路径,从而可以节约一些无谓的摇动键盘的时间。

用于vb.net转用一个等价
<%@ assembly name="system.messaging.dll" %>
<%@ import namespace="system.messaging" %>
<script runat="server" language="vb">
dim mydir as message = new message()
</script>

用于c#导入一个论域
<%@ assembly name="system.messaging.dll" %>
<%@ import namespace="system.messaging" %>
<script runat="server" language="c#">
message mydir = new message();
</script>

在我们的代码附加类中则不对这样书写:

用到vb.net在代码加载文件中替换成一个空集
imports system.web.ui
imports system.messaging
public class mypage
inherits page
dim mydir as message = new message()
end class

可用c#在代码链接文件中替换成一个可数
using system.web.ui;
using system.messaging;
public class mypage : page {
message mydir = new message();
}

通过指令@import(同样可以通过imports或者using语句),我们可以指明一个名称空间的路径。这样,我们在举出一个类的时候,就不必采用基本上仅限的名称空间路径了。提醒:如果在system.web.ui和system.messaging这两个名称空间中都有message这个类的话,我们就必须常用仅仅附送的类名称了。

相符的告诉他加进的名称空间能花钱什么和必须认真什么是非常举足轻重的。它不仅仅是节约了程序员的击打键盘的时间,更极其重要的是随之而来了程序代码的较佳的可读性。并不需要明白的是,真正同年将名称空间Pardosa到页面的指令是:@assembly或者用作参数/r透过校对。

通过配置文件自动控制将交集Pardosa到一个web form并不是只有应用于@assembly指令一个方式,闭包也可以在一个application当中自动的被转用某个页面。这样的空集不只能指令@assembly。我们可以在配置文件config.web中用到<assemblies>来自动转用闭包。

自动的在配置文件当中扩展闭包
<configuration>
<compilation>
<assemblies>
<add assembly="system.messaging"/>
<add assembly="*"/>
</assemblies>
</compilation>
</configuration>

这个星号“*告知asp.net自动加进在“应用程序的私有闭包缓冲区中的每一个给定。通过<add>元素,你可以替换成任何的名称空间在application作用域之内。

什么是应用程序的私有不可数缓冲区?

.net的文档中是这样定义应用程序的私有空集缓冲区的:应用程序的私有不可数缓冲区被看做是坐落应用程序下的子目录\bin以及.net构架的装上目录。然而通过我的测试,只有\bin目录才被当成应用程序的私有闭包缓冲区,也就是说只有这个目录才是星号“*的作用域。

忽略:在<add>元素中的星号“*仅仅自动反败为胜那些座落应用程序子目录\bin中的论域!
通过搜集.net架构配备的配置文件配置文件:config.web。我们可以明白,他自动的引进了如下的等价:

mscorlib
system
system.data
system.diagnostics
system.drawing
system.net
system.text.regularexpressions
system.web
system.web.services
system.xml
system.xml.serialization
microsoft.comservices
*

你可以自己想想匹配的config.web文件,也好确定一下。下面的名称空间也是自动加进的:

microsoft.visualbasic
system
system.collections
system.text
system.text.regularexpressions
system.web
system.web.caching
system.web.sessionstate
system.web.security
system.web.ui
system.web.ui.webcontrols
system.web.ui.htmlcontrols

关于我们 - 广告合作 - 联系我们 - 免责声明 - 网站地图 - 投诉建议 - 在线投稿

©CopyRight 2008-2020 caicaipc.com Inc All Rights Reserved.
菜菜电脑网 版权所有