荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Version (Who makes history and why), 信区: Program
标  题:  续上
发信站: 荔园晨风BBS站 (Mon Apr 14 11:04:23 2003), 站内信件

现在,我唯一需要做的事就是,我需要告诉系统请把这个方法作为一个web service
发布出去,为了做到这一点,在我刚才的时候已经说过,只是简单的在这个方法上加一
个web method.
现在我们存起来,并把它叫做demo.asmx. 现在让我们启动浏览器。然我来试试,点击这
个web service.
所以我要到localhost/demo/demo.asmx 然后只需要退后,看看什么发生了。
首先,当我点击web 页面,ASP.NET每次都会首先看一下这是不是第一次我点击这个web
页面,它是否编译成IL.
现在发生了什么,首先,我写的类,自动被ASP.NET编译。第二件事,ASP.NET注意到我
是从一个浏览器端访问的,是从一个web
service的客户端访问的。然后她会为这个web service自动生成一个测试页。现在来看
一下测试页。有一个add
method在这里,我只需要直接调用这个add method, 通过轻轻点击,然后测试页就会让
我输入两个参数,X与Y. 所以让我来输入32
和10,然后我们调用这个方法,这是这个方法就运行了。她计算的结果是42, 然后他自
动被作为XML传递后来。
所以web service 很像一个简单的花生壳。
现在让我再回到这个测试页。你会注意到不仅ASP.NET自动弹出这个测试页。并且他还会
在我的web service
上做一些分析。来看一看他是否遵守所有互联网上的标准。然后他发现,我没有把web
service放到一个XML的命名空间,如果我是一个习惯良好的开发人员应该做这些。接下
来,它会建议我应该修正我的代码。然后我说好吧,我只需要拷贝粘贴一点更正就可以
了。所以我只是抓取他,然后返回我的web
service.然后我粘贴,使得这个web service放到一个命名空间。
现在,现实是通过互联网来做一个简单的数学运算是很没效率的一件事—在大多数情况
下,人们可能是通过互联网来取一些数据。但是当我来看人们是如何在他们的应用中来
创建数据逻辑时,我会发现她好像来源于两种不同的学校。一种模式是,你会把你的数
据当成一个对象。你会有一个客户对象,一个订单对象等等。你从数据库中获得对象,
然后你给你的对象生成一个实例,然后你把数据放在那里,然后你在上面操作。
另一种模式,你只是简单的存放这些数据在他的表格中。你知道,今天,它就是记录集
。在ADO.NET中它叫做数据集。但基本上,你会认为它是一筐数据。
下面我要演示我们是如何将两种模式都支持的很好。先让我们来看一下把创建数据访问
看成是对象的方式。然后,事实上,在我的web
service里,我会创建一个数据库连接,然后我把它叫做web service. 然后我把它作为
一个对象。

接下来,首先我会粘贴一些东西,省得我来写所有的代码,一个叫做联系人的类,包括
一个名字,地址,与电话号码。然后我生成一个web service.
它可以返回一个联系人的列表, 我只是把它粘贴上来。
现在,当然,在现实世界中,你不会只是简单的使用这些对象。他们会生成一个数据库
。我只是想显示,web
service能够返回一个结构化的数据,并且可以操作他。这里你看到我通过我的调用方法
,可以返回一个联系人的阵列的对象。
让我们来试,并且存一下。然后我们回到我们的测试页,我们只是简单刷新一下测试页
。然后你看到发生了两件事。首先,ASP.NET发现我的web
service文件修改过了,所以他重新编译。她产生了一个新的测试页。在新的测试页里,
原来在底端提示的错误信息没有了,因为我修正了丢失了的命名空间,我现在有一个连
接,这个连接是到一个我写的附加的方法。Get
contacts 方法。然后我试着点击这个连接,因为没有参数,它只是让我简单的点击调用
按钮。
这里你可以看到结果已经被格式成很好的XML. 请注意这里,我绝对是什么都没做,它就
将联系人的对象转换成一个XML,
这里他是一个联系人的阵列,在这个阵列里,每个联系人都有名字,地址,电话号码。
所有这些都是自动完成的。
曾经有些人与我争论,他们希望这个联系人的数据库,每一个联系人不要通过XML元素来
传递,最好使用XMl属性来传递。
现在,我们回去,然后加一些指示在这里,来控制产生XML的形式。为了做到这一点,我
首先使用:system.xml.serialization
然后在我的对象的域上加一些属性,实际上我们是把XML域转换成属性,而不是元素。在
名字上做这些,然后我们做其他的,
我们只需要拷贝,然后粘贴,然后我们把这个对象的地址域转换成adder属性,然后把电
话域转换成ID属性。
然后我们存起来。我们回到测试页,然后我们刷新我们的web service的结果,它将重新
调用web service.
新的格式出现了。这时,你发现XML的格式奇迹般的从使用属性,转换成了元素。所以你
可以看到这个工具给了你超强的控制能力。

