微软的.NET策略并没有将VB6的开发者们置于绝境。.NET给用户带来的好处之一就是可以很容易地创建Web服务。另一个好处就是它可以与Component Object Model互补,后者是创建VB6组件和ActiveX 的基础。
VB6开发人员已经了解到.NET 组件可以像COM 组件一样的注册,因此,VB6开发人员可以为已注册的组件创建一个参考目录,而且可以在他们自己的项目中使用那些组件,这个消息让他们振奋不已。这将会成为在VB6项目中利用.NET Web服务组件的一种好方法。
在本文中,我建立了一个简单的.NET Web服务组件,还建立了一个代理服务器,并且我在VB6中没有利用SOAP工具箱却成功地使用了这个代理服务器。在.NET中建立Web 服务很简单,这是因为HTTP是通过SOAP来传送的,它的基础存在于.NET Framework中。也就是说,对于大多数.NET开发人员来说,它是完全透明的。.NET 开发人员用一些众所周知的方法来建立一些类,就像他们在任何一种开发环境下一样。不过,当他或她编辑项目的时候,他会同时建立WSDL和支持Web 服务功能性。这是在.NET 中创建应用程序的最大好处。最有可能的是,如果你的电脑上装有ASP.NET Web Matrix IDE(它包含了一个可以自动创建代理服务器的工具)的话,你就可以通过用户代理服务器享受.NET Web 服务。你也可以用.NET Framework里面的命令行工具来创建代理服务器。当你创建了这些代理服务器,它们包含了源代码,你就可使用这些编码,这样,你就可以像在VB6中使用一个已注册的COM组件一样的使用该代理服务器的功能性了。
创建一个方案
首先,创建一个.NET Web服务,它可以提供一些简单的功能,但这些功能只是有用的业务函数的一些代表,而这些业务函数可能就是你想要建立的Web服务。让我们建立一个服务来从数据库中获取信息,并向用户提供这些数据。这也是绝大多数商业功能所要达到的目的。代理服务器会使用那些Web 服务,而且会像一个COM组件一样的被注册。最后,一个标准的EXE文件会使用COM代理并在一个窗体的文本框中显示结果。
首先,在Visual Studio .NET IDE中创建一个.NET Web服务应用程序,或者你也可以在上面提到过的ASP.NET Web Matrix IDE中创建这一方案。将图表A中的编码添加到新建的项目中。
在前面的编码中,你可以看到我们创建与数据库(这里是SQL Server)之间的连接,通过使用那些取得用户认证信息的方法来得到那些用户信息,创建并返回User类型。
编辑这些编码,并将你的浏览器导航到你的Web服务的URL例如:
http://localhost/MyWebService/UserService.asmx,这样可以测试这些编码的功能性。你应该建一个页面,里面列出你的服务方法。点击这种方法,就可以得到一个进入用户ID的文本框。输入一个有效的用户ID,点击激活按纽,再在下在页中检验返回信息。你应该会得到一个返回的XML,如图表B中所示。
如果顺利完成了上面的步骤,我们就取得了初步成功了。如果没有,正常的错误可能是安全性错误,如访问数据库。在你的web.config文件中,一定要确保认证类型设置成“Windows”,并通过以下编码来添加身份:
〈authentication type="Windows" /〉
〈identity impersonate="true" /〉
在这里,你可能需要添加IUSR_(计算机名称)访问到数据库中。你可以将这个用户添加到公共角色并且在你的用户信息桌面上公开赋予他SELECT的权限。不过,你应该通过Services Manager关闭匿名访问页面。
在下一篇文章里,我将会同时使用命令行工具和Web Matrix IDE创建Web服务代理服务器。我会组装那些编码,好让它可以被当作一个COM组件来使用,并且重建DLL。然后,我会创建一个标准的VB6 EXE,它会提供代理服务器COM的参考目录。
如果你还不是很熟悉.NET中的Web 服务,ASP.NET Web site中为你提供了一些简单的关于在.NET中创建Web 服务的例子,这个方法很管用。