posts - 18,  comments - 62,  trackbacks - 1
  2005年5月20日

VS.NET 2003集成环境插件开发指南

 

http://www2.cnblogs.com/dragon/archive/2005/03/25/125533.html

posted @ 9:47 | Feedback (1)
  2005年3月18日

今天看到宝玉一篇文章介绍说URL欺骗的,http://blog.joycode.com/dotey/archive/2005/02/25/44864.aspx

这个可以用来做代理服务器啦:)

宝玉还提供了代码的下载

posted @ 11:02 | Feedback (5)
  2005年3月9日
这个假期实在是过于漫长,回家后电脑就坏了,也很少上网了,想研发部的XDJM了,今天来BenQ实习第一天,刚刚熟悉了一下情况,配置好了自己的电脑,跟大家打声招呼,大声的说:你们好!
posted @ 20:32 | Feedback (11)
  2004年12月12日

 

主  题:  [讨论区第二期] .NET Framework设计模式与实践
作  者:  niwalker () 
等  级:   
信 誉 值:  100
所属论坛:  .NET技术 .NET Framework
问题点数:  200
回复次数:  76
发表时间:  2003-7-26 5:12:48
  
 
  

设计模式一直是流行的话题,在.NET Framework的学习过程中,我们可以发现其中使用了大量的设计模式,本专题重点讨论两个方面的内容:
1、揭示设计模式在.NET Framework中的应用;
2、设计模式在.NET应用程序中的实践。

欢迎大家积极参与,将你学习过程的新发现和心得呈现出来与同道们共享。


 
 
 回复人: niwalker() ( ) 信誉:100  2003-7-26 5:48:35  得分:0
 
 
 
下面介绍ASP.NET中的Model-View-Controller(MVC)模式:

大家都知道Web网页最初显示静态内容,随着需求的快速变化,后来出现了大量的动态内容的网页设计。在ASP.NET中,你可以向以往的ASP一样把要显示的内容以及逻辑控制代码写在一个aspx文件中,我们称这种设计为单页式设计,这种设计通常对于小的应用程序来说是好的,但是如果页面内容显示逻辑比较复杂,或者说要经常更新页面的显示方式,那么这种混合着代码和内容的设计,很难维护和扩展。
Code-Behind与MVC:
MVC设计模式的目的是提供一个分离视图(View,内容的显示)、模型(Model,数据内容)、控制器(Controller)的解决方案,通过这种分离,使得内容的表现和内容本身分开,这样做得好处是明显的,首先:不同的开发人员可以专注于各自的任务,例如:界面设计人员可以负责页面的外观设计部分;程序设计人员可以只负责数据的处理。ASP.NET中的Code-behind采用的就是这种设计模式:*.aspx是View的部分,*.aspx.(cs/vb..)是Model部分,那么你可能要问Controller在哪里?那么我可以告诉你,那个你继承的Page对象就是一个Controller,在ASP.NET的缺省实现中,Page对象扮演着一个Controller的角色,它负责接收用户的行为,并且以事件的方式通知View和Model进行相应的操作,同时正如你我所看到的Controller在ASP.NET中并不是十分明显。下面是MVC设计模式的关系:
            +----------------------<View
        Controller                   |
            |                        +
            +----------------------<Model
Controller接收客户端的输入,把输入传递给Model, Model根据输入的指令,对数据进行操作(取数据、更新数据等),Controller通知View,View更新自己。
在ASP.NET中还有其他的设计模式的实现,上面仅仅是一个方面的简要介绍,我的砖算是抛出去了,希望大家把玉扔过来,:-)


 
Top
 
 回复人: houjianxun(三千弱水)(独取一瓢清泉) ( ) 信誉:97  2003-7-26 8:28:20  得分:0
 
 
 
都是精品  :)

Model没有操作过,来学习一下,顺便收藏


 
Top
 
 回复人: fengxin107(追逐彩虹) ( ) 信誉:100  2003-7-26 9:37:24  得分:0
 
 
 
开眼呀,没有用过。
收藏了。


 
Top
 
 回复人: tenny() ( ) 信誉:100  2003-7-26 11:48:55  得分:0
 
 
 
是呀!好多东西需要一起来探讨才回有收获!


 
Top
 
 回复人: niwalker() ( ) 信誉:100  2003-7-27 4:39:01  得分:0
 
 
 
第二块砖:.NET 中的Observer设计模式
Observer(观察者模式)属于GOF 23个设计模式中的行为型模式,它被用来处理当一个对象更新的时候,其他的一系列对象自动得到更新。可以结合上面提到的MVC模式一起使用。它的基本结构是:
           主题<--------观察者
下面链接的MSDN的一篇文章,详细论述了Observer设计模式:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/observerpattern.asp

通过阅读该文,我发现.NET中的Event和Delegate实际上就是Observer设计模式的应用,event相当于主题对象,而delegate则充当观者者。如果你熟悉Observer模式,你会发现它们的Solution是何其相似。反过来说,如果你了解了event和delegate的工作机制,那么你同时也就了解了Observer设计模式。那么使用Observer设计模式有什么好处呢?实际上当我说明了event和delegate就是Observer设计模式的时候,这个问题已经显得多余了。


 
 
Top
 
 回复人: cgsw12345(cgsw) ( ) 信誉:100  2003-7-27 12:54:24  得分:0
 
 
 
好東西﹐先收藏﹗


 
Top
 
 回复人: waki(不老先生) ( ) 信誉:97  2003-7-28 12:59:56  得分:0
 
 
 
想知道采用MVC模式,但不想生成许许多多的ASPX文件,怎样可以将ASPX放入DLL进行动态生成呢?


 
Top
 
 回复人: lkal4587(刘兄台) ( ) 信誉:103  2003-7-28 13:32:22  得分:0
 
 
 
MVC我喜欢 经常用


 
Top
 
 回复人: mnm0756(探索者) ( ) 信誉:87  2003-7-28 15:20:42  得分:0
 
 
 
晕,这么少人的?


 
Top
 
 回复人: niwalker() ( ) 信誉:100  2003-7-29 5:58:51  得分:0
 
 
 
To waki(不老先生):
设计模式有它的Context(也就是它的适用范围),MVC模式,它的目的是解决数据和表现的分离。你的问题是View的动态生成,这让我感到困惑,因为MVC中的View应该是已经存在的对象,从你的问题看,似乎应该采用其他的设计模式(属于创建型模式),比如类厂模式。IBuySpy的Portal就是一个很好的范例。


 
Top
 
 回复人: TomMax(笑望人生) ( ) 信誉:100  2003-7-29 10:50:42  得分:10
 
 
 
