可配置的 WebService 服务器






2.57/5 (7投票s)
2003 年 9 月 25 日
3分钟阅读

65186
在运行时更改 WebService 服务器位置。
引言
我一直在创建许多小型应用程序,这些应用程序接收文档并将其传递给 Web 服务进行处理。 我在开发计算机上开发了 Web 服务和应用程序,完成后会将所有内容复制到生产计算机。 在我开始将应用程序迁移到第二台计算机(应用服务器)并将 Web 服务留在生产计算机(处理服务器)上之前,这工作正常。 我发现我需要将应用程序的 Web 引用从 localhost
更改为 ProdServer
(处理服务器)的位置。 同样,这很好,直到(处理服务器)崩溃并且不再可用。 我将 Web 服务移动到应用服务器上,并再次重新编译应用程序以具有 localhost
的 Web 引用。
我开始认为,如果我可以更改配置设置并让应用程序指向不同的服务器以获取其 Web 服务,那将会更加有效。 如果这是可能的,我可以将应用程序指向测试服务器并重新启动该应用程序。 当生产服务器被纠正后,更改配置,重新启动应用程序,然后让它运行。 经过一番研究,我发现我可以相当简单地做到这一点。
解决方案
当您使用 VS IDE 创建 Web 服务的引用时,它会自动生成一个名为Reference.vb的文件。 在这个文件中,我发现有一个对 Web 服务所在服务器的 URL 的引用。 我复制了这个文件,并删除了所有对当前 Web 服务的引用。 我创建了一个类文件,并将来自Reference.vb的代码粘贴到我的新类中,命名为DynamicWS
。 我将我的应用程序中的每个引用从localhost
更改为DynamicWS
。
接下来,我对 DynamicWS
进行了一些小的更改。
Public Sub New()
MyBase.New
Me.Url = "https:///DynamicWS/DWS.asmx"
End Sub
更改为以下内容:
Public Sub New(ByVal ServerUrl As String)
MyBase.New
Me.Url = "http://" & ServerUrl & "/DynamicWS/DWS.asmx"
End Sub
修改 DynamicWS
后,我对 Web 服务声明进行了简单的更改
Dim S1 As New localhost.Service1()
改为这个
Dim S1 As New DynWS.Service1("localhost")
概念验证步骤
首先,您需要两台能够托管 Web 服务的机器。 接下来,在每台机器上,创建一个基本的 Web 服务,并取消注释基本项目中的 HelloWorld Web 服务。 在 1 号机器上,将 HelloWorld 的返回值更改为类似“Hello World From the Production Server”的内容。 在您的 2 号机器上执行相同的操作,但将返回值更改为“Hello World From the Test Server”。 测试每个 Web 服务,以验证它们是否返回您想要的值。
接下来,创建一个带有 TextBox
的简单应用程序。 这就是我们将放置服务器位置的地方。 添加一个按钮来使用您的 Web 服务。 创建对您的第一台机器的 Web 引用,以便 IDE 会自动生成一个Reference.vb文件。 将此文件的内容复制到项目中的新类文件中。 删除 Web 引用。 对您的新类进行上面列出的更改,然后在您的Button1_Click
过程中添加以下内容
Dim S1 As New DynWS.Service1(TextBox1.Text.Trim)
Debug.WriteLine(S1.HelloWorld)
运行应用程序时,输入具有 Web 服务的计算机的服务器名称或地址,然后按按钮。 当您将名称更改为您的第二台计算机时,您应该会收到一条单独的消息。
可能的改进
- 创建一个加载项以创建这个新类,而无需添加 Web 引用,复制/粘贴,然后删除 Reference。
- 向应用程序中添加一些错误检查,以确保您的服务器在运行时具有正确的 Web 服务。