通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

处理业务对象

http://www.iyit.net  日期:2006-8-18 17:45:27  来源:  点击:
参加讨论】在业务组件中封装逻辑是实际应用程序的基本组成部分,不论是基于 Web 的应用程序还是任何其他应用程序。在 ASP.NET 中,业务对象是多层 Web 应用程序(如包含数据访问层或通用应用程序规则层的应用程序)的生成块。本节说明如何编写一些简单的组件并将它们包括在应用程序的 Web 窗体页中。

应用程序 /Bin 目录

使用 Web 应用程序组件的 COM 模型时遇到的问题是,这些组件必须注册(通常是使用 regsvr32 工具)后才能在传统的 ASP 应用程序中使用。对这些类型的应用程序进行远程管理通常是不可能的,因为注册工具必须在服务器上以本地方式运行。更为棘手的是,这些组件经应用程序加载后便在磁盘上保持锁定状态,必须使整个 Web 服务器停止运行后才能替换或移除这些组件。

为尝试解决这些问题,ASP.NET 允许将组件放置在已知目录中并在运行时自动找到它们。该已知目录总是命名为 /bin,并紧位于应用程序根目录(一个由 Internet Information 服务 (IIS) 定义的虚拟目录)下。这样做的好处是组件无需注册便可在 ASP.NET 框架应用程序中使用——只需将组件复制到 /bin 目录或执行 FTP 文件传输便可部署组件。

除提供零注册方法部署复杂组件外,ASP.NET 不要求这些组件在运行时在磁盘上保持锁定状态。ASP.NET 在后台复制 /bin 中的程序集并加载这些 shadow 副本。原始组件即使在 Web 服务器仍在运行时也可以替换,而对 /bin 目录的更改则由运行时自动获取。当检测到更改时,ASP.NET 允许完成当前执行的请求,并将所有新传入的请求定向到使用新组件的应用程序。

导入业务对象

从最基本的层面看,业务组件只是一个类,可以从导入它的 Web 窗体页为其创建实例。下面的示例定义一个简单的 HelloWorld 类。该类有一个公共构造函数(当初次创建该类的实例时执行此构造函数)、一个称为 FirstName 的 String 属性和一个通过 FirstName 属性值打印问候语的 SayHello 方法。

Imports System
Imports System.Text

Namespace HelloWorld
  Public Class HelloObj
    Private _name As String

    Public Sub New
      MyBase.New()
      _name = Nothing
    End Sub

    Public Property FirstName As String
      Get
        Return(_name)
      End get
      Set
        _name = value
       End Set
    End Property

    Public Function SayHello() As String
      Dim sb As New StringBuilder("Hello ")
      If (_name <> Nothing) Then
         sb.Append(_name)
      Else
         sb.Append("World")
      End If
      sb.Append("!")
      Return(sb.ToString())
    End Function
  End Class
End Namespace
C# VB JScript  

若要编译该类,应从命令行运行 C# 编译器 (Csc.exe)。/t 选项通知编译器生成库 (DLL),/out 选项通知编译器将结果程序集放置到的位置。本例中,应用程序的 /bin 目录紧位于本教程的“aspplus”虚拟根目录下,并假设该命令从示例目录,即 ...\QuickStart\AspPlus\Samples\WebForms\Busobjs 运行。

对于 Visual Basic,等效编译命令是:

vbc /t:library /out:..\..\..\..\bin\HelloObjVB.dll HelloObj.vb

对于 JScript,等效编译命令是:

jsc /out:..\..\..\..\bin\HelloObjJS.dll HelloObj.js

该组件现在可供应用程序中任何需要使用它的 Web 窗体页使用。下面的 HelloObj.aspx 示例阐释了此功能。

 
VB HelloObj.aspx

[运行示例] | [查看源代码]

注意位于页面顶部的 Import 指令,它指定要包含的命名空间。使用该指令包含命名空间后,便可从 Web 窗体页内部使用该类。由于程序集由 ASP.NET 运行时预加载,因此只需简单的命名空间导入便可使组件可用。以下代码是 Import 指令的示例。

<%@ Import Namespace="HelloWorld" %>

默认情况下,ASP.NET 在应用程序启动时从 /bin 目录加载所有程序集。要加载的程序集通过配置系统指定。有关详细信息,请参阅配置概述一节。通过使用配置还可将附加的程序集导入应用程序。例如:

<configuration>
    <compilation>
        <assemblies>
            <!--The following assemblies are loaded explicitly from the global cache-->
            <add assembly="System.Data"/>
            <add assembly="System.Web.Services"/>
            <add assembly="System.Drawing"/>
            <!--This tells ASP.NET to load all assemblies from /bin-->
            <add assembly="*"/>
        </assemblies>
    </compilation>