.Net下的设计模式,我看了演示,最希望使用XDE工具,可是我安装的是VS.Net2003,无法使用XDE2002。
大家可以到这个网页看演示,真精彩:
http://www.rational.com/products/xde/xdedev.jsp
我想问的是有没有Rational XDE Developer v2003 下载?
介绍地址:
http://www.rational.com/products/xde/wn_dev.jsp


 
Top
 
 回复人: dreammaster(天涯) ( ) 信誉:100  2003-7-29 16:22:21  得分:5
 
 
 
《Enterprise Solution Patterns Using Microsoft .NET>>大家可以下这本电子书来看看.


 
Top
 
 回复人: TomMax(笑望人生) ( ) 信誉:100  2003-7-29 16:34:33  得分:0
 
 
 
抛砖引玉,给出Rational XDE Professional, Microsoft .NET Edition 的官方下载地址。不用注册,不用激活
要求:
1 不能是Windows 2000/2003 Server,必须是win2k Pro/WinXP版
2 必须使用Visual Studio .Net 2002,即版本号为7.0,而不是7.1

地址:
ftp://ftp.rational.com/public/xde/@@NQ/drop_eight/NQ_VSNet_1.1.0205.2601_2002.05.20.000.003.zip

我下载了,速度极快,大概200-250k/s用的是FlashGet

 


 
Top
 
 回复人: waki(不老先生) ( ) 信誉:97  2003-7-31 9:23:21  得分:2
 
 
 
IBuySpy的Portal示例并没有将VIEW进行封装呀,只不过是使用了用户控件而已


 
Top
 
 回复人: standy(天下无双) ( ) 信誉:100  2003-7-31 13:18:49  得分:0
 
 
 
學習ing


 
Top
 
 回复人: Qlodestar(小可) ( ) 信誉:95  2003-7-31 16:25:32  得分:0
 
 
 
也是别人推荐的:
设计模式迷你手册,含有全部C#源代码
下载地址:http://hoversoft.net/ebook/0204/DP.rar


 
 
Top
 
 回复人: BeyondLove2000(马) ( ) 信誉:100  2003-8-1 10:04:11  得分:0
 
 
 
收藏+学习


 
Top
 
 回复人: darzui(牛肉饭) ( ) 信誉:99  2003-8-1 12:55:58  得分:10
 
 
 
我们公司现在的项目,我参与客户端开发,是ASP.NET。数据是后台封装好的,相关的操作函数也是后台封装好的,也就是说业务逻辑和客户端开发没什么关系了。在这种情况下,如何使用模式?


 
Top
 
 回复人: niwalker() ( ) 信誉:100  2003-8-1 18:16:15  得分:0
 
 
 
to darzui: dreammaster(天涯)推荐的东西可以满足你。


 
Top
 
 回复人: lins(*无间行者*) ( ) 信誉:99  2003-8-3 11:09:17  得分:10
 
 
 
MVC是在JSP上产生的。jsp有一套机制来支持它。
在asp.net上有一些新的特点,它可以有新的方法。

借用MVC,偶是这样来理解asp.net
.aspx 是view,它继承自.aspx.cs 在运行时产生客户端页面代码。
.aspx.cs 是controller,它根据.aspx 返回的_viewstate,获得用户的输入,包括事件,调用相关的代码,并将结果返回。
.asmx,.cs 是model 偶更喜欢把处理的业务逻辑层和数据层,以类库,Web Services和Remoting 形式发布。

 


 
Top
 
 回复人: azyue(沙漠之弧) ( ) 信誉:100  2003-8-5 20:47:12  得分:0
 
 
 
不是把,这么破的东西也那出来!!!


 
Top
 
 回复人: waki(不老先生) ( ) 信誉:97  2003-8-7 16:57:46  得分:0
 
 
 
弃用ASP。NET机制,自己输出DHTML,可以做到DLL封装VIEW层。


 
Top
 
 回复人: panyee(快乐王子) ( ) 信誉:100  2003-8-8 11:59:12  得分:0
 
 
 
表面上说是美工可以做所有,不过很多时候,美工只能做出个界面的样子,具体html界面怎么加上代码,还是编程人员的事情


 
Top
 
 回复人: wenzm(魔术师) ( ) 信誉:91  2003-8-8 12:55:55  得分:10
 
 
 
在MS Demo的PETSHOP、Duwamish、Fitch and Mather中包含了很多的设计模式,不知道有没有哪位能把他们就设计模式部分拿出来,结合具体的应用与时间进行剖析 ……


 
Top
 
 回复人: li_new(重获新生) ( ) 信誉:101  2003-8-8 13:39:12  得分:10
 
 
 
《Enterprise Solution Patterns Using Microsoft .NET》 DownLoad Url
http://microsoft.com/downloads/details.aspx?FamilyId=3C81C38E-ABFC-484F-A076-CF99B3485754&displaylang=en

不要刻意的去使用设计模式,模式是好的东西,但要根据自己的项目情况是用模式。


 
Top
 
 回复人: blackcatiii(能教我做框架设计吗) ( ) 信誉:103  2003-8-22 14:12:59  得分:10
 
 
 
to TomMax(笑望人生):
谁说的,我的机器是Win2k Server和vs.Net还不照样用,一点问题也没有。也真不知道Rational公司怎么了,据说它卖的价比vs.net还贵很多,可我从它那下来好长时间了也没有提示说过期。做软件的都象它那样真不知道是好事还是坏事:)


 
Top
 
 回复人: lxd1979(李子) ( ) 信誉:100  2003-8-22 19:14:27  得分:0
 
 
 
初学者,只能认真记


 
Top
 
 回复人: zxbyhcsdn(沙子) ( ) 信誉:100  2003-8-23 10:26:58  得分:0
 
 
 
去买一本书吧!
<<VB.Net设计模式高级编程--构建强适应性的应用程序>>
清华大学出的!


 
Top
 
 回复人: leeeel(我笑你多情) ( ) 信誉:100  2003-8-23 15:41:08  得分:0
 
 
 
使自己的代码变得简单粗暴易于维护就是好的设计。再进化一下就是模式了


 
Top
 
 回复人: niwalker() ( ) 信誉:100  2003-8-23 20:41:10  得分:0
 
 
 
leeeel(三角比三星差?) :使自己的代码变得简单粗暴易于维护就是好的设计。

变得简单粗暴...? 你说的是健壮(鲁棒 robust)吧。要做到这一点并不是很容易。可以向大家介绍一下你在这方面的经验吗?


 
 
Top
 
 回复人: Dreamaster(数字化生产队) ( ) 信誉:93  2003-8-24 18:09:11  得分:10
 
 
 
现代编程语言中大量运用了设计模式,许多模式的实现已经内含在语言当中了,根据具体项目使用的语言,对于模式的应用也不同。比如最简单singlton模式,在java中和在.net中的实现就会有很大不同,所以说一个设计师是必须要非常了解你的项目的开发环境的,否则就会出现重复造轮子甚至设计错误。


 
Top
 
 回复人: mistsoft(大宝) ( ) 信誉:90  2003-8-26 8:48:26  得分:5
 
 
 