现在,另外一个传递数据的方法,或者是应用操作数据的方法,只是生成和返回一个完
全的记录集,它基本上反映了一个sql 查询的结果,我们当然也可以在web
service里实现。事实上,只需要回去,再让我家一些逻辑在这里。首先,我将加几个使
用子句,然后输入进来数据命名空间。然后我们抓一些方法进来,粘贴在这里。这是一
个小的方法叫“get
data”,它使用一个查询字符串。然后她产生一个连接。她为这个连接生成一个适配器。
然后她生成一个新的数据集,然后用执行的结果填充他。
然后我们存起来。然后回到我们的web service. 我们将再次刷新这个测试页。你发现他
又一次编译了。我们看到“get
data“的方法,然后我们调用他。然后,当然,它需要我们填写查询字符串。然后我们
敲入字符串。 我们写:say select * from
customers,然后我们安执行键。
现在,我们看到的是sql 查询返回的一个XML格式的查询结果。事实上,如果你往下看这
里,你会看到每个表的项,比如说有 客户ID
与名字等等。但在这个XML的开始处有一个描述,描述这些数据的格式。所以这些数据不
仅包括实际的纪录,
他也包括一个描述,描述这些纪录的意义。以便于客户端应用理解如何显示这些数据。
然后我们来试一下,创建一个客户端的应用来调用这个web service. 所以我们关上所有
的窗口,然后我们启动Visual studio.
让我们生成一个自己的项目。我们将生成一个Visual
basic的windows表单应用。然后我们叫他客户端。然后我们的windows表单设计器出现在
这里,然后我们试着来做一个客户端的应用来调用我们的web
service.
并将数据显示在栅格里。所以我们抓取数据栅格,把它放在我们的表单上。我们在抓一
个按钮过来。把它放在我们的表单的小面的角上,试着弄得更整齐一些。好了。
现在,为了调用这个web service, 首先我们加一个引用。在我先前提到过。Visual
studio自动完成这些步骤,比如说输入web
service的描述文件,并且给web service提供一个代理。所以我们只需要简单的点击右
键然后说“add web reference”
在这,我们只是点击我们的web service. localhost/demo/demo.asmx
这里,我们再看一下。服务做好了。我们只是加了一个引用并输入他们。
现在我们可以写一些按钮后台的代码,这里我们写:“dim S as new local host.”
因为我没有改变命名空间,我所引用的命名空间,依然是本机的命名空间。现在你可以
看到web service上完成的语句。你可以看到my
service对象,存放在本机的命名空间上。这正是我刚才写的服务。所以我只是定义他为
一个对象。
现在我可引用我的web service. 然后我所做的是“data grid one.data source”。所
以通过我的get data 方法从web
service上得到我的数据栅格。现在你可以看到我的任务完成了。她知道要去取一个联系
人,一个get
data的方法在哪里。实际上,她知道当我点击取数据,它会让我输入一个查询字符串,
所以我输入select * from customers,
然后我会取出第一个表,从数据集里出来的第一个表。不象一个记录集, 他提出来的是
多个表。我们只是选择第一个返回。
所以两行代码来调用这个web service. 让我们试一下,运行这个应用。当你单击这个按
钮。这个结果作为xml格式返回,并且把数据放到了数据栅格里。
现在,当然,你的工作不仅是写一个丰富的客户应用,你还得实施这个丰富的客户应用
。我们可以让你很容易的在.NET框架上实施这些应用。实际上,你可以通过在一个web
页上的一个连接来开发你的丰富的客户端应用,我来演示以下如何做到这一点。
首先,我到我的项目里。到我的属性里。然后我改变我的build输出路径,是网站的根路
径。所以当我创建时,Visual
studio将一个exe拖进我所创建的web服务器的根路径。
所以我们创建, 然后我们再回到visual notepad, 我们将写一些HTML的页,连接到丰
富的客户端应用。所以我们启动HTML页。我们把它叫做H1.


