技术开发 频道

结合ajax技术通过web服务实现dotnet非链式工厂模式


【IT168技术文档】

  1.为web服务其他一致的入口点:int Execute(DataSet ds );
  2.实现非链式工厂模式.动态加载服务提供者,从而提供服务.
1 public static int Execute(DataSet ds ){ 2 3 string[] arr = UnPack(ds); 4 5 //Analysis and Invoke right method 6 string methodName = arr[0].ToString().Trim(); 7 Object[] parme = new object[]{ 8 System.Int32.Parse(arr[1].ToString().Trim()), 9 System.Int32.Parse(arr[2].ToString().Trim()) 10 }; 11 12 Assembly oAssembly = null; 13 Type oType = null; 14 15 16 oAssembly = Assembly.GetExecutingAssembly(); 17 oType = oAssembly.GetType(methodName); 18 19 mycompute com = null; 20 com = (mycompute)Activator.CreateInstance(oType); 21 //oMethod = oType.GetMethod("Execute"); 22 23 //int result = (int)oMethod.Invoke(new object(), parme); 24 int result = com.Execute(System.Int32.Parse(arr[1].ToString().Trim()),System.Int32.Parse(arr[2].Trim())); 25 return result; 26 } 27 28 public static string[] UnPack(DataSet ds) 29 { 30 if (ds == null) throw new Exception("DataSet Error "); 31 32 string[] arr = new string[3]; 33 34 int i = 0 ; 35 36 foreach (DataRow row in ds.Tables[0].Rows) 37 { 38 foreach (DataColumn column in ds.Tables[0].Columns) 39 { 40 arr[i] = row[column].ToString(); 41 i++; 42 } 43 } 44 return arr; 45 } 46 3.客户端通过ajax获得服务结果,实现无刷新. [Ajax.AjaxMethod()] public int getResult(string methodName,string str1, string str2) 4. 1function serverside() 2{ 3 _Default.getResult( 4 document.getElementById("Select1").value, 5 document.getElementById("Text1").value, 6 document.getElementById("Text2").value,ServerSide_CallBack); 7} 8 9function ServerSide_CallBack(res){ 10// document.getElementById("result").value=response.value; 11 if(res.error!=null)alert(res.error); 12 13 document.getElementById("result").innerHTML="<font size=3 color=red>"+res.value+"</font>"; 14 15}
0
相关文章