等到手中中无剑,心中也无剑时才是真正的大师


 
Top
 
 回复人: li_new(重获新生) ( ) 信誉:101  2003-8-26 15:23:10  得分:5
 
 
 
模式的最终目的是系统的健壮、易维护、易扩展。高内聚、低耦合。如果能做到这一点也就不要什么模式了。


 
Top
 
 回复人: piscean_163(言而有信) ( ) 信誉:98  2003-8-28 21:23:18  得分:5
 
 
 
微软又专门的文档讲述在.net中应用的各种模式。很全也很长。

英文的:
http://msdn.microsoft.com/practices/type/Patterns/Enterprise/default.asp


 
Top
 
 回复人: niwalker() ( ) 信誉:100  2003-8-30 8:31:06  得分:0
 
 
 
这一段时间比较忙,发现抛了两块砖也没有得到多少玉 :( 。是不是觉得题目太大了?其实讨论的范围已经限定了:
1、探讨.net类库框架中使用的设计模式
2、.net应用程序开发中如何使用设计模式

如果大家对上面的问题比较感兴趣,请踊跃参加讨论,我想既然是讨论,也就不在乎你的观点和看法的对错,提出来有利于澄清错误。楼上已经有朋友提到MS的模式和实践的链接和文章,本贴正是基于MS的这个专题的,所以务必请大家在阅读过有关文章以后,到这里来讨论,发表你的看法已经提出你的疑问。

为了使大家言之有物,下面稍作一些讨论提示。

类库部分:
1、ADO.NET中的DataAdapter使用的是适配器模式吗?
2、ADO.NET中的Command是Command模式吗?

应用部分:
MSDN的模式和实践中,MS开发了8个应用程序构件块(Application Blocks),它们分别是:
Data Access Application Blocks
Exception Management Application Blocks
Caching Application Blocks
Configuration Application Blocks
Aggregation Application Blocks
Asynchronouse Application Blocks
Update Application Blocks
User Interface Process Application Blocks

对上面8个应用块所使用的设计模式的研究和学习,不说你就是设计模式大师,至少你可以成为设计模式的高手。(这些应用块都可以在你的项目中使用,这就是设计模式带来的好处,构件的可重用性)

作为示范,下面我再抛出一块砖(第三块砖了呀,事不过三,如果大家对这个讨论不感兴趣,后面的砖头我就自己留着了 :) )

关于User Interface Process Application Blocks(用户界面处理应用程序块)的设计模式和构架:
UI Process的开发目的是帮助你解决用户界面的处理问题,也就是我们说的表现层,这些问题是:
控制流的管理
状态管理
程序逻辑的分离
对特定用例(User case)的控制流和状态的封装

通过提供对上面问题的解决,可以帮助你完成:
将程序的控制流程(如导航)从用户交互的页面、窗体、控件中分离出来。这样做的好处是应用的流程控制被置于一个单独的层,减少界面的重复代码量,同时解决WinForm和WebForm之间的转换,也就是说如果你开发的应用是基于WinForm的,那么你很容易转换为WebFrom,反之亦然。
对工作在用例数据上的窗体和控件的状态实行管理
编写复杂情况下用户任务实现的应用程序,如:重新分配任务给不同的用户或者让用户能够恢复被中断的任务。
在这个UI Process中,它的文档说是使用了以下的设计模式:
Abstract Factory Pattern(抽象工厂模式)
Builder Pattern(建造者模式)
Visitor Pattern(访问者模式)
至于使用这些模式的动机以及如何使用它们,在UIP Appclication Block的文档中都有详细说明,限于篇幅,大家自己阅读,这里就不做进一步的介绍了,如果你有问题,请到这里来讨论。

 

 


 
Top
 
 回复人: mnm0756(探索者) ( ) 信誉:87  2003-8-31 14:02:14  得分:0
 
 
 
支持niwalker ,我想正想试着使用设计模式开发系统,请大家多多指点:
qq:1848002
msn :caixikai@hotmail.com


 
Top
 
 回复人: daou101(海天一鸥) ( ) 信誉:100  2003-9-1 13:35:36  得分:0
 
 
 
好东西!
学习!


 
Top
 
 回复人: csdn_bob(文子) ( ) 信誉:104  2003-9-1 14:01:35  得分:0
 
 
 
to TomMax(笑望人生):下不了,File not Found


 
Top
 
 回复人: csdn_bob(文子) ( ) 信誉:104  2003-9-1 14:03:41  得分:0
 
 
 
学习!


 
Top
 
 回复人: kentis(小张) ( ) 信誉:100  2003-9-4 11:14:52  得分:10
 
 
 
再来一块砖头!
在23个模式中,其中原型模式在.NET里也有所实现。原型模式就是在某个对象进行活动过程中采集一个固定的样本,生成一个有指定状态的对象,把它传出去,在.NET里有一个Clone(克隆)方法,可以在一定时刻把一个有一定状态的对象采样一份。这样就很好地解决了原型模式啦:)
请大家继续发言,OO的精髓之一就是设计模式呀!来!


 
Top
 
 回复人: gaisylly(单翼天使) ( ) 信誉:100  2003-9-4 22:30:47  得分:5
 
 
 
