項目需求,暫且叫A、B公司吧。我們公司需要從A公司哪里讀取機器上的數據,放到我們數據庫中。然后再將數據庫中存的數據,提供一個接口,B公司來調用,大概這個意思。
好了,言歸正傳。這個是之前做好的界面,用戶需要手動點擊“開始”,然后寫了個定時器,不停的來回調用
部分源碼(5秒調用后台處理)
1 function refreshCount() { 2 if (prj.is_port_state_1 == false) { 3 var grid_down = query_panel.grid_down; 4 var RequestData = { "macName": "" }; 5 $.ajax({ 6 url: "http://172.30.16.254:8080/IWFM_HuaLian/dataDock/getMacState", 7 type: 'POST', 8 dataType: "JSON", 9 contentType: 'application/json; charset=UTF-8', 10 crossDomain: true, 11 data: JSON.stringify(RequestData), 12 xhrFields: { 13 'Access-Control-Allow-Origin': '*' 14 }, 15 success: function (resData) { 16 var res = JSON.stringify(resData); 17 Ext.Ajax.request({ 18 url: "WC030Handlers.csx", 19 params: { 20 tag: 'GetMacState', 21 data: res 22 }, 23 success: function (response, p) { 24 grid_down.getStore().load(); 25 } 26 }); 27 } 28 }); 29 } 30 } 31 32 Ext.Msg.alert(MsgMrg.OptMsg, "開始運行!"); 33 t1 = window.setInterval(refreshCount, 5000);
一天晚上,項目老總打電話過來說:這個功能需要優化下,不能讓用戶去手動點,應該寫個Windows服務,注冊到客戶的服務器本地上,電腦一開機自動運行該服務。我:“好的,到時候功能優化下”。
好了,這就是為啥寫這篇博客的由來,下面開始演示DEMO
第一步:創建C# Winform服務
第二步:添加安裝服務
第三步:設置服務的信息
第四步:選擇本地服務
第五步:寫業務邏輯(隨性發揮)
第六步:生成項目,並創建二個bat文件
安裝服務
1 格式:C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe 程序名稱
卸載服務
1 格式:C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe /u 項目名
注:安裝Windows服務,請用管理員身份運行
好了,上面注冊Windows服務已經會配置了,下面演示利用HttpWebRequest模擬Ajax請求
DEMO
源碼
1 private void Button1_Click(object sender, EventArgs e) 2 { 3 string res= PostWebRequest("http://172.30.16.254:8080/IWFM_HuaLian/dataDock/getMacState", "{ \"macName\": \"\" }", Encoding.UTF8); 4 } 5 /// <summary> 6 /// Post數據接口 7 /// </summary> 8 /// <param name="postUrl">接口地址</param> 9 /// <param name="paramData">提交json數據</param> 10 /// <param name="dataEncode">編碼方式(Encoding.UTF8)</param> 11 /// <returns></returns> 12 private static string PostWebRequest(string postUrl, string paramData, Encoding dataEncode) 13 { 14 string responseContent = string.Empty; 15 try 16 { 17 byte[] byteArray = dataEncode.GetBytes(paramData); //轉化 18 HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl)); 19 webReq.Method = "POST"; 20 webReq.ContentType = "application/json; charset=UTF-8"; 21 webReq.Accept = "application/json, text/javascript, */*; q=0.01"; //注:調試的過程中,報415,這里可能需要修改下 22 webReq.ContentLength = byteArray.Length; 23 using (Stream reqStream = webReq.GetRequestStream()) 24 { 25 reqStream.Write(byteArray, 0, byteArray.Length);//寫入參數 26 //reqStream.Close(); 27 } 28 using (HttpWebResponse response = (HttpWebResponse)webReq.GetResponse()) 29 { 30 using (Stream myResponseStream = response.GetResponseStream()) 31 { 32 using (StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8)) 33 { 34 responseContent = myStreamReader.ReadToEnd().ToString(); 35 } 36 } 37 } 38 } 39 catch (Exception ex) 40 { 41 return ex.Message; 42 } 43 return responseContent; 44 }