准備寫個WinCE平台與數據庫服務器數據通訊交互方面的專題文章,今天先整理個Web Service通訊方式。
公司目前的硬件產品平台是WinCE5.0,數據通訊是連接服務器與終端的橋梁,關系著終端的數據能否准確及時高效抵達服務器,是整個項目成敗的關鍵。原先公司有同事用VC寫過一個程序用Socket進行數據通訊,但一直問題不斷。年前我開始探索用SqlCE與SqlServer數據同步方式進行數據上傳與下載,通訊已經正常穩定。這方面的文章後續再整理。
Web Service用於PC間通訊的文章網上有很多,但用於WinCE平台調用的經驗總結並不多見。Web Service的程序編寫與配置調用相對來講比較簡單,Visual Studio裡直接新建一個“Asp.net web 服務應用程序”就可以創建一個web Service項目了。其中的代碼根據實際需求編寫就行,這方面就不詳述了。
終端設備是通過GPRS來進行數據傳輸的,因此,數據流量是非常重要的問題,應當盡可能少的減少數據傳輸,流量可是Money,壓縮技術是關鍵。Google大法,找到了一款物美價廉的東東-Ihttp://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx 所謂物美是這款代碼支持Dot net CF平台,所謂價廉是這款代碼完全開源免費。
操刀開工。。。先建一個直接返回DataSet集的Web Service服務
private SqlConnection Conn;
private string ConnString = "Data Source=(local);Initial Catalog=Northwind;uid=sa;pwd=sa;";
dataConnection#region dataConnection
private DataSet GetNorthwindDataSet()
{
return ExecuteSql("select * from Employees");
}
private DataSet ExecuteSql(string mysql)
{
DataSet dataSet = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(mysql, this.Conn);
try
{
if (this.Conn.State == ConnectionState.Closed)
{
this.Conn.Open();
}
adapter.Fill(dataSet, "table");
}
catch (Exception exception)
{
HttpContext.Current.Response.Write(exception.Message);
HttpContext.Current.Response.End();
}
finally
{
if ((this.Conn != null) && (this.Conn.State == ConnectionState.Open))
{
this.Conn.Close();
}
adapter.Dispose();
}
return dataSet;
}
#endregion
//方法一:直接返回 DataSet 對象
[WebMethod(Description = "直接返回 DataSet 對象。")]
public DataSet GetDataSet()
{
DataSet dataSet = GetNorthwindDataSet();
return dataSet;
}