Enterprise Solution Patterns Using Microsoft .NET
看了看,很受教育,吐血建议大家look look


 
Top
 
 回复人: jonescheng(C#前进无极限) ( ) 信誉:100  2003-9-5 17:46:21  得分:0
 
 
 
楼上的这本书是英文原版的。在那里下载阿
或者那里可以买到。

很精彩的贴子


 
Top
 
 回复人: gaisylly(单翼天使) ( ) 信誉:100  2003-9-6 1:09:38  得分:5
 
 
 
Enterprise Solution Patterns Using Microsoft .NET
下载地址:
http://download.microsoft.com/download/4/4/8/448e3308-1cde-49f5-9eb5-c6d0d9778670/ESP.exe


 
Top
 
 回复人: gaisylly(单翼天使) ( ) 信誉:100  2003-9-6 1:11:37  得分:5
 
 
 
还有一本关于设计模式的书
Introduction to Design Patterns
我还没看过,下载地址:
http://download.microsoft.com/download/1/c/0/1c029cd9-3218-4e62-9d3a-64aa2c96882a/DesignPatterns.EXE


 
Top
 
 回复人: lmdhit(封情) ( ) 信誉:100  2003-9-7 0:46:11  得分:0
 
 
 
我个人认为JAVA的设计模式很成熟!
所以可以学习J2EE的设计模式来开发。NET,只要不违背规则应该很有收获


 
Top
 
 回复人: eastliangliang(青苹果)(行成于思毁于随) ( ) 信誉:100  2003-9-7 21:46:35  得分:0
 
 
 
认真记笔记


 
Top
 
 回复人: cgsun(其实我明白你的暗示!!) ( ) 信誉:100  2003-9-11 2:37:53  得分:0
 
 
 
mark


 
Top
 
 回复人: 5956(齐人) ( ) 信誉:100  2003-9-11 22:52:34  得分:0
 
 
 
收藏先


 
Top
 
 回复人: rustle(...) ( ) 信誉:100  2003-9-16 9:18:11  得分:10
 
 
 
我的理解 asp.net是这样的

aspx      view
aspx.cs   model
而asp.net页面框架则是control这个control实际上是微软作了

只要我们在model和view设计的时候遵循一定的规范就可以了


 
Top
 
 回复人: txdcxh(dreamnet) ( ) 信誉:100  2003-9-16 9:55:20  得分:10
 
 
 
to:lins(*无间行者*)
同意你的看法,对于我们来说
.aspx 是view,包含美工设计的页面效果和布局

.aspx.cs 是controller,接受用于的输入信息进行验证等操作,然后调用model的业务逻辑,并将结果返回到View。

.asmx,.cs 是model 正如你所说是业务逻辑层和数据层,以类库,Web Services和Remoting 形式发布,在数据层还可以再分几部分,这个是我现在正想做的,争取做一个简单的数据访问平台,封装数据库的连接信息等内容,达到快速开发。


 
Top
 
 回复人: bljbljbljblj(马克.欧元.人民币) ( ) 信誉:75  2003-9-17 9:40:07  得分:0
 
 
 
此帖不收藏,何帖收藏?


 
Top
 
 回复人: xuu27(乐者为王(xuu27)) ( ) 信誉:100  2003-9-17 10:41:21  得分:0
 
 
 
希望更多人来参与,也希望同时在java上面"混"的朋友来参与


 
Top
 
 回复人: szwebnet(动力) ( ) 信誉:100  2003-9-18 3:31:17  得分:5
 
 
 
Builder Pattern多层结构应用

http://www.codeproject.com/aspnet/aspnetforums.asp


 
Top
 
 回复人: w9(小王) ( ) 信誉:95  2003-9-19 13:06:44  得分:0
 
 
 
:)

 


 
Top
 
 回复人: wendyong(小文) ( ) 信誉:100  2003-9-19 15:16:52  得分:0
 
 
 
谢谢各位


 
Top
 
 回复人: drmy() ( ) 信誉:100  2003-9-20 22:30:52  得分:0
 
 
 
及其关注


 
Top
 
 回复人: gaisylly(单翼天使) ( ) 信誉:100  2003-9-23 9:03:36  得分:10
 
 
 
to  rustle(...):
我对于你讲的:
*****************************
我的理解 asp.net是这样的

aspx      view
aspx.cs   model
而asp.net页面框架则是control这个control实际上是微软作了

只要我们在model和view设计的时候遵循一定的规范就可以了
******************************
有不同意见,如果按你的理解那么每一个view就对应了一个model,model的重用性就得不到体现了,我觉得model应该单独做成类库形式,每个aspx.cs应该作为控制器,对类库中的model进行调用。不过这样的话View和controller就一一对应了,和MVC模式的经典实现又有所不同,应该是asp.net中对mvc模式的调整吧。
大家有什么不同的理解,欢迎指正!


 
Top
 
 回复人: niwalker() ( ) 信誉:100  2003-9-23 18:53:00  得分:0
 
 
 
终于谈到这个问题了,我在前面提到的MS UIProcess Block就是解决这个问题的。在UIProcess中,aspx.cs已经降级为view, 多个view可以对应UIProcess的一个Controller, 这是通过在配置文件来设置,每个Controller对应一个State对象,用来保存程序运行的状态。


 
Top
 
 回复人: xz_king(西杀魄工人) ( ) 信誉:100  2003-9-23 19:52:05  得分:0
 
 
 
深入了解。


 
Top
 
 回复人: ripper(rIPPER) ( ) 信誉:99  2003-9-24 17:56:27  得分:10
 
 
 
UIProcess Block没有见过,不过可以直接把aspx页面当作servlet来用啊,controller和view都可以用aspx来做。实在不行非要学servlet就用c#写isapi好了,就是麻烦了一些了。

另外Databinding也不错啊,不一定非要mvc吧;)


 
Top
 
 回复人: gaisylly(单翼天使) ( ) 信誉:100  2003-9-26 9:47:23  得分:10
 
 
 
to niwalker:
有更详细的关于MS UIProcess Block的资料吗,我最近一直在研究MVC在asp.Net中的应用问题,发现控制器在asp.net中不太好实现,微软好像曾经提出过前台front controller的概念,还没详细看,看过在把我的理解发在这儿。
MVC在Java应用中已经比较成熟了,在.net中还在摸索,希望早点找出一个理想的解决方案


 
Top
 
 回复人: niwalker() ( ) 信誉:100  2003-9-26 23:59:26  得分:0
 
 
 
to gaisylly(不会游泳的鱼) :
这里是关于UIP的网址:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/uip.asp

你可以下载这个Block,它包含一个chm的帮助文件和3个Sample


 
 
Top
 
 回复人: beone(beone) ( ) 信誉:100  2003-10-6 20:48:07  得分:0
 
 
 
mark


 
Top
 
 回复人: weijiechen(SUMMER) ( ) 信誉:100  2003-10-6 23:46:40  得分:0
 
 
 
报名


 
Top
 
 回复人: inethax(梦幻希绝) ( ) 信誉:100  2003-10-16 16:00:28  得分:0
 
 
 
深受教育--:)


 
Top
 
 回复人: 0578(ghs) ( ) 信誉:100  2003-10-18 10:36:20  得分:0
 
 
 
谁能分析一下Maverick.net的架构?


 
Top
 
 回复人: scbeans(笨死) ( ) 信誉:100  2003-10-30 11:13:41  得分:0
 
 
 
mark


 
Top
 
 回复人: flyjiebing(fly) ( ) 信誉:96  2003-11-1 11:27:08  得分:0
 
 
 
关注


 
Top
 
 回复人: meidengyin(蓝枫) ( ) 信誉:100  2003-12-2 11:14:10  得分:0
 
 
 
每天来看一遍,水平菜不敢发言.
^-^


 
Top
 
 回复人: flysnowjava(一个孤独的魂灵) ( ) 信誉:98  2003-12-3 10:15:09  得分:10
 
 
 
.net框架中大量使用的模式是
工厂方法
如:IEnumerable,IEnumerator
WebRequest,WebResponse,HttpWebRequest,HttpWebResponse,FileWebRequest,FileWebResponse
等等用了很多


 
 
Top
 
 回复人: SuperMark(困兽之斗) ( ) 信誉:97  2003-12-5 12:20:24  得分:0
 
 
 
