使用 MonoDevelop 和 Web 服务开发检索详细股票信息的 GTK# 应用程序。





4.00/5 (1投票)
使用 MonoDevelop 和 GTK# 进行 Web 服务消耗。

引言
本文介绍使用 MonoDevelop 进行 GTK# 开发,以消费简单的 Web 服务。我们将使用的 Web 服务是位于 http://www.webservicex.net/stockquote.asmx?wsdl 的股票行情服务。
背景
该项目使用 MonoDevelop 和 GTK# 2.0 开发。 我在 KDE 3.5 和 GNOME 中使用 OpenSUSE 11 开发和测试了这个应用程序。
创建 Web 引用
首先,我们需要创建 Web 引用到股票行情服务,以 DLL 文件的形式,以便我们可以使用它。 以下是相同的步骤。
- 使用 wsdl 工具将 Web 服务的 WSDL 转换为 C# 代码。
- 使用生成的 .cs 文件生成一个库文件。
在您的终端中输入以下命令
$ wsdl www.webservicex.net/stockquote.asmx?wsdl
$ mcs /target:library StockQuote.cs -r System.Web.Services
将创建一个名为 StockQuote.dll 的 DLL 文件。 虽然我们可以使用 MonoDevelop IDE 来执行此操作,但我更喜欢这种技术,因为我们可以将所有 Web 引用存储在一个特殊的文件夹中,并在项目需要时引用它们。
在 MonoDevelop 中创建一个新的解决方案。 添加一个 GTK# 2.0 类型的项目。

然后,项目将创建一个名为 MainWindow.cs 的 GTK# 表单。 您可以在设计器模式下打开它,该模式显示一个所见即所得编辑器。 GTK# 设计的一个主要特性是,它要求您首先定义一个容器,然后才能添加任何控件。
我使用一个表格作为我的容器来设计表单,如下所示

StockQuote Web 服务以 XML 格式返回结果。 因此,我们需要从中提取信息。 您可以在 这里 查看格式。 查找一家公司,例如 MSFT,并查看结果的格式。 因此,我们需要添加两个引用,一个是 System.Xml,另一个是之前生成的 StockQuote.dll。
可以通过右键单击解决方案窗口中的 引用 文件夹并选择“编辑引用...”来轻松添加引用。 这将打开一个对话框,如下所示

接下来,我们通过选择 .NET 程序集选项卡来添加对 StockQuote.dll 的引用。

在 GTK# 中,一个控件与信号相关联。 可以通过在设计器中选择控件时查看属性窗口来查看与控件关联的信号。 我们可以双击信号以生成事件处理程序。 接下来,我们将信号处理程序添加到按钮“获取最新的股票信息”并编写以下代码
protected virtual void OnButton1Clicked (object sender, System.EventArgs e)
{
String quoteSymbol="MSFT";
if(radOwnSym.Active){
if(txtOwn.Text=="")
return;
quoteSymbol=txtOwn.Text;
}
if(radPreDef.Active){
quoteSymbol=cmbTemplate.ActiveText;
}
StockQuote quote = new StockQuote();
string toParse=(quote.GetQuote(quoteSymbol));
XmlDocument doc=new XmlDocument();
doc.LoadXml(toParse);
Console.WriteLine(toParse);
lblLast.Text=doc.FirstChild.FirstChild.ChildNodes[1].InnerXml;
lblStockSymbol.Text=doc.FirstChild.FirstChild.ChildNodes[0].InnerXml;
}
然后,我们可以通过按 F8 构建项目。 可以通过按 F5 键运行该项目。
关注点
设计器的代码拒绝显示我拖放的控件的 ID。 我一开始就遇到了麻烦。 实际上,在拖放控件后编译项目时,它才会显示控件 ID。
历史
- v0.1b 检索给定股票代码的详细股票信息