以便于我们容易的叫他。然后我们说“点击“然后我们生成一个H 引用到Client.exe,
他坐在web服务器的根目录下,所以点击这里,运行这个聪明的客户端应用。我们把它关
上,然后我们存出它,我们就叫他启动HTML.
现在让我们来启动浏览器,然后点击这个页,我们到 localhost/demo/start.html.
在这里,你看到一个web
页,我刚才所写的,连接到我的客户端应用。所以当我点击这里时,所有这些都发生在
同一台机器。但当我点击这里,我实际上是下在应用到我本地的机器。在互联网下载缓
存区来运行他。
这时应用在运行,我可以点击这个按钮。然后他可以与web service对话。
现在你会问:“好吧,那安全性又是怎么样的?” 实际上,应用是运行在一个沙盒中,
他保护你的调用你的web service,而不是来自于相同URL的其他web
service. 他不能够在磁盘上生成文件,等等,有一个整套的边界在哪里。为了显示这一
特性,我把它关上,然后回到Visual studio
然后,我来试图在我的应用中加多几个按钮。然后我来写一个事件处理器来试图做些坏
事。我们不打算做得太坏,所以我们只是在这个服务器的根目录下生成一个文件。所以
我们只是简单得说
system.IO.file.create 然后我们试图生成一个log.txt在根目录下。
我们build一下,然后会生成一个新的exe在我们的web服务的根目录下。我们回来,启动
我们的web页面。我们再次连接,他会下载一个新的可执行文件。你可以看到我们有了一
个新的拷贝,因为我们有两个按钮。我依然调用这个web
service. 但当我试图在根目录下生成一个文件,我得到了一个违反安全的警告。你看到
,他说应用试图要做些。。。。等等,这是安全政策所不允许的。
现在,有趣的事情是,我可以继续运行,因为它都是通过意外处理来处理的。只是每次
当应用试图做些坏事时,他都会被停止。
上,然后我们存出它,我们就叫他启动HTML.
现在让我们来启动浏览器,然后点击这个页,我们到 localhost/demo/start.html.
在这里,你看到一个web
页,我刚才所写的,连接到我的客户端应用。所以当我点击这里时,所有这些都发生在
同一台机器。但当我点击这里,我实际上是下在应用到我本地的机器。在互联网下载缓
存区来运行他。
这时应用在运行,我可以点击这个按钮。然后他可以与web service对话。
现在你会问:“好吧,那安全性又是怎么样的?” 实际上,应用是运行在一个沙盒中,
他保护你的调用你的web service,而不是来自于相同URL的其他web
service. 他不能够在磁盘上生成文件,等等,有一个整套的边界在哪里。为了显示这一
特性,我把它关上,然后回到Visual studio
然后,我来试图在我的应用中加多几个按钮。然后我来写一个事件处理器来试图做些坏
事。我们不打算做得太坏,所以我们只是在这个服务器的根目录下生成一个文件。所以
我们只是简单得说
system.IO.file.create 然后我们试图生成一个log.txt在根目录下。
我们build一下,然后会生成一个新的exe在我们的web服务的根目录下。我们回来,启动
我们的web页面。我们再次连接,他会下载一个新的可执行文件。你可以看到我们有了一
个新的拷贝,因为我们有两个按钮。我依然调用这个web
service. 但当我试图在根目录下生成一个文件,我得到了一个违反安全的警告。你看到
,他说应用试图要做些。。。。等等,这是安全政策所不允许的。
现在,有趣的事情是,我可以继续运行,因为它都是通过意外处理来处理的。只是每次
当应用试图做些坏事时,他都会被停止。
我今天会花几分钟来看一下,Visual studio.NET 是如何简单的开发那些应用。
我将启动开发环境,并产生一个新的项目。所以我点击新项目。然后她允许我选择我想
要生成什么样的项目。
现在,我说,我想生成一个web service,然后返回一些关于书的信息。所以我点击asp.
net web
service.然后我想,我将调用这个书的服务,然后我点击okay.
Visual studio现在将连接web 服务器,为我生成一个应用的根目录, 把那个文件放在
那里,然后我需要为了生成这个web service,
我打开设计视图。
现在,这个设计视图是visual
studio.NET的新功能。她可以让我很容易的调用那些我正在开发的一些组件与泪。她与
我们平常使用表单,拖拉拽方式很相似,拖拉一个组件,设定他的属性,处理他的事件
,不需要写那些所有管道性的代码。我可以集中精力在我的商务逻辑上,我想要的代码
由web
service自动实现。


