日期:2009-11-10  浏览次数:20405 次

我注意到这里有一个ASP的tag,他的作用是标示一个控件吗?
是的,他的前缀,ASP的前缀。表明这是一个ASP的控件,后面的部分表示这是一个服务器端的控件,是在.NET框架下定义的。我么也可以形成我们自己的控件并且给他们一个独立的前缀,实际上我们已经为我们的站点定义了一些我们内部使用的控件。好,现在,我们看一下这个程序的运行结果,这个运行结果与上面的结果相似,所不同的是数据库访问依赖的是SQL provider,另外,增加了一个小小的定义背景色的属性。我们这个程序与上面的程序的设计基本相同,但是却很容易添加这样的属性,我们每天都用这样的方式处理成吨的表格、添加许多种其他的属性。实际上,这也是使用服务器端控件的好处,他能使我们更容易在HTML中表现方法和属性,他使得编程工作更容易,更快捷。


因此,我们看见这段代码与前一段代码的主要区别是他不需要让程序员编写遍历整个records set的WHILE循环。也不需要在HTML中的某个合适的位置显示结果。你可以很简单的生成一个表,然后告诉他:你的值来源于records set。
对的,是这样的。刚才有一件事情我跳过去了,就是你说的那件事情。我们回过头来在看一下那段代码。我们用名字调用这些data grid并且将他们捆绑到来源于data set的结果以及 data set.中的一个特定的表格,接下来的工作就可以使用这些数据了。
dgCustomers.DataBind()

上面的例子是一个将一个很简单的表格显示在屏幕上的程序,这种表现方式看起来是简单有效的,但是,对于一个比较复杂的表格,还要进行很多次的复杂运算以及显示更为花哨的字符串等要求的程序仍然可以用同样的方式遍历整个records set吗?
当然可以,这实际上是.NET服务器端控件的一大特点。我们很容易对datagrid做一些客户化的定制工作,因为,他是一个很基本的原始表格。也可以对datalist做一些客户化的工作,使他的每一行或者每一个单元对应一条记录。我们可以通过循环的方式用模版定制他的每一个重复的地方,有一种repeater数据控件,允许完全用模版定制他的每一步,因此,我们有一个头模版和一个一个尾模版分别定义了模版的起始和模版的终止。我们还有一些item 模版和一些 alternating item 模版,他们可以为我们提供更多个性化的设计。我们还有很多的好东西放到了网站ASPNextGen.com上面,在那里我们用data repeater作了许多的工作,同时也提供了更多的客户化的输出。

太好了,太好了,我可以像现出那些激动人心的功能,刚才你提到了你可以开发你自己的控件放到页面上去,如果现在的table grid控件不能够满足你的需求,你可以写一些自己的代码并将改造过的控件应用到任何你想要用到的地方。
是的,不过最有意思的是,你不仅仅可以定制你自己编写的控件,而且还可以扩展服务器端组件的功能例如我可以扩展data grid功能,以满足我自己的特殊的需求。做这些事情,我们可以使用我们完全编译的服务器端控件,也可以使用一种另外一种控件---用户控件(user control)。用户控件是一种中间件,他介于页面控件和服务器控件之间,你可以通过用户控件显示方法和属性,也可以表现更多的功能。

