好久沒寫博客,今天本身寫一篇吧。來談一談c# PhoneGap,html5 與asp.net。能搜到這篇博客就說明你是一位.net開發者,即將或者正在從事移動開發。javascript
你們可能都有疑,我是一名.net開發者,能用.net作蘋果,安卓,wp平臺的應用嗎?html
如你們所知,phoneGap是用來開發跨平臺移動應用的,並且phoneGap能調用移動設置的硬件接口,實現一些普通html在移動設備上沒法實現的功能,好比拍照,錄音,錄製視頻等。html5
要作html5頁面爲單元的應用,必定少不了與服務器進行數據交互。想到的與服務器交互有兩種方案:java
一種是使用默認的本地HTML方式(固然也能夠把HTML放在服務器端,可是這樣還不如使用第二種方案),一種是全程使用服務器腳本,好比JSP頁面,固然這些頁面確定是放在服務器端,客戶端只須要在初始化的時候引用這個頁面便可,Android客戶端,代碼以下:android
public class MyActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//super.loadUrl("file:///android_asset/login.html");
super.loadUrl("http://220.166.32.204:8080/test/login.jsp");
super.setIntegerProperty("loadUrlTimeoutValue", 15000);
}
} web
(註釋掉的代碼爲PhoneGap默認的本地HTML方案)ajax
另外一種是http請求即爲服務器腳本解決方案sql
各有各的好處,本地HTML方案能夠把代碼和服務器端的代碼隔離開,維護只須要維護客戶端,無需修改服務器端,而且由於是本地讀取,能夠在無網絡狀況下使用應用程序(能夠把資源保存在本地sqlLite數據庫中);服務器腳本解決方案好處是代碼簡單,和開發普通web頁面幾乎無差異,甚至能夠直接使用以前針對PC寫好的web頁面,JS識別設備動態更換一下CSS樣式便可。數據庫
我使用的是本地HTML5解決方案,在數據交互上,使用的是ajax,使用jQuery的ajax方法,JS代碼以下:json
function pullNoticeList(){
$.ajax({
url:addr+"notice_list.action",
type:"POST",
dataType:"jsonp",
data:{"start":"0","limit":"8","sort":"effectiveDate","dir":"DESC"},
beforeSend: function(){
$("#content").html("<p>數據拉取中,請稍後...</p>").trigger("create");
},
success:function(response){
var startHtml = '<ul id="listview" data-role="listview" data-theme="c">';
var endHtml = "<li id='more'><p >;
$.each(response.noticeList,function(index,item){
startHtml+="<li><a href='javascript:showDetail("+item.noticeId+");'><p>"+item.noticeTitle+"<span class='ui-li-aside'>"+item.effectiveDate+"</span></p></a></li>";
});
$("#content").html(startHtml+endHtml).trigger("create");
},
error:function(){
showReConnConfirm();
}
});
}
必須使用jsonp格式,否則無返回值,其次,注意返回的json格式,必定要符合jQuery的json格式,能夠經過firedug查看調試json,服務器端使用的struts,可使用struts的json插件,能夠很智能把對象封裝成json格式。
若是你想用phoneGap作一款跨平臺的應用,首先要肯定會不會調用移動設備的硬件接口,若是不須要調用,那麼第一張方案是最佳的選擇,維護開發與日常web幾乎沒區別,最佳的適合咱們.net開發者,由於咱們能夠直接選擇用aspx頁面來開發。
可是若是項目有要求要調用移動設備的硬件接口,那麼必需要選擇用第二種方案了。
這時,與服務器交互,html5端用ajax,後臺能夠用aspx,或者ashx,或者asmx,即分別對應普通aspx頁面或者通常處理程序ashx頁面,或者直接寫webservice服務都行。但願能幫到你們。
移動開發html5,必將是主流,一塊兒迎接吧!