现在,Anders给你们演示了如何简单的用XML格式从web service上生成数据,返回数据
。 我会演示一个类似的过程,我将使用一些在visual
studio开发环境中一些丰富的工具。

我将介绍一个visual
Studio.NET的新功能,叫做服务浏览器。这个服务浏览器是一个很好的方法来从服务器
端取得资源,然后在此基础上来编程。在这个例子中,有两件事。当我有了数据连接,
我就可以访问SQL
servers.以及其他类型的数据库,我现在有一个服务列表,现在我只有一个在那里,那
就是我自己的机器,但我可以在里面加其他的。
我想做的事情就是,当有些人调用我的web service时,我可以从SQL server上取数据,
然后返回结果。
所以如果我展开这个节点,我会看到一个数据库透视图。以及连线与存储过程。如果我
扩展这个表,这有一个书的表。这是一个我想用到web
service里的表。我可以拖拉拽的方式,拖到设计界面。Visual studio.NETE会自动生成
组件,这些组件是我所需要的,从SQL
server中取出的数据。
在这个例子中,他生成了两个组件:一个连接,他允许我连接到SQL server
然后在那里执行命令,它叫做数据适配器。一个数据适配器就是用来做这些事情,他把
数据从SQL
server中取出,然后把它放在我想要的表单中,然后放在一个数据激励。Anders刚刚提
到过这个概念。
现在,正如我所说的,这在很多方面都很象表单,除了它真的是一个我所工作的类之外
。 但它与表单相似之处,就是我点击这个组件,
然后来到属性窗口并给他们设置属性。所以,例如,也许我不想让我的web service叫做
service 1。
他只需要简单的来到属性窗口来更改他的名字。我叫他书服务。
在默认情况下,我所生成的数据适配器,会返回所有数据。我真的不想要那么多纪录。
我想让一些人能够告诉我需要有关书的什么信息。
所以我回到属性窗口,我可以点击配置数据适配器连接,然后他会带我到一个向导,向
导会带我做这些。她问我什么适配器我想要。这里只有一个,所以我就选择这个默认的
。现在她问我我想怎样更新我的数据,以及如何从我的SQL
server取数据。按照默认方式,我选择SQL 语句,但我将选择生成一个存储过程以便于
我可以依赖于SQL server,
并且我可以得到更好的性能与可扩展性。并且Visual Studio.NET自动为我生成存储过程

当我点击“下一个”,我们可以看到磨人的选择语句,向导想让我们用它,然而他会返
回所有记录,但我真的不象这样。所以,我可以快速点击查询生成器,打开他,ISBN是
我想要的,客户将会拿ISBN来查询,然后我会基于所给的ISBN来返回数据。所以我到标
准域来写入”equals@ISBN”,
这样它将问我ISBN, 或让我问一个ISBN号码,然后只是返回一本书。
我点击OKEY. 现在向导想让我给存储过程起个名字,他将自动为我生成这些,所以我叫
他 选择一本书,如果是插入,我也可以叫他书的插入等等。然后我按结束。
Visual studio.NET连接到SQL server然后为我自动生成存储过程。
所以现在我有一个很容易的办法来连接到我的SQL server并且取回一本书。
现在,另外一件很棒的事情,就是当我使用属性窗口时,从SQL
server取出的数据表单的名字默认就会被设置成数据库中每一列的名字。并且许多时候
我的DBA命名的方式都不是我在对象模式中所希望的。
所以我可以不再管理每个表的映射属性问题,并且提供一个对话框,可以让我按照功能
来命名这些表格,以便于我可以有更直观的对象模式。
所以这里当我看到它们命名的所有书名都是大写字母,而我的对象模式从来不用大写字
母,所以我可以把他们改成正常的大小写。到这里,发现价格他们给他起个名字是MNY在
前面来说明这是钱数,我猜测,但对于我来说,我更想让他叫价格,所以我敲击确认键