</configuration>
注意:从 /bin 加载的每个程序集被限制在它运行的应用程序的范围内。这意味着对等应用程序可以潜在地使用具有同一类名或命名空间名称的不同程序集,不会发生冲突。

简单的两层 Web 窗体页

外部组件的典型用途是执行数据访问。它简化了页中的代码,增强了可读性并将用户界面 (UI) 逻辑与系统功能分开。下面的实例阐释了简单的两层 Web 窗体页,它使用数据访问组件检索产品信息。

 
VB TwoTier.aspx

[运行示例] | [查看源代码]

数据访问组件采用其构造函数的单个参数来指定产品数据库的连接字符串。Web 窗体页调用该组件的 GetCategories 方法填充下拉列表,调用该组件的 GetProductsForCategory 方法显示用户所选类别的产品。

简单的三层 Web 窗体页

三层应用程序模型扩展了两层方案,在 UI 和数据访问逻辑之间包含了业务规则。此模型允许 UI 开发人员处理更高抽象化的级别,而不是通过低级数据访问组件 API 直接操作数据。中间业务组件通常强制业务规则并确保遵守数据库的关系和主键约束。下面的示例使用中间组件基于客户端输入的两位供应商 ID 计算折扣。

 
VB ThreeTier.aspx

[运行示例] | [查看源代码]

本节小结

  1. ASP.NET 运行时在已知的 /bin 目录(紧位于应用程序的根目录下)中查找业务对象(本地程序集)。/bin 目录具有以下优点:

    • 不需要注册。不需要任何注册便可使程序集供应用程序中的页使用。程序集因其位于 /bin 目录中而可用。只需复制或 FTP 到此位置便可对编译代码进行部署。
    • 不需要服务器重新启动。当 ASP.NET 框架应用程序的任何部分发生更改(例如,当 /bin 中的 DLL 被替换时)时,将立即针对更改的文件开始执行新请求。当前执行的请求可以在原来的应用程序移除前完成。当更改应用程序,甚至是替换编译代码时,Web 服务器也不需要重新启动。
    • 没有命名空间冲突。从 /bin 加载的每个程序集被限制在它正在运行的应用程序的范围内。这意味着对等应用程序可以潜在地使用具有同一类名或命名空间名称的不同程序集,不会发生冲突。

  2. 程序集中的类可通过 .aspx 文件中的 Import 指令由应用程序中的页使用。
  3. 两层应用程序简化了页中的代码,增强了可读性并将用户界面 (UI) 逻辑与系统功能分开。
  4. 三层应用程序扩展了两层模型,使 UI 开发人员能够处理更高级的抽象化。中间业务组件通常强制业务规则并确保遵守数据库的关系和主键约束。


编辑: [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:数据访问和自定义
下一篇:没有了
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
最新更新 热点排行 推荐新闻
处理业务对象
数据访问和自定义
服务器端数据访问
数据绑定服务器控件
Web 窗体用户控件
处理业务对象
数据访问和自定义
QQ密码被盗怎么办!我教你找回密码
服务器端数据访问
数据绑定服务器控件
使用身份验证来禁止内部用户上网 
Web 窗体用户控件
服务器控件窗体验证
对控件应用样式
使用服务器控件
对控件应用样式
处理业务对象
数据访问和自定义
服务器端数据访问
数据绑定服务器控件
WIN XP蓝屏代码大全
MSN监听软件下载热 轻松监视局域网隐私
WinRAR将推出免费正版序列号!
让WinRAR汗颜的压缩软件UHARC
备份软件GHOST使用教程
[JAVA]十四种Java开发工具点评
初学java常用开发工具介绍
Win XP操作系统优化精髓
XP中重新安装或修复IE6的三种方法
轻易破解Winrar,Winzip密码
在ASP.net中保存/取出图片入/从SQL数据
一个.net 压缩位图至JPEG的代码
ASP.NET2.0数据库入门之常见错误
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
QQ密码被盗怎么办!我教你找回密码
使用身份验证来禁止内部用户上网 
Win Powershell遭遇病毒 最好升级软件
SiteAdvisor 助你远离恶意网站
提升流量 站长应该做的五件事
XP中重新安装或修复IE6的三种方法
XP下Asp.net访问被拒绝
教你封杀FSO躲避FSO木马的侵扰
让WinRAR汗颜的压缩软件UHARC
巧用Ghost擦去硬盘
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights ? 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息