WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
用WebService实现跨平台的可互操作性它有三种特性,足以说明 WebService带来的好处.
1>,跨防火墙的通信.2>应用程序集成.3>B2B的集成.呵....,好处自不用说,先来点实际的.
(1)新建一Web站点,添加一个WebService,命名为DataBaseWebService,会同时产生两个文件DataBaseWebService.asmx和DataBaseWebService.cs
我们在DataBaseWebService.cs里写入一些提供的服务.在DataBaseWebService.cs里已经自动添加一个WebService方法HelloWorld().我们要添加的是返回一个数据集和错误处理的方法,代码如下:
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
/**//// <summary>
/// Summary description for DataBaseWebService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class DataBaseWebService : System.Web.Services.WebService ...{
public DataBaseWebService () ...{
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() ...{
return "Hello World";
}
[WebMethod]
public DataSet SqlQuery(string Sql)
...{
try
...{
SqlConnection sqlconn = new SqlConnection("Server=192.168.254.19;DataBase=Test;Uid=sa;Pwd=;");
SqlDataAdapter Adpt = new SqlDataAdapter(Sql, sqlconn);
DataSet ds = new DataSet();
Adpt.Fill(ds);
return ds;
}
catch (Exception ex)
...{
return DataError(ex);
}
}
用WebService实现跨平台的可互操作性
public DataSet DataError(Exception ex)
...{
DataSet ErrDs = new DataSet("Errors");
DataTable ErrTable = ErrDs.Tables.Add("Error");
ErrTable.Columns.Add("Message");
ErrTable.Rows.Add(new Object[] ...{ ex.Message });
return ErrDs;
}
}
(2)编译通过,在IE地址栏里可以得到我们刚才写的服务的地址:http://localhost:2508/WebServ/DataBaseWebService.asmx,写Copy一下,一会用得着.
(3),新一Winfrm工程WebServicesClient,右键工程>Add Web References,在弹出窗体里的URL地址栏输入刚才我们发布的服务的地址http://localhost:2508/WebServ/DataBaseWebService.asmx,点击 Add References按钮.一个WebServices就添加进来了.
(4)在from1上拖放一个DataGridView控件和一个menuStrip1控件.转到Code页面.代码如下:
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WebServicesClient
...{
public partial class Form1 : Form
...{
DataBaseWebService.DataBaseWebService mQuery = new WebServicesClient.DataBaseWebService.DataBaseWebService();
public Form1()
...{
InitializeComponent();
}
private void DeptToolStripMenuItem1_Click(object sender, EventArgs e)
...{
DataSet mDs = mQuery.SqlQuery("select * from dbo.BSC_DEPT");
this.dataGridView1.DataSource = mDs.Tables[0];
}
private void EmployeeToolStripMenuItem_Click(object sender, EventArgs e)
...{
DataSet Ds = mQuery.SqlQuery("select * from dbo.BSC_Employee");
this.dataGridView1.DataSource = Ds.Tables[0];
}
}
}
(5)编译通过,单击菜单项一,显示BSC_DEPT中的内容,单击菜单二,显示BSC_Employee表的内容.
用WebService实现跨平台的可互操作性以上为web服务winfrm引用,当然也可以web服务web引用.