UIPAB有人具体用过吗?想知道这东西的实用性到底有多高。


 
Top
 
 回复人: rock1981() ( ) 信誉:98  2003-12-5 12:35:12  得分:0
 
 
 
gz


 
Top
 
 回复人: Ponney(宁) ( ) 信誉:100  2003-12-5 19:26:25  得分:0
 
 
 
It's very good ,mark it,now!


 
Top
 
 回复人: liyin_first(友元) ( ) 信誉:91  2003-12-5 19:31:29  得分:10
 
 
 
管道与过滤器(Pipe and Filters)模式,这个属于体系结构模式.
微软的方法调用模型和Remoting框架,体现了面向方面(AOP)编程的思想.

跨Context和AppDomain的方法调用,微软没有足够的资料,而且也不推荐使用.它的主要思想就是将方法调用转化为实现IMessage接口的一系列类,也就是将方法调用堆栈转化为相应的实现IMessage接口的类,然后在一个个串起来的MessageSink中对这个类进行截取和过滤,加入对消息的处理,最后消息到达目标对象再由堆栈生成器将消息转化为堆栈执行。

跨机器的调用就体现在Remoting上,结构和上面提到的差不多,只不过在跨机器的传播中,要将数据真正的进行串行化,可以考虑二进制或是soap,而上面提到的并没有真正串行化。

小弟最近在研究.net的核心,哪位有兴趣可否指点一下,谢谢!
http://expert.csdn.net/Expert/topic/2522/2522411.xml?temp=.1289942


 
 
Top
 
 回复人: slightsnow() ( ) 信誉:88  2003-12-5 20:04:49  得分:0
 
 
 
学习


 
Top
 
 回复人: Soking(方呈怡心) ( ) 信誉:100  2003-12-6 9:50:51  得分:8
 
 
 
MVC,看看设计模式(机工)的1995年的那本书,会帮助你的,楼主


 
Top
 
 回复人: niwalker() ( ) 信誉:100  2003-12-6 10:18:22  得分:0
 
 
 
帖子沉底了整整一个月,终于又浮了上来。欢迎大家继续踊跃参与。
 To SuperMark(困兽之斗) :MSUIPAB的实用价值有多大,不太好说,不过我已经在我的项目中使用了UIPAB, 我认为并不是每一个项目都适合采用。UIPAB的关键就是解决用户界面逻辑的重用,可以把UML的用例映射到一个个的Controller。有关UIPAB,我在上面一再提起,原因并不是它的实用价值,而是通过对它的研究和学习,你可以融会贯通到你的项目设计上。
我原本打算把我的研究心得献给所有感兴趣的朋友,由于篇幅太大,所以准备整理一下,放到csdn的技术文章栏,然后我们在这里再进行讨论。
To liyin_first(友元) :你的理解基本正确。

posted @ 8:55 | Feedback (1)

想了解一下设计模式了!
文章收藏:http://blog.csdn.net/qunluo/archive/2004/07/22/48637.aspx
http://www.microsoft.com/china/community/Column/93.mspx

posted @ 8:49 | Feedback (0)
  2004年11月30日
在一个DataGrid嵌入CheckBox,动态生成数据后其id和name的属性值都发生了变化,还好在一个页面的不同DataGrid下的某一部分的名称是不同的,具体的name值是通过DataGrid的id值(比如A)"A"+":"+"ctl"+i+"CheckBox name(server段的),只有i是个变量,其他的都是固定的,还是有规律可循的
posted @ 10:40 | Feedback (3)
  2004年11月29日

栋梁砥华夏,桃李芳九洲!——我校2005届毕业生双选会圆满结束

      今年的招聘会算是告一段落了,双选会过后直至明年三月份过来的公司无论从数量还是质量上面都不能跟前一段时间相比了,随着双选会的闭幕我的找工作生涯也基本上结束了。
        今年总的形势总的说来还是特别的好,有人称今年是自97届以来形势最好的一年了,光是华为就招了很多。即使在这么好的形势下想找一份有前(钱)途而且有适合自己的工作也并不是很容易的事情,前段时间的生活大都是在听宣讲会,投简历,笔试,面试当中度过的,找工作的心情难以形容,只有经历过才能体会,以前听人家说在求职简历满天飞的季节人就特别容易变得浮躁,的确当一次次的希望变成失望时,起码的自信心都会动摇,我见到一个个找的神魂颠倒的人
         还好熬过了这段日子,虽然明天还是要继续努力,不过想想哪个时候不是靠自己努力争取的呢

posted @ 20:44 | Feedback (3)
  2004年9月24日

Microsoft Application Blocks for .NET

Data Access Application Block 概述

Chris Brooks、Graeme Malcolm、Alex Mackman、Edward Jezierski
Microsoft Corporation

2002 年 4 月

摘要:Data Access Application Block 是一个 .NET 组件,包含优化的数据访问代码,可以帮助用户调用存储过程以及向 SQL Server 数据库发出 SQL 文本命令。它返回 SqlDataReader、DataSet 和 XmlReader 对象。您可以在自己的 .NET 应用程序中将其作为构造块来使用,以减少需要创建、测试和维护的自定义代码的数量。您可以下载完整的 C# 和 Visual Basic .NET 源代码以及综合文档。

简介

您是否正在从事 .NET 应用程序数据访问代码的设计和开发?您是否觉得自己总是在反复编写相同的数据访问代码?您是否曾经将数据访问代码包装在 Helper 函数中,以便能够在一行中调用存储过程?如果是,那么 Microsoft® Data Access Application Block for .NET 正是为您设计的。

Data Access Application Block 将访问 Microsoft SQL Server™ 数据库的性能和资源管理方面的最佳经验封装在一起。您可以很方便地在自己的 .NET 应用程序中将其作为构造块使用,从页减少了需要创建、测试和维护的自定义代码的数量。

尤其是,Data Access Application Block 可以帮助您:

  • 调用存储过程或 SQL 文本命令。
  • 指定参数详细信息。
  • 返回 SqlDataReader、DataSet 或 XmlReader 对象。

例如,在引用了 Data Access Application Block 的应用程序中,您可以简单地在一行代码中调用存储过程并生成 DataSet,如下所示:

[Visual Basic]
Dim ds As DataSet = SqlHelper.ExecuteDataset( _
      connectionString, _
      CommandType.StoredProcedure, _
      "getProductsByCategory", _
      new SqlParameter("@CategoryID", categoryID))
 