开发这些额外的用户控件要比单纯写一个ASP的程序复杂,但是可以获得更加强大的功能,是这样的吗?
你提了一个好问题。开发用户控件的复杂性会令你非常吃惊的。如果你创建一个ASPC类型的文件,并且写一些HTML在文件里面,你就已经拥有了一个最简单的用户控件。如果你想让一个页面内容包含在每一个页面里面,你可以将这个页面定义为一个HEADER,像使用INCLUDE文件那样使用它。你可以很容易在你的用户控件中包含HTML的结果。因此,最简单的用户控件程序就是HTML程序。此外,如果我想用同样的方式在这些页面中加入一些代码,我可以在用户控件中提供一些功能并且暴露一些属性。例如,我想在每个页面上设置我的用户控件背景色,我可以在我的用户控件中暴露背景色属性,
但是,从另外一个角度来看,这将会是一件相当复杂的工作。例如,你要做一个服务器的控件,一个 data grid 控件不会很容易地。因为它涉及到NET框架中的一些东西。有一种创建此控件的方法,必须发生在提交方法之前,发生在子控件被提交页面之前。因此,如果你要做数据绑定或者设置背景色等工作,你就应该在合适的时间内完成,否则当该页面被提交时,你将得不到你想要的东西。如果从这些方面来看,做这种控件将会是是一件复杂的事情。我曾经做过一个控件,一个ad rotator控件。它相当于.NET服务器控件的一个子控件。它可以绑定到一个XML文件上,该文件完成的是当页面被访问时在你的的站点上显示不同的广告。在他的存储表单里面,有一个图像的URL指向图像文件,一个导航URL,当你点击广告时,该URL将你带到与该广告相关的那个页面。这个页面是不固定的,因为它涞源于不同的厂商。该页面可以是图像,也可以是文字。
到目前为止他还没有提供给我们找到那个Banner显示了多少次的方法。因此,我在这个控件中加入了这个属性,就像是放入了一个倒计时器。因此你可以在XML文件中放入一个默认值,设置该默认值为一个人100或者另一个人200等。你的默认值会逐渐递减直到为零。此时图像将不再显示了。我想建立这种控件还是会花费的一定的时间的。
无论你是一个经验丰富的ASP开发人员还是一个经验不丰富的ASP开发人员,你都可以非常容易地做一个很基本的用户控件。但是,如果没有今天的技术,你可能要花很大的精力,可能要深入更底层去做许多工作,并且这一切还取决于你的经验丰富程度,以及系统提供的相应函数的丰富程度。
这有点像用汇编写一个HELLO WORLD的程序,那会是一个很复杂的过程。但是用C语言写这个程序则很容易。这并不意味着用C语言写所有程序都非常容易。但是,看起来好像这种方式扩大了开发人员的开发能力。因此,如果一个开发人员想开发一些运行在他们WEB服务器上的复杂的应用程序,他们要在ASP.NET上做很多的工作。

你认为ASP.NET未来将提供什么样的功能?给予ASP.NET的WEB SERVICE 将会被人们设计成什么样子的?
那些都是无止境的。不过信用卡的认证将会是一个巨大的功能需求。输入卡号、名字和地址,然后让WEB SERVICE返回每一部分的布尔值YES或者NO,接下来要么认证成功进行交易要么由于认证失败而退出。当然也可以返回名字拼写错误、认证完成的消息或者一个邮政编码是否有效等结果。
在这个功能上就这么多的东西,我们还有一些 WEB SERVICE的例子在我们的站点上,他们都是很基本的应用程序,你可以调用他们,他们都是我们放到网站上的一些教程程序,他们可以给你足够的你想要的信息。关于ASP.NET和WEB SERVICE,我认为会有一个巨大的市场和他们相伴而行。你应该知道一个叫Amazon.com的公司,他们做了许多将服务连接起来的工作。人们可以在他们自己的网站上销售书,但是书的信息却通过Amazon.com表现出来,那些销售书的人得到了信誉。这可以看成是WEB SERVICE的一个典型的例子。这个例子很好的表现了当你浏览一个书的列表时候,如何让这些书显示出来?无论是神秘小说还是StephenKing的小说,都可以通过WEB SERVICE返回结果。

Amazon.com实际上并不是你要访问的站点,但是你却可以从哪里得到图像、得到标题、得到书的列表信息。你可以用你喜欢的方式显示他们。

是的,WEB SERVICE的优点是他是基于XML的,因此你可以用这种方式得到信息,并且用你喜欢的方式处理信息。只要能够分析并处理XML信息,你就可以使用web SERVICE,因此你没有必要一定要跑到一个.net的web站点上去使用web SERVICE。

-------------
=---=================================================


什么是做.NET程序最重要的事情?如果你给我们观众一些指点,他们将会更快地接受ASP.NET。
好的。句法这样的东西,你已经用了很多次了。你只需要学习它们之间的不同就可以了。如果你遇到完全不同的处理方式,你就不必按照过去的方式去做了,因为你做脚本工作已经很长时间了,所以会有很多不同的东西需要学习。其次,关于assembly,namespace这些概念都要弄清楚。接下来,是语言的问题。我曾经是一个VB程序员,现在我是一个C#程序员,我喜欢C#,它是一种很,好的语言。如果有20行的VB程序C#5行就可以解决问题。但是对于COM,.NET框架的已经为你处理了那些常见的工作,所以你只需要编写一些业务逻辑的代码就可以了。

你说的是理解“什么是Assembly?“
是的,Assembly,namespaces、相关背景、整个.NET架构,都要理解。
理解namespace