WebService完全基於XML(可擴展標記語言)、XSD(XMLSchema)等獨立於平臺、獨立於軟件供應商的標準,是創建可互操作的、分佈式應用程序的新平臺。
它有三種特性,足以說明 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);
}
}
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表的內容.
以上爲web服務winfrm引用,當然也可以web服務web引用.