现在我把所有的配置都按照我想要的方式来设置了,所以我可以更容易得与SQL server
交互信息。
到现在,我还没有写任何代码。Visual studio.NET处理了所有这些属性设置问题,并帮
我确保所有这些的映射工作可以执行。
现在,最后一件我想做的事时,回到我的服务器端浏览器,并且刚才Anders在他最后的
几张幻灯片中提到了服务器端的RAD快速开发功能。这里有一套Visual
Studio.NET带的功能可以使你更容易的开发服务器端的程序。服务器端浏览器就是其中
的功能之一,但我们也生成了一系列组建可以使通常的服务器端的任务更容易。


在这里例子中,我想用性能计数器来数一下有多少人正在访问我的web service,
以便于我可以看看是否它具有我所需要的能力,看看是否我需要加多几台机器或改变一
些设置。
所以我来扩展我的服务器,这里我可以看到一个事件日至的表,以及消息队列并且性能
计数器在这台机器上正在运行。
如果我展开性能计数器,天哪,这可是一巨大的列表。.NET框架加了许多的东西。如果
我向下浏览,我会发现一大堆有关SQL
server的性能计数器。但所有这些都不是我想要的。
所以Visual
studio.NET可以很容易得为我生成一个新的我想要的性能计数器。我可以点击右键,然
后说“生成新的类别“。我将把它叫做书类,然后在那个类别中生成一个指定的计数器
,在这个的例子中,我把它叫做查询计数器,来数一数有多少人查询我的web
service. 然后我点击确认。
Visual studio 可以为我在这台计算机上生成性能计数器。并且也可以在这个网络上另
外的机器上生成计数器,只要我有管理那台机器的权利。
现在我可以看到他已经生成了这个类别,这是一个查询计数器。为了在我的应用中使用
它,我只需要简单的拖拉拽,把他拖到界面上,然后我就有了一个组件,我可以很容易
的使用属性窗口,例如,为了改变只读的属性从真到假,以便于我可以写他,其实这里
我可以做很多其他的事。但这里真正的益处是在这里你根本不用写代码来例示这些组件
并且可以设定他们的默认状态。你可以可视化的处理这些,然后你可以集中精力在你想
写的web
service
的代码上。
现在,我已经把所有的组件都设置好了,我将双击这个界面,这将把我带到后面的代码
中,这种方式很像我使用表单后的代码。在这里,你可以看到我所作的基本上与Anders
所作的。我将生成一个公共的功能。所以我说
public.function.ge.info.for并且我想返回的是一本书,并且我想让被人发给我ISBN号
码,并且它们可以发挥一个字符串,并且这个功能将返回一些我忘了放在这里的事情。
让我回到钢材,最后一件我想做的事。正如Anders所谈到的,我也讲到一些,数据集实
际上是我执行查询时,所返回的数据。并且数据集是从数据可分离的并且以XML的格式发
回来。在这个例子里,我需要高速数据适配器来为我生成我可以用的数据集。
所以我只需要点击右键说“生成数据集”, 我将告诉她我想调用书的信息。现在这里是
一个表格的清单,我可以在我的数据集里用。
最棒的地方是,在数据集里它不仅只包括一个表,它包括多个表,并且包含这些表之间
的关系。在这个例子中,我只有一个表。我将告诉他继续,并且增加一个设计器,以便
于我可以很容易得在web
service里用它。
现在请看,我们有了一个数据集,叫做一个书信息
我将转回去看我的代码,现在我可以完成这些,并说我想从这个数据集中返回书信息。
所以现在我有一个公共的功能,并且所有我所需要做的事情就是调用Sql server适配器
,调用SQL server, 返回数据。
我需要做的第一件事情就是要告诉SQL数据适配器ISBN号码是什么。如果你记得,我曾告
诉过你们,我想做一个参数的查询。所以我进来,并且我告诉他,我要做选择命令,这
有一个参数属性,可以让我说出我想有什么样的参数。我想指定ISBN,
我想设置成那些从客户查询时传递来的ISBN. 所以创建的存储过程以便于我可以调用。


