- 热门文章:
- · 关于多层repeater,datagrid,datalist嵌套的示例
- · Display hierarchical data with TreeView
- · 怎么后台添加CheckBoxList并且得到选择结果
- · HTTP Downloader for Updater Application Block 2 (GotDotNet)
- · HOW TO:从资源管理器中拖放文件到控件
- · dataGrid在页面拖动(用表头),不刷新页面
- · winform下如何检测你一个给定的网址(Ull),是否可访问?
- · Abstract Factory pattern -- Structural example
- · XML-RPC学习笔记(一)
- · [VS宏]根据函数名称定位函数
- · 三层式的层次划分
- · 服务器控件中js脚本注册方法
ASP.NET立即上手教程 13(完)
这几天元旦过得晕头转向,好不容易清醒过来 :-) 所以拖的时间久了一点,不好意思了。
在商务组件中封装逻辑是实际应用程序,比如基于web的应用以及其他应用中,必不可少的
部分。在ASP.NET中,商务对象是多层WEB应用程序内建的块。
应用程序的 /Bin目录
在传统的ASP应用程序中使用COM组件的时候有一个问题,那就是这些组件在使用前必须被
注册(典型的做法是使用regsvr32工具)。远程管理这种类型的的应用程序很不现实,因
为注册工具必须在本地服务器运行。更麻烦的是,这些组件一旦被应用程序加载,就在磁
盘上保持锁定状态。要想替换或者移去他们,整个web服务器必须停止。
ASP.NET试图通过允许将组件放置在众所周知的目录中,在运行时被自动找到来解决这些问
题。这个众所周知的目录通常叫做 /bin ,直接位于应用程序的根目录(由IIS定义的虚拟
目录)下。这样的好处在于ASP.NET应用程序使用组件时不需要注册---仅仅需要将组件复
制到 /Bin目录或者通过FTP上传到/Bin目录。
除了提供“零注册”的方法来部署编译过的组件外,ASP.NET不要求这些组件在运行时在磁
盘上保持锁定。其内幕是,ASP.NET将这些在/Bin目录中找到的汇编文件进行复制,并替换
成装载这些“影子”副本来使用。原始的组件甚至可以在Web服务器运行的过程中被替换,
/Bin目录的变化情况自动被运行时刻获得。当检测到变化的时候,ASP.NET允许当前执行的
请求完成,并且指挥所有新的请求使用新的组件。
引入商务对象
从底层来说,商务组件仅仅是一个类,你可以从引入它的Web页面来创建或者实例化它。下
面的例子定义了一个简单的HelloWorld类。该类有一个公共的构造器(当一个类的实例第
一次被创建的时候它被执行),一个叫做FirstName的String属性,以及一个使用FirstNa
me的属性来显示问候的SayHello方法。
using System;
using System.Text;
namespace HelloWorld {
public class HelloObj {
private String _name;
public HelloObj() {
_name = null;
}
public String FirstName {
get {
return _name;
}
set {
_name = value;
}
}
public String SayHello() {
StringBuilder sb = new StringBuilder("Hello ");
if (_name != null)
sb.Append(_name);
else
sb.Append("World");
sb.Append("!");
return sb.ToString();
}
}
}
为了编译这个类,C#编译器(Csc.exe)需要从命令行执行。/t 选项通知编译器创建一个
类库(DLL), /out 选项通知编译器将编译结果放在什么位置。在本例中,应用程序的/bin
目录在本教程的"aspplus" 虚拟目录下。并且假定命令行可以在实例所在目录下运行,即
...\QuickStart\AspPlus amples\WebForms\Busobjs目录下运行。
csc /t:library /out:..\..\..\..\bin\HelloObj.dll HelloObj.cs
对于Visual Basic, 等价的编译命令是:
vbc /t:library /out:..\..\..\..\bin\HelloObjVB.dll HelloObj.vb
对于JScript, 等价的编译命令是:
jsc /out:..\..\..\..\bin\HelloObjJS.dll HelloObj.js
现在这个组件可以被应用程序中需要使用它的任何页面使用了。下面的HelloObj.aspx说明
了这个功能。
C# HelloObj.aspx
[运行] | [[源文件]
注意页面上面的Import指令指定了要包含的名称空间。一旦使用这条命令包含了名称空间
,就可以在这个页面中使用名称空间中定义的类了。下面的命令例示了Import指令
缺省情况下,当应用程序启动的时候,ASP.NET 从/Bin目录载入所有的汇编文件。汇编文
件的载入通过配置系统来指定。详细情况请参阅Configuration Overview 部分。额外的汇
编文件也可以使用配置文件倒入应用程序。例如:
注意: 从/Bin目录装载的汇编文件被限制在应用程序运行的范围之内。这就意味着,同等
的应用程序可以潜在的使用不同的包含具有相同类名或者名称空间的汇编文件,而无需配
置。
一个简单的两层WEB页面
本例中外部组件使用的类用来执行数据访问。这就简化了页面的代码,提高了可读性,并
且从系统功能中分离了用户接口逻辑。下面的例子演示了一个简单的两层WEB页面,它使用
了数据访问组件来取得产品的信息。
C# twotier.aspx
[运行] | [[源文件]
数据访问组件中的构造器带有一个参数,用来指定产品数据库的连接字符串。WEB页面调用
组件的GetCategories方法来组装下拉列表,调用组件的GetProductsForCategory方法来显
示用户选择的产品种类。
一个简单的三层WEB页面
三层应用程序模型对两层模型的情况进行扩展,在用户接口和数据访问逻辑之间包含了商
务规则。这种模型允许用户接口开发者工作在较高的抽象层,而不是通过低层的数据访问
组件接口直接操作数据。中间层的商务组件典型的用法是实施商务规则、确保数据库关联
和主关键字约束的承兑。下面的例子使用中间组件,根据客户端输入的两位数的厂商ID来
计算折扣。
C# threetire.aspx
[运行] | [[源文件]
本章小节
1.ASP.NET 运行时刻在著名的 /Bin目录中查找商务对象(本地汇编文件) ,该目录位于应
用程序的根目录下。/Bin 目录提供了下列的优点:
a.无需注册.
b.无需服务器重启.
c.没有名称空间的冲突.
2.通过在.aspx文件中使用Import 指令,可以让应用程序的页面使用汇编中的类。
3.两层模式的应用程序简化了页面中的代码,提高了可读性,从系统功能中分离了用户接
口逻辑。
4.三层模式应用程序扩展了两层模型,允许用户接口开发者工作在较高的抽象层。中间的
商务组件典型的用法是实施商务规则、确保数据库关联和主关键字约束的承兑。
待续==接下来的部分是创建自定义控件,敬请期待
相关文章:
- · 复制文件夹所有内容和删除整个文件夹的2个函数
- · 动态绑定DATAGRID里的DropDownList
- · 彻底解决!无效的 CurrentPageIndex 值.它必须大于等于 0 且小于 PageCount!的问题
- · HOW TO:检索本机硬件信息
- · HOW TO:检索应用程序当前执行代码的引用信息
- · HOW TO:初始化共享变量
- · 怎么触发DataGrid模板列中控件的事件?
- · 刚学ASP.Net,学了个简单的计算器
- · 全选DataGrid里的复选框
- · WEB页面多语言支持解决方案
- · javascript 与 asp.net 的交互
- · 动态模板列更新数据分页的例子
- · DataList 控件分页操作
- · 如何用请求字符串传值给用模式窗口打开的aspx页面。
- · Duwamish7学习笔记1
- · Matt Powell的《Server-Side 异步Web Methhods》
- · DataGrid和DropDownList的一些配合以及使用css定制DataGrid
- · 轻松解决asp.net论坛中的一版块多斑竹和一用户担任多版块斑竹的问题(不用数组和split)
- · 分享:aspx页面javascript的几个trick
- · 2个页面间不通过Session与url的传值方式
- · Solidworks二次开发—09--添加配合参考
- · Solidworks二次开发—08--判断是什么特征
- · 创建动态数据输入用户界面
- · 可以代替窗体Refresh方法的函数
- · 无外部控件制作多媒体播放器(四)
- · 无外部控件制作多媒体播放器(三)
- · DirectX9 3D快速上手 3
- · AlertButton, 您确定要执行吗?
- · 无外部控件制作多媒体播放器(二)
- · 用TreeView显示数据通用方法
- · 无外部控件制作多媒体播放器(一)
- · Web Browser Express 概述
- · datagrid编辑删除分页
- · 展现C# 清单5.10 生成exe文件执行的问题
- · 联通增值业务“定位之星”L1协议服务端的模拟器
- · 一个自认为写得还可以的存储过程,就是没有注释,看起来有点乱。与ERP的BOM相关的
- · [EnterpriseServices]利用assembly定义我们的组件在COM+中的注册方式
- · 给windows服务添加描述
