¹Ø¼ü´Ê£ºC#£»Web Services£»XML£»Èí¼þ×Ô¶¯Éý¼¶
ÖÐͼ·¨·ÖÀàºÅ£º ÎÄÏ×±êÖ¾Â룺
1 ÒýÑÔ
Ëæ×żÆËã»úÍøÂçÓ¦Óü¼ÊõµÄ²»¶Ï·¢Õ¹£¬ÔÚ¿ª·¢MISϵͳʱ£¬´ó¶à²ÉÓûùÓÚC/S£¨¿Í»§»ú/·þÎñÆ÷£©Ä£Ê½»òB/S£¨ä¯ÀÀÆ÷/·þÎñÆ÷£©Ä£Ê½¡£ÏÖÔÚB/SģʽÒÔÆäÕæÕýÒâÒåÉϵÄÊݿͻ§»ú/ÅÖ·þÎñÆ÷ģʽÓÅÊÆÕ¼¾ÝÁËÖ÷µ¼µØÎ»¡£µ«ÊÇÓÉÓÚ¿Í»§»ú/·þÎñÆ÷ģʽ¾ßÓеÄÊý¾ÝÁ÷Á¿Ð¡¡¢ÏìӦʱ¼ä¶Ì¡¢°²È«ÐԸߵÈÌØµã£¬ÔÚ½â¾ö¼¸Ê®¸öµ½¼¸°Ù¸öÓû§µÄ¾ÖÓòÍøÖУ¬ÈÔÈ»ÊÇÒ»¸ö²»´íµÄÑ¡Ôñ[1-3]¡£ÔÚC/SģʽÏ£¬Ó¦ÓóÌÐòµÄÿ´ÎÉý¼¶¶¼ÐèÒªÔÚÿ¸ö¿Í»§¶ËÖØÐ°²×°Ó¦ÓóÌÐò£¬ÕâÊÇÒ»ÏîÊ®·Ö·±ËöµÄÊÂÇé¡£Ãæ¶ÔÕâ¸öʵ¼ÊÎÊÌ⣬ÕâÀïÉè¼ÆÁËÒ»¸öͨ¹ýÈí¼þʵÏÖ×Ô¶¯Éý¼¶¼¼Êõ·½°¸£¬ÃÖ²¹ÁËÕâһȱÏÝ£¬ÓнϺõIJο¼¼ÛÖµ¡£
2 Éè¼ÆË¼Â·
ÅжÏÒ»¸öÎļþÊÇ·ñÒª¸üУ¬¿ÉÒÔͨ¹ýÅжÏÎļþµÄ´óС¡¢ÐÞ¸ÄÈÕÆÚºÍÎļþµÄ°æ±¾ºÅÀ´ÊµÏÖ[3-5]¡£·¢ÏÖ×îеÄÔòÌáʾÓû§ÊÇ·ñÉý¼¶¡£
ÔÚWeb ServicesÖÐʵÏÖÒ»¸öGetVerµÄWebMethod·½·¨£¬Æä×÷ÓÃÊÇ»ñÈ¡µ±Ç°µÄ×îа汾¡£È»ºó½«ÏÖÔÚ°æ±¾Óë×îа汾±È½Ï£¬Èç¹ûÓÐа汾£¬Ôò½øÐÐÉý¼¶¡£
3 ×Ô¶¯Éý¼¶µÄ¼¼ÊõʵÏÖ
£¨1£©±àдÉý¼¶Ä£°åÎļþUpdate.xml
×¼±¸Ò»¸ö£Ø£Í£ÌÎļþ (Update.xml) £¬×÷Ϊһ¸öÉý¼¶ÓõÄÄ£°å¡£
¡¡
<description>Éý¼¶¼Ç¼</description>
<filelist count="4" sourcepath="./update/">
¡¡
<item name="CustomerApplication.exe" size="">
<value />
</item>
<item name="Interop.SHDocVw.dll" size="">
<value />
</item>
¡¡
SHDocVw.DLL ÊÇInternet ExplorerµÄÒ»¸ö×é¼þ£¬¸Ã×é¼þ¸ºÔð¿ØÖƶԴÓWeb Õ¾µã·µ»ØµÄURLºÍÐÅÏ¢µÄ´¦Àí¡£
£¨2£©±àдWeb ServicesµÄGetVer·½·¨
GetVer·½·¨ÓÃÓÚÈ¡µÃÈí¼þµÄ¸üа汾¡£
[WebMethod(Description="È¡µÃ¸üа汾")]
Public string GetVer()
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("update.xml"));
XmlElement root = doc.DocumentElement;
return root.SelectSingleNode("version").Inertest;
}
£¨3£©±àдWeb ServicesµÄGetUpdateData·½·¨
GetUpdateData·½·¨ÓÃÓÚÔÚÏ߸üÐÂÈí¼þ¡£
[WebMethod(Description="ÔÚÏ߸üÐÂÈí¼þ")]
[SoapHeader("sHeader")]
public System.Xml.XmlDocument GetUpdateData()
{
//ÑéÖ¤Óû§ÊÇ·ñµÇ½
if(sHeader==null)
return null;
if(!DataProvider.GetInstance.CheckLogin(sHeader.Username,sHeader.Password))
return null;
//È¡µÃ¸üеÄxmlÄ£°åÄÚÈÝ
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("update.xml"));c XmlElement root = doc.DocumentElement;
//¿´¿´Óм¸¸öÎļþÐèÒª¸üÐÂ
XmlNode updateNode = root.SelectSingleNode("filelist");
string path = updateNode.Attributes["sourcepath"].Value;
int count = int.Parse(updateNode.Attributes["count"].Value);
//½«xmlÖеÄvalueÓÃʵ¼ÊÄÚÈÝÌæ»»
for(int i=0;i= updateNode.ChildNodes[i];
string fileName = path + itemNode.Attributes["name"].Value;
FileStream fs = File.OpenRead(Server.MapPath(fileName));
itemNode.Attributes["size"].Value = fs.Length.ToString();
BinaryReader br = new BinaryReader(fs);
//ÕâÀïÊÇÎļþµÄʵ¼ÊÄÚÈÝ£¬Ê¹ÓÃÁËBase64String±àÂë
itemNode.SelectSingleNode("value").InnerText = Convert.ToBase64String(br.ReadBytes((int)fs.Length),0,(int)fs.Length);
br.Close();
fs.Close();
}
return doc;
}