所以下一步我该做的事是,我需要做一个SQL 数据适配器,并填入一个方法。这将填入
一个数据集,这个数据集在我的web service上,被叫做一个书信息。
我想让他来启动我的性能计数器,他已经在那里,我所需要做的所有事是说“performan
ce counter one.increment by on”
并且现在我做完了。我只想返回我的数据集,那个叫一个书信息。现在我已经有一个全
功能的web service,并且我现在,使用了很多visual
studio中的功能,并且增加了很多价值,但只用了很少的代码。
如果我按FY, Visual studio可以自动启动一个浏览器,并把我带到我的web service,
显示给我刚才Anders 刚才给大家显示的相同的页面,
它可以让我来测试这个页面。
但他什么也没显示出来,因为我忘了放一个web method, 那是一个属性,告诉visual
studio,这是一个公共的功能,把它作为一个web
method发布到网站上。
现在当我按F5, 他会点击web service,
它可以拿到我的信息。我可以继续,他会继续问我一个ISBN号码。很幸运,我正好放在
粘贴板上了一个,所以我也不需要记住他,并输入它。我点击调用,他会调用web
service 这个web servcie连接到SQL server. 并且,正如Anders 给你们看到的,我取
到了类似的东西。我得到一套XML。
所以我可以很容易的使用服务器端的资源,SQL server的资源,性能计数器以及一整套
服务端浏览器提供的烈在那里的功能。
现在,我得到了我的web service, anders 显示了如何使用visual studio常见丰富的客
户端应用。我将用Visual
studio.NET在这个web service上来生成一个丰富的web 客户端。
我将跳过这一段,我加一个存在的项目,我已经实现做成了的,他在Http://localhost/
bookapplication下。如果我打开他,我会得到一个简单的页面。他不是很好看。我没有
机会用一个设计器去设计,或做任何修饰的事情,但他有一个文本框,可以让我输入ISB
N号码。并且它有一些标签,显示作者与书名。
现在我需要做的第一件事,刚才anders已经给我们显示了一下,他告诉visual
studio.NET我想使用一个web service.
我来到解决方案浏览器,找到web 引用节点, 然后我选择“增加一个web 引用“他已经
在我的下拉列表里,于是我选择他。
现在,从这里,我也可以检测我的web service, 并且看它是如何工作的,正如我在浏览
器端所作的,但这是我只是说”增加一个web 引用“ visual
studio会自动为我生成我所需要调用web service 所需要做的事情。我就像调用一个对
象一样调用他,所以我有一个我非常熟悉的编程模式。
我将双击这个在表单上的按钮, 在这个后面,我要生成一个叫做WS的变量。并且它是lo
calhost.bookservice.
我需要生成一个变量来包含返回的数值,数据,所以我将说dim data as. 现在又是loca
lhost, 并且书信息正是我的数据集。
现在,为了调用web service, 我只需要简单的说 data=ws.getinfofor.
现在我将从文本框中取出数据,在web也上的文本框,textbox1.txt并且在里面调用web
service.他将用返回数据,填充数据集。
然后把我所得到的作者标签数据放到标签上。我将给文本框设置数据。
现在,正如我早些时候说的,数据既可以包含多张表格,所以在这个例子中,我叫他dat
a.books, 因为那是个表格。我将说sub
zero,因为它只有第一行,并且sub zero 是第一个。 现在我可以适用语句来完成,从s
QL
server数据中找到我想用的字段,在这个例子中,我们上次用了作者,所以我们这次用t
itle字段,data.book.subzero.title.
现在最后一件事,我需要告诉visual studio,我想运行这个项目,当我按F5时。但另外
一个visual
studio所增加的好处是,他有丰富的debugging. 所以让我来看一下,非常快的。
让我们来使我们的web servcie与我的web
应用不能正常的工作,我需要找到什么地方有问题。我可以在我的web页面后面的代码中
设置断点。我可以回到我的web service. 然后在web
service里设置一个断点。然后我可以回到服务器浏览器,回到存储过程。这就是为我生
成的。打开所选择的存储过程,在那里设置断点。
现在,当我按F5时,visual studio将自动启动浏览器,带我到我的web 应用,或者我刚
生成的web
页。这里我可以继续,粘贴我的合法的ISBN号码,把它输入,然后我点击“取”那些我
在按钮后写的代码,它将执行,但因为我设置了一个断点。所以这个代码可以在另外的
机器上。我依然可以进入因为visual
studio的开发环境。我可使用所有的visual studio提供的丰富的debugging功能。
我可以按F8然后一步一步走。
现在下一个调用,就是在数据适配器里填充代码,这也可以放在另外一台机器上,但我
可以走到web
service上,它可以给出一个调用。这是我点击断点,我可以仔细看一下ISBN号码是如何
传入的。
我走到这里.
现在,下一步,就是填充我的数据适配器,调用SQL server上的存储过程。 所以当我走
进来时,实际上我已经进入了SQL
Server并且进入了存储过程,又一次,我使用了丰富的调试器。我可以看一下是什么样
的值,使用丰富的visual studio的界面来体验非常棒的调试经验。
我可以继续按 F8 并且只是简单的继续走下去。然后我将按F5, 他将带我回到浏览器。
完成他,从SQL Server.中取出数据填充这些字段。
(掌声.)
所以我有一套的功能可以让我很容易的生成应用并调试他。
并且另外一件事我想演示的功能,是让我非常激动的一个功能,他是在visual
studio的企业设计师版中的。他就是微软应用测试中心。刚才我演示了如何容易的生成
这些应用,并且调试他,现在我想演示他是如何容易的测试应用的能力的。
我这里有性能计数器。我将继续用我刚才加的性能计数器。实际上,我需要更新一下他
。所以我再一次启动他。去掉那些默认的数值。书的类别,以及查询计数器,你会注意
到当我放到这里,他会显示两个,因为到目前为止我曾经调用过他两次,所以我的性能
计数器一直是在工作的。
但当很多人来调用这些应用怎么办?我将近来,启动我的应用测试中的界面。他可以帮
我生成测试,来自动点击我的Web service以便于我可以看到他有什么样的性能。
我可以在测试上点击右键说生成一个测试。并且我可以生成一个空的测试,或者选择记
录一个测试。我想做的是记录一个测试 他将进入VB script,
这对我很合适,然后我开始记录。
应用测试中心为我启动浏览器。他开始记录我所做的事情。所以我进到里面。选择我的w
eb 应用,我刚才运行过的,粘贴一个ISBN号码,选择取。他将出去点击Web
service, 并取回数据,放到页面上。
如果我回到我的性能计数器。我们看到他蹦到了3,因为我的web
service被纪录。但如果我回到应用测试中心,我选择停止纪录。选择下一个,给他一个
测试名字。我叫他书测试,
并且选择结束。现在我有一个书测试在我的列表中。如果我想的话,我可以看一下他为
我生成的描述语言。我可以点击右键,看到一整套的属性在哪里。那里我可以设置我要
多少个浏览器连接到这里。有多少用户我想同时测试,有多长时间我想测试。我只是把
这些都留成默认值。并点击运行,他将启动这些应用,并将显示我,什么将会发生。
如果我回到性能计数器,天哪,我突然有了一大堆东西在里面,因为现在我们可以看到
高达400, 500. 所以它不断的点击Web
service一遍又一遍。于是我回到应用测试中心,得到一个图形化的界面,可以知道每秒
钟有多少请求,有多少错误等等信息。
所以它可以很容易得让我测试,并且让我可以看一看它的能力。.

(掌声.)

最后,我很高兴能够在今天早上,给你们演示,visual studio.NET是如何容易的生成.N
ET 应用,如何debug, 以及如何容易的测试。非常感谢大家。
(掌声.)

ANDERS HEJLSBERG: 谢谢, Rob.

所以今天在Bill的致辞中你们已经看到了许多客户在.NET框架,以及visual
studio.NET上创建并实施了应用。希望Rob和我已经演示了他是如何容易的创建你的应用
,如何容易的使用web
service,有很多信息已经在那里,你可以拿来用。有超过150种的书,与杂质,培训,有
20多种的语言已经可以在.NET框架上使用,我们有超过65个的visual
studio的集成合作伙伴,一整套的组件供应商。有超过25家的ASP.NET 应用宿主公司可

所以从现在开始来写.NET应用。所有这一切都为你准备好了。我代表Bill以及我自己,
与我们整个Visual
studio开发队伍,我真地向感谢你们到这里来参加我们精彩的发布会,我希望你们可以
在使用着一个工具中找到很多乐趣,就像我们已经做的那样。
谢谢。
(掌声)
结束


--
                      *
          *                                  *
                          *             *
                      no more to say
                  ★     just wish you   ★
                            good luck

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.50]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店