×

用WebService实现跨平台的可互操作性

Kalet Kalet 发表于2009-03-20 12:00:13 浏览174 评论0

抢沙发发表评论



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;
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;
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引用.



群贤毕至

访客