建立一个智能设备应用程序,添加Web引用,我这里用的是静态引用,没有用动态引用的原因是,试过网上的动态生成WebService引用的代码,效率远比静态引用要低很多,考虑终端设备资源的有限性,还是用的静态引用。建立好项目后在界面上添加一个button和datagrid控件,添加代码:
private webSer.Service1 ws;
private void FrmMain_Load(object sender, EventArgs e)
{
ws = new DeviceApplication1.webSer.Service1();
}
//webmethod直接返回dataset
private void btnDataSet_Click(object sender, EventArgs e)
{
try
{
this.dtGrid.DataSource = null;
DateTime dtBegin = DateTime.Now;
DataSet ds = ws.GetDataSet();
DateTime dtDown = DateTime.Now;
this.dtGrid.DataSource = ds.Tables[0];
MessageBox.Show(string.Format("下载耗时:{0},绑定数据耗时:{1},数据量:{2}",
dtDown - dtBegin, DateTime.Now - dtDown, ds.GetXml().Length));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void FrmMain_Load(object sender, EventArgs e)
{
ws = new DeviceApplication1.webSer.Service1();
}
//webmethod直接返回dataset
private void btnDataSet_Click(object sender, EventArgs e)
{
try
{
this.dtGrid.DataSource = null;
DateTime dtBegin = DateTime.Now;
DataSet ds = ws.GetDataSet();
DateTime dtDown = DateTime.Now;
this.dtGrid.DataSource = ds.Tables[0];
MessageBox.Show(string.Format("下载耗时:{0},绑定数据耗时:{1},数据量:{2}",
dtDown - dtBegin, DateTime.Now - dtDown, ds.GetXml().Length));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
连接好终端设备,测试点击按钮,几秒后DataGrid表格正确显示数据,OK,说明WinCE已经能够正确调用Web Service了。如果不能正确调用,检察WebService发布与Web引用是否正确,数据库配置是否正确。