[C#]
DataSet ds = SqlHelper.ExecuteDataset( 
      connectionString,
      CommandType.StoredProcedure,
      "getProductsByCategory",
      new SqlParameter("@CategoryID", categoryID)); 
  
  
注意: Application Block for .NET(用于 .NET 的应用程序块)是基于对成功的 .NET 应用程序进行详细研究而设计的。它以源代码的形式提供,您可以原样使用,也可以针对自己的应用程序进行自定义。该应用程序块并不代表未来 Microsoft ADO.NET 程序库的发展方向。Microsoft ADO.NET 程序库是为在各种使用情况下实现对数据访问行为的精确控制而建立的。将来的 ADO.NET 版本可能会使用不同的模型来实现这个方案。

本概述的其余部分包括以下内容:

Data Access Application Block 包括哪些内容?

下载和安装 Data Access Application Block

使用 Data Access Application Block

内部设计

常见问题

反馈和支持

合作者

Data Access Application Block 包括哪些内容?

提供了 Data Access Application Block 的源代码以及快速入门示例应用程序,您可以使用这些应用程序测试其功能。Data Access Application Block 还包括综合文档,可以帮助您使用和了解所提供的代码。

Visual Studio .NET 项目

提供了 Data Access Application Block 的 Microsoft Visual Basic® .NET 和 Microsoft Visual C#™ 源代码,以及每种语言的快速入门示例客户端应用程序,您可以使用这些应用程序测试常见的方案。这有助于加深您对 Data Access Application Block 的工作原理的了解。您还可以自定义源代码以满足自己的需要。

您可以编译 Visual Basic 和 C# Microsoft.ApplicationBlocks.Data 项目,以生成一个名为 Microsoft.ApplicationBlocks.Data.dll 的程序集。该程序集包括一个 SqlHelper 类(其中包含用于执行数据库命令的核心功能)和一个 SqlhelperParameterCache 类(提供参数发现和缓存功能)。

文档

Data Access Application Block 的文档主要包括以下内容:

  • 使用 Data Access Application Block 开发应用程序。本部分包括快速入门示例,其中包含多种常见的使用情况,可以帮助您快速轻松地掌握 Data Access Application Block(数据访问应用程序块)的使用。
  • Data Access Application Block 的设计与实现。本部分包括背景设计原理信息,以便用户深入了解 Data Access Application Block 的设计与实现。
  • 部署和运行。本部分包括安装信息,其中包含部署和更新选项以及与安全性有关的信息。
  • 参考。本部分包含综合的 API 参考,其中详细介绍了构成 Data Access Application Block 的类和接口。

系统要求

要运行 Data Access Application Block,需要满足以下要求:

  • Microsoft Windows® 2000、Windows XP Professional
  • .NET Framework SDK(英文)的 RTM 版本
  • Visual Studio® .NET 的 RTM 版本(推荐,但不必需)
  • SQL Server 7.0 或更高版本的数据库服务器

下载并安装 Data Access Application Block

您可以获取一个包含已签名的 Data Access Application Block 程序集和综合文档的 Windows 安装程序文件。

安装进程将在您的“程序”菜单中创建一个 Microsoft Application Blocks for .NET(用于 .NET 的 Microsoft 应用程序块)子菜单。该子菜单中有一个 Data Access(数据访问)子菜单,其中包括用于启动文档的选项和用于启动 Data Access Application Block Visual Studio .NET 解决方案的选项。

请转到 MSDN Downloads(英文)进行下载。

使用 Data Access Application Block

本节讨论如何使用 Data Access Application Block 来执行数据库命令和管理参数。图 1 显示了 Data Access Application Block 的主要元素。

图 1:Data Access Application Block

SqlHelper 类提供了一组静态方法,可以用来向 SQL Server 数据库发出许多各种不同类型的命令。

SqlHelperParameterCache 类提供命令参数缓存功能,可以用来提高性能。该类由许多 Execute 方法(尤其是那些只运行存储过程的重写方法)在内部使用。数据访问客户端也可以直接使用它来缓存特定命令的特定参数集。

使用 SqlHelper 类执行命令

SqlHelper 类提供了五种 Shared (Visual Basic) 或 static (C#) 方法,它们是:ExecuteNonQueryExecuteDatasetExecuteReaderExecuteScalarExecuteXmlReader。实现的每种方法都提供一组一致的重载。这提供了一种很好的使用 SqlHelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。类中实现的所有方法都支持以下重载:

[Visual Basic]
Execute* (ByVal connection As SqlConnection, _
          ByVal commandType As CommandType, _
          ByVal CommandText As String)

Execute* (ByVal connection As SqlConnection, _
          ByVal commandType As CommandType, _
          ByVal commandText As String, _
          ByVal ParamArray commandParameters() As SqlParameter)

Execute* (ByVal connection As SqlConnection, _
          ByVal spName As String, _
          ByVal ParamArray parameterValues() As Object)

Execute* (ByVal transaction As SqlTransaction, _
          ByVal commandType As CommandType, _
          ByVal commandText As String)

Execute* (ByVal transaction As SqlTransaction, _
          ByVal commandType As CommandType, _
          ByVal commandText As String, _
          ByVal ParamArray commandParameters() As SqlParameter)

Execute* (ByVal transaction As SqlTransaction, _
          ByVal spName As String, _
          ByVal ParamArray parameterValues() As Object)

[C#]
Execute* (SqlConnection connection, CommandType commandType, 
          string commandText)

Execute* (SqlConnection connection, CommandType commandType,
          string commandText, params SqlParameter[] commandParameters)

Execute* (SqlConnection connection, string spName, 
          params object[] parameterValues)

Execute* (SqlConnection connection, 
          CommandType commandType, string commandText)

Execute* (SqlConnection connection,
          CommandType commandType, string commandText, 
          params SqlParameter[] commandParameters)

Execute* (SqlConnection connection,
          string spName, params object[] parameterValues)

除这些重载以外,除 ExecuteXmlReader 之外的其他方法还提供了另一种重载:允许将连接信息作为连接字符串而不是连接对象来传递,如下面的方法签名所示:

[Visual Basic]
Execute* (ByVal connectionString As String, _
          ByVal commandType As CommandType, _
          ByVal commandText As String)

Execute* (ByVal connectionString As String, _
          ByVal commandType As CommandType, _
          ByVal commandText As String, _
          ByVal ParamArray commandParameters() As SqlParameter)

Execute* (ByVal connectionString As String, _
          ByVal spName As String, _
          ByVal ParamArray parameterValues() As Object)

[C#]
Execute* (string connectionString, CommandType commandType, 
          string commandText)

Execute* (string connectionString, CommandType commandType, 
          string commandText, 
          params SqlParameter[] commandParameters)

Execute* (string connectionString, string spName, 
          params object[] parameterValues)
注意: ExecuteXmlReader 不支持连接字符串,因为:与 SqlDataReader 对象不同,XmlReader 对象在 XmlReader 关闭时没有提供自动关闭连接的方法。如果客户端传递了连接字符串,那么当客户端完成对 XmlReader 的操作后,将无法关闭与 XmlReader 相关联的连接对象。

通过参考 Data Access Application Block 程序集并导入 Microsoft.ApplicationBlocks.Data 命名空间,您可以轻松编写使用任何一种 SqlHelper 类方法的代码,如下面的代码示例所示:

[Visual Basic]
Imports Microsoft.ApplicationBlocks.Data

[C#]
using Microsoft.ApplicationBlocks.Data;
  

导入命名空间后,您可以调用任何 Execute* 方法,如下面的代码示例所示:

[Visual Basic]
Dim ds As DataSet = SqlHelper.ExecuteDataset( _
   "SERVER=(local);DATABASE=Northwind;INTEGRATED SECURITY=True;",
     _
   CommandType.Text, "SELECT * FROM Products")

[C#]
DataSet ds = SqlHelper.ExecuteDataset( 
   "SERVER=DataServer;DATABASE=Northwind;INTEGRATED
     SECURITY=sspi;", _
   CommandType.Text, "SELECT * FROM Products");

使用 SqlHelperParameterCache 类管理参数

SqlHelperParameterCache 类提供了三种可以用来管理参数的公共共享方法。它们是:

  • CacheParameterSet。用于将 SqlParameters 数组存储到缓存中。
  • GetCachedParameterSet。用于检索缓存的参数数组的副本。
  • GetSpParameterSet。一种重载方法,用于检索指定存储过程的相应参数(首先查询一次数据库,然后缓存结果以便将来查询)。

缓存和检索参数

通过使用 CacheParameterSet 方法,可以缓存 SqlParameter 对象数组。此方法通过将连接字符串和命令文本连接起来创建一个键,然后将参数数组存储在 Hashtable 中。

要从缓存中检索参数,请使用 GetCachedParameterSet 方法。此方法将返回一个 SqlParameter 对象数组,这些对象已使用缓存(与传递给该方法的连接字符串和命令文本相对应)中的参数的名称、值、方向和数据类型等进行了初始化。

注意: 用作参数集的键的连接字符串通过简单的字符串比较进行匹配。用于从 GetCachedParameterSet 中检索参数的连接字符串必须与用来通过 CacheParameterSet 来存储这些参数的连接字符串完全相同。语法不同的连接字符串即使语义相同,也不会被认为是匹配的。

以下代码显示了如何使用 SqlHelperParameterCache 类来缓存和检索 Transact-SQL 语句的参数。

[Visual Basic]
' 初始化连接字符串和命令文本
' 它们将构成用来存储和检索参数的键
Const CONN_STRING As String = _
  "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;"
Dim sql As String = _
       "SELECT ProductName FROM Products " + _
       "WHERE Category=@Cat AND SupplierID = @Sup"

' 缓存参数
Dim paramsToStore(1) As SqlParameter
paramsToStore(0) = New SqlParameter("@Cat", SqlDbType.Int)
paramsToStore(1) = New SqlParameter("@Sup", SqlDbType.Int)
SqlHelperParameterCache.CacheParameterSet(CONN_STRING, _
                                          sql, _
                                          paramsToStore)

' 从缓存中检索参数
Dim storedParams(1) As SqlParameter
storedParams = SqlHelperParameterCache.GetCachedParameterSet( _
                                                 CONN_STRING, sql)
storedParams(0).Value = 2
storedParams(1).Value = 3

' 在命令中使用参数
Dim ds As DataSet
ds = SqlHelper.ExecuteDataset(CONN_STRING, _
                              CommandType.Text, _
                              sql, storedParams)

[C#]
// 初始化连接字符串和命令文本
// 它们将构成用来存储和检索参数的键
const string CONN_STRING =
  "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;";
string spName = "SELECT ProductName FROM Products " + 
                "WHERE Category=@Cat AND SupplierID = @Sup";

// 缓存参数
SqlParameter[] paramsToStore = new SqlParameter[2];
paramsToStore[0] = New SqlParameter("@Cat", SqlDbType.Int);
paramsToStore[1] = New SqlParameter("@Sup", SqlDbType.Int);
SqlHelperParameterCache.CacheParameterSet(CONN_STRING, 
                                          sql, 
                                          paramsToStore);

// 从缓存中检索参数
SqlParameter storedParams = new SqlParameter[2];
storedParams = SqlHelperParameterCache.GetCachedParameterSet(
                                              CONN_STRING, sql);
storedParams(0).Value = 2;
storedParams(1).Value = 3;

// 在命令中使用参数
DataSet ds;
ds = SqlHelper.ExecuteDataset(CONN_STRING, 
                              CommandType.StoredProcedure,
                              sql, storedParams);

检索存储过程参数

SqlHelperParameterCache 还提供了针对特定存储过程检索参数数组的方法。一种名为 GetSpParameterSet 的重载方法提供了此功能,它包含两种实现。该方法尝试从缓存中检索特定存储过程的参数。如果这些参数尚未被缓存,则使用 .NET 的 SqlCommandBuilder 类从内部检索,并将它们添加到缓存中,以便用于后续的检索请求。然后,为每个参数指定相应的参数设置,最后将这些参数以数组形式返回给客户端。以下代码显示了如何检索 Northwind 数据库中 SalesByCategory 存储过程的参数。

[Visual Basic]
' 初始化连接字符串和命令文本
' 它们将构成用来存储和检索参数的键
Const CONN_STRING As String = _
  "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;"
Dim spName As String = "SalesByCategory"

' 检索参数
Dim storedParams(1) As SqlParameter
storedParams = SqlHelperParameterCache.GetSpParameterSet( _
                                          CONN_STRING, spName)
storedParams(0).Value = "Beverages"
storedParams(1).Value = "1997"

' 在命令中使用参数
Dim ds As DataSet
ds = SqlHelper.ExecuteDataset(CONN_STRING, _
                              CommandType.StoredProcedure, _
                              spName, storedParams)

[C#]
// 初始化连接字符串和命令文本
// 它们将构成用来存储和检索参数的键
const string CONN_STRING = 
  "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;";
string spName = "SalesByCategory";

// 检索参数
SqlParameter storedParams = new SqlParameter[2];
storedParams = SqlHelperParameterCache.GetSpParameterSet(
                                          CONN_STRING, spName);
storedParams[0].Value = "Beverages";
storedParams[1].Value = "1997";

// 在命令中使用参数
DataSet ds;
ds = SqlHelper.ExecuteDataset(CONN_STRING, 
                              CommandType.StoredProcedure,
                              spName, storedParams);

内部设计

Data Access Application Block 包含了完整的源代码和有关其设计的综合指南。本节介绍有关主要实现的详细信息。

SqlHelper 类实现详细信息

SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。

SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。在 SqlHelper 类中实现的方法包括:

  • ExecuteNonQuery。此方法用于执行不返回任何行或值的命令。这些命令通常用于执行数据库更新,但也可用于返回存储过程的输出参数。
  • ExecuteReader。此方法用于返回 SqlDataReader 对象,该对象包含由某一命令返回的结果集。
  • ExecuteDataset。此方法返回 DataSet 对象,该对象包含由某一命令返回的结果集。
  • ExecuteScalar。此方法返回一个值。该值始终是该命令返回的第一行的第一列。
  • ExecuteXmlReader。此方法返回 FOR XML 查询的 XML 片段。

除了这些公共方法外,SqlHelper 类还包含一些专用函数,用于管理参数和准备要执行的命令。不管客户端调用什么样的方法实现,所有命令都通过 SqlCommand 对象来执行。在 SqlCommand 对象能够被执行之前,所有参数都必须添加到 Parameters 集合中,并且必须正确设置 ConnectionCommandTypeCommandTextTransaction 属性。SqlHelper 类中的专用函数主要用于提供一种一致的方式,以便向 SQL Server 数据库发出命令,而不考虑客户端应用程序调用的重载方法实现。SqlHelper 类中的专用实用程序函数包括:

  • AttachParameters:该函数用于将所有必要的 SqlParameter 对象连接到正在运行的 SqlCommand。
  • AssignParameterValues:该函数用于为 SqlParameter 对象赋值。
  • PrepareCommand:该函数用于对命令的属性(如连接、事务环境等)进行初始化。
  • ExecuteReader:此专用 ExecuteReader 实现用于通过适当的 CommandBehavior 打开 SqlDataReader 对象,以便最有效地管理与阅读器关联的连接的有效期。

SqlHelperParameterCache 类实现详细信息

参数数组缓存在专用 Hashtable 中。从缓存中检索的参数进行内部复制,这样客户端应用程序能够更改参数值以及进行其他操作,而不会影响缓存的参数数组。专用共享函数 CloneParameters 可以实现此目的。

常见问题

此版本包含哪些新增功能?

与 Data Access Application Block Beta 2.0 版本相比,该 RTM 版本包含以下新增功能和变化:

  • SqlHelper 类方法的事务型重载不再需要 SqlConnection 参数。在此版本中,连接信息从 SqlTransaction 对象中派生,因此不必在方法签名中包含 SqlConnection 对象参数。
  • 现在,GetSpParameterSet 方法使用 ADO.NET CommandBuilder 类的 DeriveParameters 方法来确定存储过程所需要的参数。这比 Beta 2.0 版本中直接通过查询数据库来检索信息的效率更高。

可以使用 XCOPY 部署方法来部署 Data Access Application Block 程序集吗?

可以。Microsoft.ApplicationBlocks.Data.dll 程序集在编译后可以使用 XCOPY 进行部署。

什么时候应该使用 ExecuteDataset 方法,什么时候应该使用 ExecuteReader 方法?

这个问题实际上是什么时候应该返回 DataSet 对象中的多个数据行,什么时候应该使用 DataReader。答案取决于您的应用程序的特定需要,以及您在灵活性和原始性能之间的取舍。DataSet 为您提供数据的灵活的且断开连接的关系视图,而 DataReader 为您提供性能卓越的、只读的、仅向前光标。有关 DataSet 和 DataReader 的全面比较,请参阅 Data Access Architecture Guide(英文)。

如何使用 ExecuteDataset 返回包含多个表的数据集?

通过创建一个可以返回多个行集的存储过程(通过执行多个 SELECT 语句或者对其他存储过程进行嵌套调用),并使用 ExecuteDataset 方法执行该过程,您可以检索包含多个表的数据集。

例如,假设您的数据库包含以下存储过程。

CREATE PROCEDURE GetCategories
AS
SELECT * FROM Categories
GO
CREATE PROCEDURE GetProducts
AS
SELECT * FROM Products
  

您可以创建一个主存储过程来对这些过程进行嵌套调用,如下面的代码示例所示。

CREATE PROCEDURE GetCategoriesAndProducts
AS
BEGIN
  EXEC GetCategories
  EXEC GetProducts
END
  

使用 ExecuteDataset 方法执行此主存储过程将返回一个 DateSet,其中包含两个表:一个表包含分类数据,另一个表包含产品数据。

注意: ExecuteDataset 方法不提供为返回的表指定自定义名称的方法。第一个表的编号始终为 0,名称为 Table,第二个表的编号为 1,名称为 Table1,依此类推。

还有其他的应用程序块吗?

Data Access Application Block 是即将发布的几个应用程序块之一。这些应用程序块可以解决开发人员在不同项目中遇到的共同问题。它们可以快速方便地插入到 .NET 应用程序中。

反馈和支持

如果您对 Data Access Application Block 有任何问题、意见和建议,请向 devfdbck@microsoft.com 发送电子邮件,我们将及时提供反馈。

Application Blocks for .NET 旨在协助开发 .NET 分布式应用程序。示例代码和文档都按原样提供。尽管已经过测试并被认为是稳定的代码集,但我们并不象传统的 Microsoft 产品那样对其提供支持。

我们还创建了一个新闻组,可以帮助您使用 Application Blocks for .NET(.NET 应用程序块)。您可以通过新闻组在联机的开放论坛中向同行、同事和 Microsoft 支持专家咨询。

其他人也可以从您的问题和评论中获益,我们的开发小组将每天查看新闻组:
新闻组:基于 Web 的读者
http://msdn.microsoft.com/newsgroups/loadframes.asp?icp=msdn&slcid=us&newsgroup=microsoft.public.dotnet.distributed_apps(英文)

新闻组:NNTP 读者
news://msnews.microsoft.com/microsoft.public.dotnet.distributed_apps(英文)

您想学习和利用 .NET 的功能吗?欢迎您与 Microsoft Technology Centers 的技术专家并肩工作,您将学到最好的开发经验。有关详细信息,请访问 http://www.microsoft.com/business/services/mtc.asp(英文)。

您需要更多的帮助吗?请访问新增的客户支持服务 Advisory Services,该解决方案可以满足您小规模的咨询需要。有关 Advisory Services 的详细信息,请访问 http://support.microsoft.com/default.aspx?scid=FH;EN-US;offer58&FR=0&SD=GN&LN=EN-US&CT=SD&SE=NONA(英文)。

更多信息

Data Access Application Block 的设计和开发是建立在 Data Access in .NET Architecture Guide(英文)中讨论的最佳开发经验和通用设计原则基础之上的。请阅读该指南,以了解有关数据访问的详细信息。

合作者

衷心感谢以下投稿人和审阅人:Susan Warren、Brad Abrams、Andy Dunn、Michael Day、Mark Ashton、Gregory Leake、Steve Busby、Kenny Jones、David Schleifer、Andrew Roubin (Vorsite Corp.)、Jeffrey Richter (Wintellect)、Bernard Chen (Sapient) 和 Matt Drucker (Turner Broadcasting)。

同时感谢内容组的以下成员:Tina Burden (Entirenet)、Shylender Ramamurthy (Infosys Technologies Ltd) 和 Filiberto Selvas Patino。

posted @ 22:20 | Feedback (0)