XML ÊDZê×¼À©Õ¹ÓïÑԵļò³Æ£¬ÊÇδÀ´Web±à³ÌµÄ±ê×¼¡£ÔÚÕâÒ»ÕÂÖУ¬ÎÒÃǽ«½²ÊöXMLÔÚASP.NETÖеÄÓ¦ÓÃ
ÔÚÕâ¸ö³ÌÐòÖУ¬ÎÒÃÇͨ¹ýXMLÓïÑÔʵÏÖÿ´Î·ÃÎÊÍøÒ³Ê±£¬½«ÏÔʾ²»Í¬µÄ¹ã¸æÌõ¡£ÔÚ±¾ÀýÖУ¬ÎÒÃÇÖ»µ÷ÓÃÁËÁ½Ìõ¹ã¸æ
Ô´Îļþ£ºadvanceapp\intro.aspx
Intro.aspxµÄ´úÂëÈçÏ£º
<html>
<center><title>¹ã¸æÌõÑÝʾ</title></center>
<head>
<link rel="stylesheet"href="intro.css">
</head>
<body>
<center>
<form action="intro.aspx" method="post" runat="server">
<h2>¹ã¸æÌõÑÝʾ</h2>
<asp:adrotator AdvertisementFile="intro.xml" BorderColor="black" BorderWidth=1 runat="server"/>
</form>
</center>
</body>
</html>
intro.xmlµÄ ´úÂëÈçÏ£º
<Advertisements>
<Ad>
<ImageUrl>./hp1.gif</ImageUrl>
<NavigateUrl>http://www.yesky.com</NavigateUrl>
<AlternateText>»¶Ó·ÃÎÊ£¡</AlternateText>
<Keyword>Computers</Keyword>
<Impressions>80</Impressions>
</Ad>
<Ad>
<ImageUrl>./hp2.gif</ImageUrl>
<NavigateUrl>http://www.yesky.com</NavigateUrl>
<AlternateText>»¶Ó·ÃÎÊ</AlternateText>
<Keyword>Computers</Keyword>
<Impressions>80</Impressions>
</Ad>
</Advertisements>
ÔÚintro.aspxÖУ¬ÎÒÃÇʹÓÃÁË<asp:adrotator AdvertisementFile="intro.xml" BorderColor="black" BorderWidth=1 runat="server"/>ÕâÌõÓï¾äÀ´Ç¶Èëintro.xmlÎļþ¡£ÔËÐÐЧ¹ûÈçͼ£º

µ±ÎÒÃǵãˢа´áð»òÕß°´F5¼ü£¬ÎÒÃǽ«¿´µ½ÁíÒ»Ìõ¹ã¸æÌõ¡£

ÔÚ±¾ÀýÖУ¬ÎÒÃÇÓõ½ÁËAdRotator·þÎñÆ÷¿Ø¼þ£¬ÔÚxmlÎļþÖУ¬ÎÒÃÇÎÒÃÇ¿ÉÒÔ¶¨ÒåÆäÊôÐÔ£ºÈç±íËùʾ£º
|
ÊôÐÔ |
ÃèÊö |
|
ImageUrl |
ͼÏóÎļþµÄ¾ø¶Ô»òÏà¶ÔµØÖ· |
|
NavigateUrl |
µ±Í¼Ïó±»µã»÷ʱ£¬¿É·ÃÎÊÏàÓ¦µÄÍøÒ³ |
|
AlternateText |
µ±Êó±êÒÆ¶¯µ½Í¼Æ¬ÉÏʱ£¬½«ÏÔʾÌáʾÐÅÏ¢ |
|
Keyword |
Ö¸¶¨¹ã¸æÌõµÄ·ÖÀ࣬ÎÒÃÇ¿ÉÒÔÀûÓôËÊôÐÔÀ´¶Ô¹ã¸æÌõ½øÐзÖÀà |
|
Impressions |
Ö¸¶¨Í¼Æ¬ÔÚ±í¸ñÖеĴóС |
Êý¾Ý·ÃÎÊÊÇÒ»¸öÓ¦ÓÃϵͳµÄºËÐÄ¡£¹«ÓÃÓïÑÔÔËÐл·¾³£¨Common Language Runtime£©ÌṩÁ˹ÜÀíÊý¾Ý·ÃÎÊÓ¦ÓóÌÐò½Ó¿Ú£¨API£©µÄ·½·¨¡£¶øÕâЩAPI½«²»ÂÛËüµÄµÄÊý¾ÝÔ´ÊÇʲô£¬ÈçSQL Server, OLEDB, XMLµÈ£¬¶¼ÄÜÌáÈ¡³öÎÒÃÇËùÐèÒªµÄÊý¾Ý¡£ÎÒÃÇÔÚ¾ßÌå±à³ÌµÄʱºò£¬ÓÐ3¸ö¶ÔÏ󽫳£³£Óõ½£ºConnections, Commands, and DataSets¡£
|
¶ÔÏó |
ÃèÊö
|
|
Connection |
ÓëÊý¾ÝÔ´½øÐÐÁ¬½Ó¡£ÈçSQL Server »òÕßÒ»¸öXML Îļþ¡£
|
|
Command |
¶ÔÊý¾Ý½øÐвÙ×Ý¡£Èç½øÐÐɾ³ý£¨delete£©£¬ÌáÈ¡£¨select£©,¸üУ¨update£©
|
|
Dataset |
ÏÔʾ³öËùÐèµÄÊý¾Ý
|
ΪÁËʹÎÒÃÇÄÜʹÓà SQLÓï¾ä£¬ÎÒÃÇÒªÏȵ¼ÈëSystem.Data ºÍSystem.Data.SQLÕâÁ½¸öÃû×ֿռ䡣
Óï¾äÈçÏ£º
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
ÏÂÃæµÄ±í¸ñÊǶԼ¸¸öµäÐ͵ÄSQL Óï¾äµÄ˵Ã÷£º
|
SQL Óï¾ä |
ʾÀý
|
|
Select£¨¶Ôµ¥¸ö±íµÄ²Ù×÷£© |
SELECT * from Student WHERE stuname = ¡®Ð¡À£»
|
|
Select£¨¶Ô¶à¸ö±íµÄ²Ù×÷£© |
SELECT * from Student S, Dept D WHERE S.dept= D.dept£»
|
|
Insert |
INSERT into Student VALUES ('СÍõ'£¬21£¬¡¯ÄС¯)£»
|
|
Delete |
DELETE from Student WHERE name=¡¯Ð¡Íõ¡¯ ;
|
|
Update |
UPDATE Student SET age = 21 WHERE name=¡¯Ð¡À;
|
ÔÚÖ´Ðвéѯ֮ǰ£¬ÎÒÃÇÒªÏȹ¹¼þÒ»¸öSQLDataSetCommand¶ÔÏó£¬ÔÚÖ´ÐвéѯÒÔºó£¬ÎÒÃÇÐèÒª°ÑÊý¾Ý×ªÒÆµ½DataSet ÖУ¬ÎÒÃÇ¿ÉÒÔʹÓÃÏÂÃæµÄ´úÂ룺
ÎÒÃǼÙÉèÓÐÒ»¸ötestÊý¾Ý¿â£¬ÔÚÕâ¸öÊý¾Ý¿âÖÐÓÐÒ»¸östudent±í¡£
Dim myConnection As New SQLConnection("server=localhost;uid=sa;pwd=;database=test")
Dim myCommand As New SQLDataSetCommand("select * from student", myConnection)
Dim ds As New DataSet()
myCommand.FillDataSet(ds, "student")
¿ÉÄܶÁÕß²»½ûÒªÎÊ£ºÎªÊ²Ã´ÒªÓÃXMLÎļþ´æ´¢Êý¾ÝÂð?Ϊʲô²»Ê¹ÓÃÊý¾Ý¿â£¿
ÕâÊÇÒòΪ£º¶ÔºÜ¶àÄ¿µÄÓÃ;À´Ëµ£¬ÓÃÊý¾Ý¿âÌ«¹ýÀË·ÑÁË¡£.ҪʹÓÃÒ»¸öÊý¾Ý¿â£¬Äã±ØÐë°²×°ºÍÖ§³ÖÒ»¸ö·ÖÀëµÄ·þÎñÆ÷´¦Àí½ø³Ì£¨a separate server process£©,Ëü³£ÒªÇóÓа²×°ºÍÖ§³ÖËüµÄ¹ÜÀíÔ±£¨administrator£©¡£Äã±ØÐëѧϰSQLÓï¾ä, ²¢ÓÃSQLÓï¾äд²éѯ£¬È»ºóת»»Êý¾Ý£¬ÔÙ·µ»Ø¡£¶øÈç¹ûÄãÓÃXMLÎļþ´æ´¢Êý¾Ý£¬½«¿É¼õÉÙ¶îÍâµÄ·þÎñÆ÷µÄ¸ººÉ¡£»¹ÓУ¬Ä㻹ÕÒµ½ÁËÒ»¸ö±à¼Êý¾ÝµÄ¼òµ¥·½·¨¡£ÄãֻҪʹÓÃÎı¾±à¼Æ÷,¶ø²»±ØÊ¹Óø´ÔÓµÄÊý¾Ý¿â¹¤¾ß¡£XMLÎļþºÜÈÝÒ×±¸·Ý£¬ºÍÅóÓѹ²Ïí£¬»òÏÂÔØµ½ÄãµÄ¿Í»§¶Ë¡£Í¬ÑùµÄ£¬Äã¿ÉÒÔ·½±ãµØÍ¨¹ýftpÉÏÔØÐµÄÊý¾Ýµ½ÄãµÄÕ¾µã¡£
XML»¹ÓÐÒ»¸ö¸ü³éÏóµÄÓŵ㣬¼´×÷Ϊ²ã´ÎÐ͵ĸñʽ±È¹ØÏµÐ͵ĸüºÃ¡£ Ëü¿ÉÒÔÓÃÒ»ÖÖºÜÖ±½ÓµÄ·½Ê½À´Éè¼ÆÊý¾Ý½á¹¹À´·ûºÏÄãµÄÐèÒª¡£Äã²»ÐèҪʹÓÃÒ»¸öʵÌå-¹ØÏµ±à¼Æ÷£¬Ò²²»ÐèҪʹÄãµÄͼ±í£¨schema£©±ê×¼»¯¡£ Èç¹ûÄãÓÐÒ»¸öÔªËØ£¨element£©°üº¬ÁËÁíÒ»¸öÔªËØ£¬Äã¿ÉÒÔÖ±½ÓÔÚ¸ñʽÖбíʾËü£¬¶ø²»ÐèҪʹÓñíµÄ¹ØÁª¡£
×¢Ò⣬ÔںܶàÓ¦ÓÃÖУ¬ÒÀ¿¿ÎļþϵͳÊDz»¹»³ä·ÖµÄ¡£Èç¹û¸üкܶ࣬Îļþϵͳ»áÒòΪͬʱдÈë¶øÊܵ½ÆÆ»µ¡£Êý¾Ý¿âÔòͨ³£Ö§³ÖÊÂÎñ´¦Àí£¬¿ÉÒÔÓ¦¸¶Ëù·¢ÉúµÄÇëÇó¶ø²»ÖÁÓÚË𻵡£¶ÔÓÚ¸´ÔӵIJéѯͳ¼ÆÒªÓз´¸´¡¢¼°Ê±µÄ¸üУ¬´ËʱÊý¾Ý¿â±íÏÖ¶¼ºÜÓÅÐã¡£µ±È»£¬¹ØÏµÐÍÊý¾Ý¿â»¹ÓкܶàÓŵ㣬°üÀ¨·á¸»µÄ²éѯÓïÑÔ£¬Í¼±í»¯¹¤¾ß£¬¿ÉÉìËõÐÔ£¬´æÈ¡¿ØÖƵȵȡ£
ÔÚÏÂÃæÕâÑùµÄ°¸ÀýÖУ¬ÕýÈç´ó¶àÊýÖÐС¹æÄ£µÄ¡¢»ùÓÚ·¢²¼ÐÅÏ¢µÄÕ¾µãÒ»Ñù£¬Äã¿ÉÄÜÉæ¼°µÄ´ó¶àÊýÊý¾Ý´æÈ¡¶¼ÊǶÁ£¬¶ø²»ÊÇд£¬Êý¾ÝËäÈ»¿ÉÄܴܺ󣬵«Ïà¶ÔÀ´Ëµ²¢Ã»Óо³£µÄ¸üб仯£¬ÄãÒ²²»ÐèÒª×öºÜ¸´ÔӵIJéѯ£¬¼´Ê¹ÄãÐèÒª×ö£¬Ò²½«ÓÃÒ»¸ö¶ÀÁ¢µÄ²éѯ¹¤¾ß£¬ÄÇô³ÉÊìµÄrdbmsµÄÓŵãÏûʧÁË£¬¶øÃæÏò¶ÔÏóÐ͵ÄÊý¾ÝÄ£Ð͵ÄÓŵãÔò¿ÉÒԵõ½ÌåÏÖ¡£
×îºó£¬ÎªÄãµÄÊý¾Ý¿âÌṩһ¸ö²éѯÆ÷Íâ¿ÇÀ´½øÐÐSQL²éѯ²¢½«ËûÃÇת»¯½øÈëxml streamÒ²ÊÇÍêÈ«ÓпÉÄܵġ£
ËùÒÔÄã¿ÉÒÔÑ¡ÔñÕâ¶þÖÖ·½Ê½Ö®Ò»¡£XMLÕý±ä³ÉÒ»Öַdz£½¡×³µÄ£¬±ãÓÚ±à³ÌµÄ¹¤¾ß£¬×÷Ϊij¸ö³ÉÊìµÄÊý¾Ý¿âµÄǰ¶Ë¹¤¾ßÀ´½øÐд洢ºÍ²éѯ¡£(oracleµÄxsql servlet¼´ÊÇÕâÖÖ¼¼ÊõµÄÒ»¸öºÜºÃµÄÀý×Ó¡£)
ÏÖÔÚÎÒÃÇÀ´½éÉÜÒ»ÏÂXML Schemas£º
Ëæ×ÅXML Schema¹æ·¶µÄÖð½¥ÆÕ¼°£¬Ëü³ÉΪW3CÍÆ¼ö±ê×¼µÄÄÇÒ»ÌìÒѾ²»Ô¶ÁË¡£ÎÒÃÇÀ´¿´Ò»ÏÂÕâ¸öÐµĶ¨ÒåÎĵµÀàÐ͵ķ½·¨¡£
Ò»¡¢¶¨ÒåÔªËØ
¡¡¡¡ ÎĵµÀàÐͶ¨ÒåµÄ¹¤×÷ÏÖÔÚ´ó¶¼ÊÇÓÉDTDsÀ´Íê³ÉµÄ£¬ÏÖÔÚµÄDTDÔÚ¹¦ÄÜÉÏÓÐһЩÏÞÖÆ£¬Ëæ×ÅXMLÓ¦ÓõÄÔ½À´Ô½¹ã·º£¬ÕâЩÏÞÖÆÖð½¥×è°ÁËXMLµÄ·¢Õ¹¡£
DTDµÄÓï·¨²»Í¬ÓÚXMLµÄÓï·¨£¬Òò¶øÐèÒªÎĵµ±àдÕßÁíÍâµÄѧϰһÌ×·ûºÅÓïÑÔ¡£¶øÈí¼þÒ²ÐèÒªÁíÍâµÄÒ»¸ö½âÎöÆ÷À´¶ÔDTDÎļþ½øÐнâÎö¡£
ÔÚDTDÖÐûÓа취À´¶¨ÒåÄܹ»´Ó³ÌÐòÓïÑÔ±äÁ¿Ö±½ÓÓ³Éäµ½XMLÊý¾ÝµÄÊý¾ÝÀàÐͺÍÊý¾Ý¸ñʽ¡£ ûÓÐÒ»×é±»ÈËËùÊìÖªµÄ»ù±¾µÄÔªËØÒÔ¹©Îĵµ±àдÕßÑ¡Ôñ¡£DTDsÊÇXML´ÓÆäǰ±²SGMLÄǶù¼Ì³Ð¹ýÀ´µÄ£¨ÊÂʵÉÏ£¬XML±¾Éí¾ÍÊÇÒ»ÖÖSGMLµÄ¼ò»¯°æ±¾£©£¬Õâ¸öÏà¶Ô±È½Ï³ÉÊìµÄ¼¼ÊõÄܹ»ºÜ¿ìµÄÈÃXMLÔËÐÐÆðÀ´£¬²¢ÇÒÄܹ»ÈÃÊìϤSGMLµÄÈ˶ÔXMLÓиü¶àµÄ¸Ð¾õ¡£È»¶ø£¬ºÜ¿ìµÄÈËÃǾͷ¢ÏÖ£¬XMLÐèÒªÒ»ÖÖ¸ü¾ß±í´ïÄÜÁ¦µÄ½â¾ö·½°¸£¬¶ø²»½ö½öÊÇDTD¡£
¡¡¡¡ ¶¨ÒåÔªËØÐèÒªÖ¸¶¨ÔªËصÄÃû³Æ¡¢ÔªËصÄÄÚÈÝģʽ¡¢ÔªËصÄÊôÐÔ¡¢ÒÔ¼°ÄÚǶµÄ×ÓÔªËØ¡£ÔÚXML SchemasÖУ¬ÔªËصÄÄÚÈÝģʽÊÇͨ¹ýÀàÐÍÀ´¶¨ÒåµÄ¡£Ò»¸ö·þ´ÓÓÚij¸öÌØ¶¨µÄschemaµÄXMLÎĵµÖ»Äܰ´ÕÕschemaÖж¨ÒåµÄÔªËØÄ£Ê½À´±àд£¬ÕâͬDTDµÄ¹æÔòÊÇÒ»ÑùµÄ¡£ÔªËØ¿ÉÒÔÊǼòµ¥ÀàÐ͵ģ¬Ò²¿ÉÒÔʹ¸´ÔÓÀàÐ͵ġ£ÔÚSchemas¹æ·¶Öж¨ÒåÁ˺ܶàµÄ¼òµ¥ÀàÐÍ£¬ÀýÈ磺 string£¬integerºÍdecimal¡£¼òµ¥ÀàÐ͵ÄÔªËØ²»ÄÜÔÚ°üº¬×ÓÔªËØºÍÊôÐÔ£¬¶ø¸´ÔÓÀàÐ͵ÄÔªËØÔòÄܹ»Ç¶Ì××ÓÔªËØ£¬²¢Äܹ»°üº¬ÓÐÊôÐÔ¡£
¡¡¡¡ ÎÒÃÇÀ´¿´¿´Ò»¸ö¼òµ¥µÄ¶¨ÒåÔªËØµÄÀý×Ó£º
<element name="quantity" type="positive-integer"/>
<element name="amount" type="decimal"/>
¡¡¡¡ ÎÒÃÇÖªµÀÔÚÃæÏò¶ÔÏóµÄ¹ÛµãÖУ¬Óоۼ¯ºÍ¼Ì³ÐµÄ¸ÅÄ¿ÉÒÔÔÚÒÑÓеÄÀàÖÐÑÜÉú³öÐÂÀà¡£ÔÚÕâ¶ùSchema½èÓÃÁËÕâЩ¹Ûµã£¬Óû§Ò²¿ÉÒÔͨ¹ý¾Û¼¯ºÍ¼Ì³ÐÀ´ÔÚÀÏÔªËØµÄ»ù´¡É϶¨ÒåеÄÔªËØ¡£¾Û¼¯Äܹ»°ÑÒ»×éÒÑ´æÔÚµÄÔªËØ×éºÏ³ÉÒ»¸öеÄÔªËØ¡£¼Ì³ÐÔòͨ¹ýÀ©Õ¹ÒÑ´æÔÚµÄÔªËØÀ´¶¨ÒåÒ»¸öеÄÔªËØ£¬²¢ÇÒÕâ¸öеÄÔªËØÄܹ»´ú±í±»¼Ì³ÐµÄÄǸöÔªËØ¡£
¡¡¡¡ ±ÈÈ磬Èç¹ûÎÒÃÇÒª´ÓdecimalÀàÐÍÖÐÅÉÉúÒ»¸öеÄvalueÔªËØ£¬²¢ÈÃËüÓÐÕâÑùµÄÄÚÈÝģʽ£º<value unit="Celsius">42</value>£¬ÎÒÃÇ¿ÉÒÔÕâÑùµÄ¶¨Ò壺
<element name="value">
<complexType base=&single;decimal&single; derivedBy=&single;extension&single;>
<attribute name=&single;unit&single; type=&single;string&single;/>
</complexType>
</element>
¡¡¡¡ ÏÂÃæÎÒÃǰÑtimeºÍvalueÔªËØ¾Û¼¯µ½Ò»¸ömeasurementÔªËØÖУ¬ÐγÉÕâÑùµÄÄÚÈÝģʽ£º
<measurement>
<time>2000-10-08 12:00:00 GMT<time/>
<value unit="Celsius">42</value>
¡¡¡¡ ÄÇô×îÖÕÎÒÃǵÄschemaÔªËØ¶¨Òå½á¹û¾ÍÓ¦¸ÃÊÇÕâÑùµÄ£º
<element name=&single;measurement&single; type=&single;measurement&single;/>
<complexType name=&single;measurement&single;>
<element name=&single;time&single; type=&single;time&single;/>
<element name=&single;value&single; type=&single;value&single;/>
</complexType>
¡¡¡¡ ºÍÉÏÃæµÄschemaµÈͬDTDÊÇ£º
<!ELEMENT measurement (time, value)>
<!ELEMENT time (#PCDATA)>
<!ELEMENT value (#PCDATA)>
<!ATTLIST value (unit)>
¡¡¡¡ ÏÔÈ»£¬ËüËùÄܱí´ïµÄÒâ˼¾ÍÉÙÁ˺ܶࡣ
¡¡¡¡ ´ÓJavaµÈÃæÏò¶ÔÏóÓïÑÔÖÐÒýÈëµÄ¼Ì³ÐµÄÌØÐÔ£¬»¹°üÀ¨ÁË¿ÉÒÔ¶¨Òå³éÏóÔªËØÀ´ÆÈʹʵÏÖ×ÓÀàÔªËØ£¬»òÕß¶¨ÒåÒ»¸öÖÕ½áÔªËØÀ´½ûÖ¹ÔªËØÔÙ±»ÆäËüÔªËØËù¼Ì³Ð¡£ÕâʹµÃ´ÓÔªËØµ½Java»òÕßC++ÓïÑÔµÄÀàµÄÒ»Ò»Ó³Éä±äµÃ¸üΪֱ¹Û¿ÉÐС£
¶þ¡¢»ùÊý±í´ï
¡¡¡¡XML Schema±ÈÆðDTDÀ´Äܹ»¸ü·½±ãµÄ±í´ïÔªËØ»ùÊýµÄ¸ÅÄî¡£Ëùν»ùÊýÊÇÖ¸Ò»¸öÔªËØÔÚÎĵµÖгöÏֵĴÎÊý¡£ÔÚDTDÖУ¬Ê¹ÓõÄÊÇÕýÔò±í´ïʽÀ´±íʾ»ùÊýµÄ£¬¶øÕýÔò±í´ïʽµÄ±í´ïÄÜÁ¦ÔÚËùÓеÄÐÎʽ»¯ÎÄ·¨ÖÐÊÇ×îµÍµÄ£¬ÕâʹµÃÄãÔÚ¶¨ÒåÎĵµµÄʱºò»áÓöµ½ºÜ¶àµÄÀ§ÄÑ¡£ÄãÖ»Äܹ»Ö¸¶¨Ò»´Î(1)£¬Áã´Î»òÕ߸ü¶à (*)£¬Ò»´Î»òÕ߸ü¶à (+) ÕâÈýÖÖ»ùÊý£¬²¢ÓÃÕâЩ»ùÊýÐòÁÐÀ´¹¹³ÉDTD¡£XML SchemaÖÐÔòÊÇʹÓÃminOccursºÍmaxOccursÕâÁ½¸öÊôÐÔÀ´¶¨ÒåÔªËØ»ùÊý£¬·Ö±ðÓÃÀ´Ö¸¶¨ÔªËسöÏÖµÄ×îÉÙ´ÎÊýºÍ×î¶à´ÎÊý£º
<element ref="optionalElement" minOccurs="0"/>
<element ref="twoOrMoreElements" minOccurs="2" maxOccurs="unbounded"/>
<element ref="exactlyOneElement" />
¡¡¡¡minOccursºÍmaxOccursµÄȱʡֵ¶¼ÊÇ1£¬Ò²¾ÍÊÇ˵£¬µ±Ã»ÓÐÖ¸¶¨ÕâÁ½¸öÊôÐÔµÄʱºò£¬ÔªËØÖ»ÔÊÐíÔÚÎĵµÖгöÏÖÒ»´Î¡£³ýÁËÕâÁ½¸öÊôÐÔ£¬Ä㻹¿ÉÒÔÓÃchoiceºÍallÕâÁ½¸öÔªËØ¡£ÔªËØchoiceÖ»ÔÊÐíËüµÄËùÓÐ×ÓÔªËØÖеÄÒ»¸ö³öÏÖÔÚÎĵµÖС£¶øÔªËØallÔò×îΪ¿íËÉ£¬Äܹ»ÈÃÆäËùÓеÄ×ÓÔªËØÔÚÎĵµÖÐÒÔÈÎÒâµÄ˳Ðò³öÏÖÈÎÒâµÄ´ÎÊý¡£¶øÕâЩ¸ÅÄîÔÚDTDÖж¼ÊÇÄÑÒÔ±í´ïµÄ¡£
<xsd:choice>
<element ref="EitherThis"/>
<element ref="OrThat"/>
</xsd:choice>
<xsd:all>
<element ref="Ying"/>
<element ref="Yang"/>
</xsd:all/>
Èý¡¢ÃûÓò
¡¡¡¡XML SchemaÖл¹Ö§³ÖÃûÓò¡£Ò»¸öSchema³ýÁË¿ÉÒÔ¶¨ÒåXMLÎĵµ´Ê»ã±íÍ⣬»¹¿ÉÒÔͨ¹ýÃûÓòÀ´¶¨ÒåÄ¿±êÃûÓò£¬ºÍÆäËü¿ÉÄÜ»áʹÓõ½µÄ´Ê»ãÃûÓò¡£ÀýÈ磺
<xsd:schema targetNamespace=&single;http://www.physics.com/measurements&single; xmlns:xsd=&single;http://www.w3.org/1999/XMLSchema&single; xmlns:units= &single;http://www.physics.com/units&single;>
<xsd:element name=&single;units&single; type=&single;units:Units&single;/>
<xsd:element name=&single;measurement&single; type=&single;measurement&single;/>
<complexType name=&single;measurement&single;>
<element name=&single;time&single; type=&single;time&single;/>
<element name=&single;value&single; type=&single;value&single;/>
</complexType>
¡¡¡¡ÕâÖÖ»úÖÆÎª½¨Á¢¸´ÔÓµÄÃûÓòÌåϵÌṩÁËÒ»ÖÖÄ£¿é»¯¶øÓÖÒ×ÓÚÀ©Õ¹µÄ·½·¨¡£Ê¹µÃÃûÓòµÄ×÷ÓÃÄܹ»ÕæÕýµÄ±»ÌåÏÖ³öÀ´¡£
¡¡¡¡XML SchemaÌṩÁËÒ»¸ö·á¸»¶ø¸ü¾ßµ¯ÐԵĻúÖÆÀ´¶¨ÒåXMLÎĵµ´Ê»ã±í¡£ËüʹÓÃXMLÓïÑÔ±¾ÉíÀ´¶¨Ò幨ÓÚÒ»¸öXMLÎĵµµÄÔªÐÅÏ¢£¨meta-information£©£¬ÕâʹµÃXMLµÄÐͬ¹¤×÷ÄÜÁ¦´ó´óµÄÔöÇ¿ÁË¡£¶øÐí¶à¶ÔÓÚDTD¹¦ÄÜÉϵĸĽøºÍÔöÇ¿£¬Ò²Ê¹µÃËü×îÖձض¨»áÖÕ½áDTD£¬×÷ΪXMLµÄÒ»¸ö±ê×¼³öÏÖ¡£ÔÚApache ProjectºÍIBM alphaworksµÄÖ÷Ò³ÉÏÏÖÔÚÒѾÓкܶàµÄSchemaµÄ¹¤¾ß³öÏÖÁË£¬ÄãÈç¹ûÓÐÐËȤµÄ»°£¬²»·ÁÈ¥¿´¿´¡£
ºÃÁË£¬ÓÐÉÏÃæµÄ½éÉÜ£¬ÎÒÃÇÀ´¿´ÈçºÎ´ÓxmlÎļþÖжÁÈ¡Êý¾Ý¡£DataSet¿Ø¼þÌṩÁËReadXml·½·¨¡£Í¬Ê±ÔÚXMLÎļþÖУ¬±ØÐë´æÔÚschemaºÍÎÒÃÇËùÐèÒªµÄÊý¾Ý£¨Data£©¡£
ºÃÁË£¬ÓÐÁËÉÏÃæµÄ½éÉÜ£¬ÎÒÃÇÏÈ¿´Ò»ÏÂdata1.aspxÎļþ£º
Ô´Îļþ£ºadvanceapp\data1.aspx
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<html>
<head>
<title>
XMLÑÝʾ
</title>
</head>
<script language="VB" runat="server">
Sub Page_Load(Src As Object, E As EventArgs)
Dim DS As New DataSet
Dim FS As FileStream
Dim Reader As StreamReader
FS = New FileStream(Server.MapPath("data1.xml"),FileMode.Open,FileAccess.Read)
Reader = New StreamReader(FS)
DS.ReadXml(Reader)
FS.Close()
Dim Source As DataView
Source = new DataView(ds.Tables(0))
MySpan.InnerHtml = Source.Table.TableName
MyDataGrid.DataSource = Source
MyDataGrid.DataBind()
End Sub
</script>
<body>
<center>
<h3><font face="Verdana">XML ÑÝʾ <span runat="server" id="MySpan"/></font></h3>
<ASP:DataGrid id="MyDataGrid" runat="server"/>
</center>
</body>
</html>
ÎÒÃÇÔÙÀ´¿´¿´ xmlÎļþ£¨advanceapp\data1.aspx£©µÄÄÚÈÝ£º
data1.xmlµÄÎļþÈçÏ£º
<center>
<root>
<schema id="DocumentElement" targetNamespace="" xmlns="http://www.w3.org/1999/XMLSchema" xmlns:xdo="urn:schemas-microsoft-com:xml-xdo" xdo:DataSetName="DocumentElement">
<element name="student">
<complexType content="elementOnly">
<all>
<element name="name" type="string"></element>
<element name="age" type="int"></element>
<element name="sex" type="string"></element>
<element name="grade" type="string"></element>
</all>
</complexType>
</element>
</schema>
<DocumentElement>
<student>
<name>jimmy</name>
<age>20</age>
<sex>boy</sex>
<grade>freshman</grade>
</student>
<student>
<name>Mary</name>
<age>20</age>
<sex>girl</sex>
<grade>sophomore</grade>
</student>
<student>
<name>Tom</name>
<age>19</age>
<sex>boy</sex>
<grade>freshman</grade>
</student>
<student>
<name>Susan</name>
<age>20</age>
<sex>girl</sex>
<grade>freshman</grade>
</student>
</DocumentElement>
</root>
</center>
³ÌÐòÔËÐкóÑÝʾÈçÏ£º

µ±È»ÎÒÃÇÒ²¿ÉÒÔ°ÑschemaºÍÊý¾Ý·Ö¿ª³É¶ÔÁ¢µÄÎļþ¡£ÔÚÖ÷ÎļþÖУ¬ÎÒÃÇÒª·Ö±ðʹÓÃthe ReadXmlData ºÍ ReadXmlSchema·½·¨¡£
È磺
¶ÁÈ¡schema.xmlµÄÄÚÈÝ£º
FS = New FileStream(Server.MapPath("schema.xml"),FileMode.Open,FileAccess.Read) Schema = new StreamReader(FS)
DS.ReadXmlSchema(Schema)
FS.Close()
¶ÁÈ¡data.xmlµÄÄÚÈÝ£º
FS = New FileStream(Server.MapPath("data.xml"),FileMode.Open,FileAccess.Read)
Reader = New StreamReader(FS)
DS.ReadXmlData(Reader)
FS.Close()
ÎÒÃÇÉÏÃæÌáµ½µÄdata1.xml·Ö³ÉÁ½²¿·Ö£º
µÚÒ»²¿·Ö£ºÉú³Éschema.XmlÎļþ£º
<schema id="DocumentElement" targetNamespace="" xmlns="http://www.w3.org/1999/XMLSchema" xmlns:xdo="urn:schemas-microsoft-com:xml-xdo" xdo:DataSetName="DocumentElement">
<element name="student">
<complexType content="elementOnly">
<all>
<element name="name" type="string"></element>
<element name="age" type="int"></element>
<element name="sex" type="string"></element>
<element name="grade" type="string"></element>
</all>
</complexType>
</element>
</schema>
µÚ¶þ²¿·ÖÉú³Édata.xml£º
<DocumentElement>
<student>
<name>jimmy</name>
<age>20</age>
<sex>boy</sex>
<grade>freshman</grade>
</student>
<student>
<name>Mary</name>
<age>20</age>
<sex>girl</sex>
<grade>sophomore</grade>
</student>
<student>
<name>Tom</name>
<age>19</age>
<sex>boy</sex>
<grade>freshman</grade>
</student>
<student>
<name>Susan</name>
<age>20</age>
<sex>girl</sex>
<grade>freshman</grade>
</student>
</DocumentElement>
ͨ¹ýÉÏÃæµÄ½éÉÜ£¬Ê¹ÎÒÃǶÔXMLÔÚASP.NETÖÐÓÐÁËÒ»¶¨µÄÈÏʶ¡£ÔÚÏÂÃæµÄÕ½ÚÖУ¬ÎÒÃǽ«¶ÔXML½øÐиüÉîÈëµÄ½²½â¡£
ASP.NETÖеÄÈý²ã½á¹û¿ª·¢·½·¨£¬ÆäʵÆä˼Ïë¸úJavaµÄÒ»Ñù¡£JavaÖеÄÈý²ã¼Ü¹¹ÎªÇ°¶ËµÄhtml¡¢Jsp¡¢Servlet£¬Öмä²ãΪJavaBean¡¢EJB£¬ºóÃæÎªÊý¾Ý¿â·þÎñÆ÷¡£¶øÔÚASP.NETÖУ¬Ç°¶ÎΪhtml¡¢asp¡¢aspxµÈ£¬Öмä²ãΪÓÐ.vb¡¢.csµÈÎļþ±àÒë¶ø³ÉµÄ.dll¿Ø¼þ£¬ºóÃæÎªÊý¾Ý¿â·þÎñÆ÷¡£
ÔÚÎÒÃǵÄÈý²ã¼Ü¹¹ÖУ¬ÎÒÃǵÄÊý¾Ý¿â²ãͨ¹ýÖмä²ãÀ´Á¬½ÓÒÔ¼°²Ù×÷£¬Ç°¶Ë¸øÖмä²ã´«µÝ²ÎÊý£¬²¢½ÓÊÜÖмä²ãµÄ²ÎÊý¡£ÔÚÎÒÃǵÄASP.NETÖУ¬ÎÒÃÇÖ÷Òª¹Ø×¢µÄÊÇÎÒÃǵÄÖмä²ãÓëǰ¶ËµÄÊý¾Ý½»»¥¡£
ÎÒÃÇÒ»°ãͳ³ÆÖмä²ãΪ×é¼þ£¬×é¼þ¿ÉÒÔÓÃ.vb±àÒë¶ø³É£¬Ò²¿ÉÒÔÓÃ.csÎļþ±àÒë¶ø³É¡£Öмä²ãÒ»°ãΪ.dllÎļþ¡£Î¢ÈíµÄ.NET¼¼ÊõÔÚÕâ¸ö·½Ãæ±ÈËûµÄÒÔǰµÄÈκΰ汾¶¼ÒªÀ´µÄ¼òµ¥£¬ÕâÒ²ÊÇËüµÄÒ»´òºÃ´¦Ö®Ò»¡£ÒÔǰÎÒÃÇҪע²áÒ»¸ö.dllÎļþ£¬ÓÐÊÇ×¢²áÓÐÊÇÖØÆô¶¯£¬¶øÔÚ.netÉÏ£¬ÎÒÃǵÄ.dllÎļþÄÃÀ´¾ÍÓ㬲»ÓÃÔÙ¿¼ÂÇ×¢²áµÄÎÊÌâ¡£
ÔÚûÓÐVisual stutio.net֮ǰ£¬ÎÒÃÇÓÃд³ÉµÄ.batÎļþÀ´°Ñ.vbºÍ.csÎļþ±àÒë³É.dllÎļþ£¬ÔÚ.batÎļþÀÎÒÃÇдÈë±àÒëµÄÎļþÃû³Æ¡¢Ïà¹ØÁªµÄÃû×ֿռ䡢Ҫ±àÒë³ÉµÄÎļþÃûÒÔ¼°¶ÔÓ¦µÄÃüÁîÃû³Æ£¬È»ºóÔËÐоÍÐÐÁË¡£ÌýÆðÀ´ºÜ¸´ÔÓ£¬ÕâÒ²ÊǺܶà³õѧÕßÔÚ±àÒëµÚÒ»¸ö.dllÎļþʱËùº¦ÅµÄÊÂÇé¡£µ«ÊÇ×öÆðÀ´ºÜ¼òµ¥µÄ¡£ÏÂÃæÎÒÃǾÙÒ»¸öÀý×ÓÀ´ËµÃ÷.batÎļþµÄд·¨£¬¼ÙÉèÎÒÃÇÓÐÒ»¸öÎļþÃûΪ£ºsaidy.vbµÄÎļþ£¬ÎÒÃÇÒª°ÑËü±àÒë³Ésaidy.dllµÄÎļþ£¬ÆäÖÐÓõ½System¡¢System.Data¡¢System.Data.SQLÃû×ֿռ䣬ÎÒÃÇ¿ÉÒÔ´´½¨Ò»¸ödblink.batÎļþ£¬ÄÚÈÝÈçÏ£º
vbc /out:..\bin\saidy.dll /t:library /r:system.dll /r:system.data.dll / r:system.data.sql.dll
dblink.vb
ÕâÊDZàÒë.vb³ÌÐòµÄÃüÁÈç¹ûÊDZàÒë.csÎļþ£¬ÔòÃüÁî»áÊDz»Ò»Ñù£¬ÎÒÃǼٶ¨ÓÐÒ»¸ösaidy.csµÄÎļþ£¬°´ÕÕÉÏÃæµÄÒªÇó£¬ÎÒÃDZàÒëÈçÏ£º
cs /out:..\bin\saidy.dll /t:library /r:system.dll /r:system.data.dll / r:system.data.sql.dll
dblink.cs
ÎÒÃÇ¿ÉÒÔ¿´³öÀ´£¬´ó²¿·ÖÊÇÒ»ÑùµÄ¡£
µ±È»£¬Èç¹ûÎÒÃÇÓÐ΢Èí¹«Ë¾µÄvs.net±à³Ì»·¾³£¬ÔòÎÒÃDz»ÓÃÕâôÂé·³£¬ÎÒÃÇ¿ÉÒÔÏó±àÒëvb»òÕßvc³ÌÐòÒ»Ñù·½±ãµÄ±àÒë.dllÎļþ¡£Î¢Èí¹«Ë¾µÄvs.netÊÇÒ»¸ö¼¯´ó³ÉÕߣ¬°Ñ¸÷ÖÖÓïÑÔÕûºÏÆðÀ´£¬ÔÚÕâ¸ö»·¾³Ï¶¼¿ÉÒÔд³ö²»Í¬ÓïÑԵijÌÐò¡£¾ßÌåµÄÓ¦ÓÃÎÒÃÇ»áÔÚרÃŵÄÕ½ÚÉϽéÉܵġ£
ÎÒÃÇͨ¹ý¾ßÌåµÄÀý×ÓÀ´ËµÃ÷Èý²ã¼Ü¹¹µÄÓ¦Óã¬ÎÒÃǽ¨Ò»¸öСÏîÄ¿À´ËµÃ÷Õâ¸öÎÊÌâ¡£ÓÐʱΪÁ˰²È«ÐÔ£¬ÎÒÃÇͨ³£°ÑÓëÊý¾Ý¿âµÄÁ¬½ÓÓÃÒ»¸ö¶¯Ì¬Á¬½Ó¿âÎļþ·â×°ÆðÀ´£¬ÕâÑùÎÒÃǾÍÒª°ÑдÊý¾Ý¿âÁ¬½ÓµÄ.vb»òÕß.csÎļþ±àÒë³É¶¯Ì¬Á¬½Ó¿â.dllÎļþ¡£ÉõÖÁÎÒÃǰѶÔÊý¾Ý¿âµÄÏà¹Ø²Ù×÷Ò³±àÒë³É.dllÎļþ¡£
ÏÂÃæÊÇÎÒÃǵÄÓëÊý¾Ý¿âÁ¬½ÓÒÔ¼°²Ù×÷µÄÎļþdblink.vbµÄÖ÷Òª²¿·Ö£¬¶ÔÊý¾Ý¿âµÄÁ¬½Ó£º
Dim dbl As SQLConnection
¶ÔÊý¾Ý¿âµÄ²Ù×÷£¬ÎÒÃǰÑËüдÔÚÒ»¸ö·½·¨ÀïÃæ£¬ÔÚ·µ»ØÏàÓ¦Öµ£º
Function getdata() as DataView
Dim sComm as SQLDataSetCommand
Dim sDS as DataSet
Dim sStr as String
dbl = New SQLConnection("server=localhost;uid=sa;password=;database=howff")
sStr = "select * from color"
sComm = new SQLDataSetCommand(sStr,dbl)
sDS = new DataSet()
sComm.FillDataSet(sDS,"color")
Return sDS.Table["color"].DefaultView
End Function
ÎÒÃǵÚÁù¸öÓï¾ä¾ÍÓõ½ÉÏÃæµÄÓëÊý¾Ý¿âµÄÁ¬½Ó±äÁ¿£¬ÎÒÃÇÕâ¸öº¯ÊýµÄ¹¦ÄÜÊÇ´Ó±í¡°color¡°ÖÐÑ¡³öËùÓеÄÔªËØ£¬²¢·µ»Ø±í½á¹¹µÄÐÎʽ¡£ÍêÕûµÄ´úÂëÈçÏ£º
Imports System
Imports System.Data
Imports System.Data.SQL
'´´½¨Ãû×Ö¿Õ¼ä
Namespace db
'´´½¨Ò»¸öÀà
Public Class dblink
'½¨Á¢Êý¾Ý¿âµÄÁ¬½Ó
Dim dbl As SQLConnection
'·½·¨
Public Function getdata() As DataView
Dim sComm As SQLDataSetCommand
Dim sDS As DataSet
dbl = New SQLConnection("server=localhost;uid=sa;password=;database=howff")
Dim sStr As String
sStr = "select * from color"
sComm = New SQLDataSetCommand(sStr, dbl)
'Ìî³äÊý¾Ý
sDS = New DataSet()
sComm.FillDataSet(sDS, "color")
'·µ»Ø
Return sDS.Tables("color").DefaultView
End Function
End Class
End Namespace
ÎÒÃÇÔÙдһ¸öǰ¶ËµôÓÃÒ³Ãæsaidy.aspx£¬ÎÒÃÇÊ×ÏÈÒªÒýÈëÎÒÃÇ´´½¨µÄÃû×ֿռ䣺
<%@ Import Namespace="db" %>
ÔÚÒ³Ãæ×°ÈëµÄʱºò£¬ÎÒÃÇÓô˷½·¨£º
Sub Page_Load(Sender As Object, E As EventArgs)
'½¨Á¢Ò»¸öеĶÔÏó
Dim newdb As dblink
newdb = new dblink()
'Êý¾ÝÀ´Ô´
Products.DataSource = newdb.getdata()
'Êý¾Ý°ó¶¨
Products.DataBind()
End Sub
ÏÂÃæ¿´¿´ÎÒÃÇÍêÕûµÄ´úÂë(advanceapp\dblink.aspx)£º
<%@ Import Namespace="db" %>
<html>
<script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
'½¨Á¢Ò»¸öеĶÔÏó
Dim newdb As dblink
newdb = new dblink()
'Êý¾ÝÀ´Ô´
Products.DataSource = newdb.getdata()
'Êý¾Ý°ó¶¨
Products.DataBind()
End Sub
</script>
<body style="font: 10pt verdana" bgcolor="CCCCFF">
<BR><BR><BR>
<CENTER>
<h3>.NET->Èý²ã¼Ü¹¹£¡</h3>
</CENTER>
<BR><BR>
<CENTER>
<ASP:DataList id="Products" ShowHeader=false ShowFooter=false RepeatColumns="2" RepeatDirection="horizontal" BorderWidth=0 runat="server">
<template name="itemtemplate">
<table>
<tr>
<td width="150" style="text-align:center; font-size:8pt; vertical-align:top;
height:50">
<p>
<%# DataBinder.Eval(Container.DataItem, "id") %> <br>
<%# DataBinder.Eval(Container.DataItem, "name", "{0:C}").ToString() %>
</td>
</tr>
</table>
</template>
</ASP:DataList>
</CENTER>
</body>
</html>
ÎÒÃÇ¿´µ½£¬ÔÚÕâ¸öÒ³Ãæµ±ÖУ¬Ã»ÓгöÏÖÓëÊý¾Ý¿â½»»¥µÄÓï¾ä£¬ÕâÑùÎÒÃǾͺܺõİÑÊý¾Ý²Ù×÷·â×°ÆðÀ´ÁË£¬ÎÒÃǵÄÔËÐÐЧ¹ûÈçÏ£º

ÔÚ±¾ÕÂÖУ¬ÎÒÃǽ²½âÒ»¸ö»ùÓÚÈý²ã¼Ü¹¹µÄÀý×Ó£¬ÕâÖ»ÊÇÒ»¸ö·Ç³£¼òµ¥µÄÀý×Ó£¬ÎÒÃÇÖªµÀ.NETÔÚÕâ·½ÃæµÄ¹¦ÄÜÊǷdz£Ç¿´óµÄ£¬Äã¿ÉÒÔÓÃËüÀ´Ð´·Ç³£¸´ÔÓµÄ×é¼þ¡£
MSMQ(MicroSoft Message Queue£¬Î¢ÈíÏûÏ¢¶ÓÁÐ)ÊÇÔÚ¶à¸ö²»Í¬µÄÓ¦ÓÃÖ®¼äʵÏÖÏ໥ͨÐŵÄÒ»ÖÖÒì²½´«Êäģʽ£¬Ï໥ͨÐŵÄÓ¦ÓÿÉÒÔ·Ö²¼ÓÚͬһ̨»úÆ÷ÉÏ£¬Ò²¿ÉÒÔ·Ö²¼ÓÚÏàÁ¬µÄÍøÂç¿Õ¼äÖеÄÈÎһλÖá£ËüµÄʵÏÖÔÀíÊÇ£ºÏûÏ¢µÄ·¢ËÍÕß°Ñ×Ô¼ºÏëÒª·¢Ë͵ÄÐÅÏ¢·ÅÈëÒ»¸öÈÝÆ÷ÖУ¨ÎÒÃdzÆÖ®ÎªMessage£©£¬È»ºó°ÑËü±£´æÖÁÒ»¸öϵͳ¹«ÓÿռäµÄÏûÏ¢¶ÓÁÐ(Message Queue)ÖУ»±¾µØ»òÕßÊÇÒìµØµÄÏûÏ¢½ÓÊÕ³ÌÐòÔٴӸöÓÁÐÖÐÈ¡³ö·¢¸øËüµÄÏûÏ¢½øÐд¦Àí¡£
ÔÚÏûÏ¢´«µÝ»úÖÆÖУ¬ÓÐÁ½¸ö±È½ÏÖØÒªµÄ¸ÅÄî¡£Ò»¸öÊÇÏûÏ¢£¬Ò»¸öÊǶÓÁС£ÏûÏ¢ÊÇÓÉͨÐŵÄË«·½ËùÐèÒª´«µÝµÄÐÅÏ¢£¬Ëü¿ÉÒÔÊǸ÷ʽ¸÷ÑùµÄýÌ壬ÈçÎı¾¡¢ÉùÒô¡¢Í¼ÏóµÈµÈ¡£ÏûÏ¢×îÖÕµÄÀí½â·½Ê½£¬ÎªÏûÏ¢´«µÝµÄË«·½ÊÂÏÈÉ̶¨£¬ÕâÑù×öµÄºÃ´¦ÊÇ£¬Ò»ÊÇÏ൱ÓÚ¶ÔÊý¾Ý½øÐÐÁ˼òµ¥µÄ¼ÓÃÜ£¬¶þÔò²ÉÓÃ×Ô¼º¶¨ÒåµÄ¸ñʽ¿ÉÒÔ½ÚʡͨÐŵĴ«µÝÁ¿¡£ÏûÏ¢¿ÉÒÔº¬Óз¢ËͺͽÓÊÕÕߵıêʶ£¬ÕâÑùÖ»ÓÐÖ¸¶¨µÄÓû§²ÅÄÜ¿´µ½Ö»´«µÝ¸øËûµÄÐÅÏ¢ºÍ·µ»ØÊÇ·ñ²Ù×÷³É¹¦µÄ»ØÖ´¡£ÏûÏ¢Ò²¿ÉÒÔº¬ÓÐʱ¼ä´Á£¬ÒÔ±ãÓÚ½ÓÊÕ·½¶ÔijЩÓëʱ¼äÏà¹ØµÄÓ¦ÓýøÐд¦Àí¡£ÏûÏ¢»¹¿ÉÒÔº¬Óе½ÆÚʱ¼ä£¬Ëü±íÃ÷Èç¹ûÔÚÖ¸¶¨Ê±¼äÄÚÏûÏ¢»¹Î´µ½´ïÔò×÷·Ï£¬ÕâÖ÷ÒªÓ¦ÓÃÓëʱ¼äÐÔ¹ØÁª½ÏΪ½ôÃܵÄÓ¦Óá£
ÏûÏ¢¶ÓÁÐÊÇ·¢ËͺͽÓÊÕÏûÏ¢µÄ¹«Óô洢¿Õ¼ä£¬Ëü¿ÉÒÔ´æÔÚÓÚÄÚ´æÖлòÕßÊÇÎïÀíÎļþÖС£ÏûÏ¢¿ÉÒÔÒÔÁ½ÖÖ·½Ê½·¢ËÍ£¬¼´¿ìµÝ·½Ê½(express)ºÍ¿É»Ö¸´Ä£Ê½£¨recoverable£©,ËüÃǵÄÇø±ðÔÚÓÚ£¬¿ìµÝ·½Ê½ÎªÁËÏûÏ¢µÄ¿ìËÙ´«µÝ£¬°ÑÏûÏ¢·ÅÖÃÓÚÄÚ´æÖУ¬¶ø²»·ÅÓÚÎïÀí´ÅÅÌÉÏ£¬ÒÔ»ñÈ¡½Ï¸ßµÄ´¦ÀíÄÜÁ¦£»¿É»Ö¸´Ä£Ê½ÔÚ´«Ë͹ý³ÌµÄÿһ²½ÖèÖУ¬¶¼°ÑÏûϢдÈëÎïÀí´ÅÅÌÖУ¬ÒԵõ½½ÏºÃµÄ¹ÊÕϻָ´ÄÜÁ¦¡£ÏûÏ¢¶ÓÁпÉÒÔ·ÅÖÃÔÚ·¢ËÍ·½¡¢½ÓÊÕ·½ËùÔڵĻúÆ÷ÉÏ£¬Ò²¿ÉÒÔµ¥¶À·ÅÖÃÔÚÁíÍâһ̨»úÆ÷ÉÏ¡£ÕýÊÇÓÉÓÚÏûÏ¢¶ÓÁÐÔÚ·ÅÖ÷½Ê½ÉϵÄÁé»îÐÔ£¬ÐγÉÁËÏûÏ¢´«ËÍ»úÖÆµÄ¿É¿¿ÐÔ¡£µ±±£´æÏûÏ¢¶ÓÁеĻúÆ÷·¢Éú¹ÊÕ϶øÖØÐÂÆô¶¯ÒÔºó£¬ÒԿɻָ´Ä£Ê½·¢Ë͵ÄÏûÏ¢¿ÉÒÔ»Ö¸´µ½¹ÊÕÏ·¢Éú֮ǰµÄ״̬£¬¶øÒÔ¿ìµÝ·½Ê½·¢Ë͵ÄÏûÏ¢Ôò¶ªÊ§ÁË¡£ÁíÒ»·½Ã棬²ÉÓÃÏûÏ¢´«µÝ»úÖÆ£¬·¢ËÍ·½±ØÒªÔÙµ£ÐĽÓÊÕ·½ÊÇ·ñÆô¶¯¡¢ÊÇ·ñ·¢Éú¹ÊÕϵȵȷDZØÒªÒòËØ£¬Ö»ÒªÏûÏ¢³É¹¦·¢ËͳöÈ¥£¬¾Í¿ÉÒÔÈÏΪ´¦ÀíÍê³É£¬¶øÊµ¼ÊÉ϶Է½¿ÉÄÜÉõÖÁÎ´Ôø¿ª»ú£¬»òÕßʵ¼ÊÍê³É½»Ò×ʱ¿ÉÄÜÒѾÊǵڶþÌìÁË¡£
²ÉÓÃMSMQ´øÀ´µÄºÃ´¦ÊÇ£ºÓÉÓÚÊÇÒ첽ͨÐÅ£¬ÎÞÂÛÊÇ·¢ËÍ·½»¹ÊǽÓÊÕ·½¶¼²»Óõȴý¶Ô·½·µ»Ø³É¹¦ÏûÏ¢£¬¾Í¿ÉÒÔÖ´ÐÐÓàϵĴúÂ룬Òò¶ø´ó´óµØÌá¸ßÁËÊÂÎï´¦ÀíµÄÄÜÁ¦;µ±ÐÅÏ¢´«Ë͹ý³ÌÖУ¬ÐÅÏ¢·¢ËÍ»úÖÆ¾ßÓÐÒ»¶¨¹¦ÄܵĹÊÕϻָ´ÄÜÁ¦£»MSMQµÄÏûÏ¢´«µÝ»úÖÆÊ¹µÃÏûϢͨÐŵÄË«·½¾ßÓв»Í¬µÄÎïÀíÆ½Ì¨³ÉΪ¿ÉÄÜ¡£
ÔÚ΢ÈíµÄ.netƽ̨ÉÏÀûÓÃÆäÌṩµÄMSMQ¹¦ÄÜ£¬¿ÉÒÔÇáËÉ´´½¨»òÕßɾ³ýÏûÏ¢¶ÓÁС¢·¢ËÍ»òÕß½ÓÊÕÏûÏ¢¡¢ÉõÖÁÓÚ¶ÔÏûÏ¢¶ÓÁнøÐйÜÀí¡£
ÔÚ.NET²úÆ·ÖУ¬ÌṩÁËÒ»¸öMSMQÀà¿â¡°System.Messaging.dll¡±¡£ËüÌṩÁËÁ½¸öÀà·Ö±ð¶ÔÏûÏ¢¶ÔÏóºÍÏûÏ¢¶ÓÁжÔÏó½øÐвÙ×÷¡£ÔÚÄܹ»Ê¹ÓÃMSMQ¹¦ÄÜ֮ǰ£¬Äã±ØÐëÈ·¶¨ÄãµÄ»úÆ÷Éϰ²×°ÁËMSMQÏûÏ¢¶ÓÁÐ×é¼þ£¬²¢È·±£·þÎñÕýÔÚÔËÐÐÖС£ÔÚʹÓÃASP.NET±à³Ìʱ£¬Ó¦ÔÚÍ·²¿Ê¹Óãº
<%@ Assembly Name=¡±System.Messaging¡±%>
<%@ Import NameSpace=¡±System.Messsaging¡±%>
½«MSMQÀà¿âÒýÈëASP.NETÎļþ
1£® ¶ÔÏûÏ¢¶ÓÁеĴ´½¨
dim MsgQue as MessageQueue
MsgQue=New MessageQueue(MsgPath)
ÆäÖУºMsgPath¿ÉÒÔΪ±¾µØË½ÓжÓÁУ¬Èç¡°.\MyQueue¡±£¬Ò²¿ÉÒÔΪÆäËû»úÆ÷µÄ¹«ÓжÓÁУ¬Èç¡°Saidy\777$\MyQueue¡±,SaidyΪÁíÒ»»úÆ÷Ãû¡£
2£® ÏûÏ¢µÄ·¢ËÍ
dim MsgQue as MessageQueue
MsgQue.Send(Msg)
ÆäÖУºMsgΪÈÎÒ»¶ÔÏó¡£
3£® ÏûÏ¢µÄ½ÓÊÕ
ÏûÏ¢µÄ½ÓÊÕÓÖ·Ö³Éͬ²½ºÍÒì²½·½Ê½Á½ÖÖ£¬Í¬²½½ÓÊÕÔڹ涨ʱ¼äÄÚ´ÓÏûÏ¢¶ÓÁÐÖÐÈ¡³öÊÕµ½µÄµÚÒ»ÌõÏûÏ¢£¬µ±ÏûÏ¢¶ÓÁÐÖÐûÓÐÏûϢʱ£¬³ÌÐò´¦Óڵȴý״̬£»Òì²½½ÓÊÕ·½Ê½ÔòÊǶ¨ÒåÁËÒ»¸öʼþ´¦Àíº¯Êý£¬µ±ÏûÏ¢¶ÓÁÐÖеÚÒ»¸öÏûÏ¢µ½´ïʱÁ¢¼´´¥·¢¸Ãº¯Êý¡£
1£© ͬ²½·½Ê½
dim Msg as Message
dim Fmt As XmlMessageFormatter
Fmt= CType(MsgQue.Formatter,XmlMessageFormatter)
Fmt.TargetTypeNames = new String(){"System.String"}
Msg=MsgQue.receive(New TimeSpan(0,0,3))
Ê×Ïȶ¨ÒåÊÕµ½ÏûϢӦת»»³ÉµÄ¸ñʽ£¬È»ºóÔÚÖ¸¶¨Ê±¼äÄÚÈ¥½ÓÊÕÏûÏ¢
2£© Òì²½·½Ê½
dim Fmt As XmlMessageFormatter
¡®¶¨Òå½ÓÊÕÏûÏ¢ÀàÐÍ
Fmt = CType(MsgQue.Formatter,XmlMessageFormatter)
Fmt.TargetTypeNames = new String(){"System.String"}
¡®¶¨ÒåÏûÏ¢´¦Àíº¯ÊýÈë¿Ú
AddHandler MsgQue.ReceiveCompleted, New ReceiveCompletedEventHandler
(AddressOf OnReceiveCompleted)
¡®¶¨ÒåÏûÏ¢´¦Àíº¯Êý
Public Shared Sub OnReceiveCompleted(s As Object, asyncResult As ReceiveAsyncEventArgs)
Dim MsgQue As MessageQueue = CType(s,MessageQueue)
Dim Msg As Message = MsgQue.EndReceive(asyncResult.AsyncResult)
¡®´ËʱMsg.Body¼´ÎªËùÈ¡ÏûÏ¢¶ÔÏó
MsgQue.BeginReceive()
¡®ÖØÐ¶¨ÒåÒì²½½ÓÊÕ·½Ê½
End sub
¡®Æô¶¯Òì²½½ÓÊÕ·½Ê½
MsgQue.BeginReceive
ÈçͼËùʾ£º
ÏûÏ¢¶ÓÁг£ÓòÙ×÷£º
¡£ÓÃcreate·½·¨´´½¨ÄãÖ¸¶¨Â·¾¶µÄÏûÏ¢¶ÓÁУ¬Ê¹ÓÃdelete·½·¨É¾³ýÒ»¸öÒѾ´æÔÚµÄÏûÏ¢¶ÓÁС£
¡£Ê¹ÓÃexists·½·¨ÅбðÊÇ·ñ´æÔÚÒ»¸öÏûÏ¢¶ÓÁС£
¡£Ê¹ÓÃGetPublicQueues·½·¨»ñÈ¡ÏûÏ¢¶ÓÁÐÍøÂçÖеÄÒ»¸öÏûÏ¢¶ÓÁÐ
¡£Ê¹ÓÃPeek»òÕßÊÇBeginPeek·½·¨²é¿´ÏûÏ¢¶ÓÁÐÖеÄÏûÏ¢£¬¶ø²»»áɾ³ýËüÃÇ
¡£Ê¹ÓÃReceive»òÕßÉÏBeginReceive·½·¨´ÓÏûÏ¢¶ÓÁÐÖÐÈ¡³öÒ»¸öÏûÏ¢£¬Í¬Ê±ÔÚÏûÏ¢¶ÓÁÐÖÐɾ³ýËü¡£
¡£Ê¹ÓÃSend·½·¨£¬ËÍÒ»¸öÏûÏ¢µ½Ö¸¶¨µÄÏûÏ¢¶ÓÁÐÖС£
1£® ´´½¨ÏûÏ¢¶ÓÁÐ
¡£´´½¨¹«¹²ÏûÏ¢¶ÓÁÐ
MessageQueue.Create(¡°MyMachine\MyQueue¡±)
¡£´´½¨Ë½ÓÐÏûÏ¢¶ÓÁÐ
MessageQueue.Create(¡°MyMachine\Private$\MyPrivateQueue¡±)
˵Ã÷£º±êʶPrivate$±íʾ´´½¨µÄÊÇ˽ÓÐÏûÏ¢¶ÓÁÐ
2£® ¶ÓÁÐÒýÓÃ˵Ã÷
µ±Äã´´½¨ÁËÒ»¸öMessageQueue²¿¼þµÄÒ»¸öʵÀýÒԺ󣬾ÍÓ¦Ö¸Ã÷ºÍÄĸö¶ÓÁнøÐÐͨÐÅ¡£ÔÚ¡£Net ÖÐÓÐ3ÖÖ·ÃÎÊÖ¸¶¨ÏûÏ¢¶ÓÁеķ½·¨£º
¡£Ê¹Ó÷¾¶£¬ÏûÏ¢¶ÓÁеÄ·¾¶±»»úÆ÷ÃûºÍ¶ÓÁÐÃûΨһȷ¶¨£¬Òò¶ø¿ÉÒÔÓÃÏûÏ¢¶ÓÁз¾¶À´Ö¸Ã÷ʹÓõÄÏûÏ¢¶ÓÁС£
¡£Ê¹ÓøñʽÃû£¨format name£©£¬ËüÊÇÓÉMSMQÔÚÏûÏ¢¶ÓÁд´½¨Ê±»òÕßÓ¦ÓóÌÐòÔÚ¶ÓÁд´½¨ÒÔºóÉú³ÉµÄΨһ±êʶ¡£
¡£Ê¹ÓñêʶÃû£¨label£©£¬ËüÊÇÏûÏ¢¶ÓÁд´½¨Ê±ÓɶÓÁйÜÀíÕßÖ¸¶¨µÄ´øÓÉÃèÊöÒâÒåµÄÃû×Ö¡£
Ëü¿ÉÄܲ¢²»Î¨Ò»¡£
²ÉÓ÷¾¶£¨path£©·½Ê½ÒýÓöÓÁÐ
|
ÏûÏ¢¶ÓÁÐÀàÐÍ |
·¾¶Ê¹Óøñʽ |
|
Public queue
|
MachineName\QueueName |
|
Private queue
|
MachineName\Private$\QueueName |
|
Journal queue
|
MachineName\QueueName\Journal$ |
|
Machine journal queue
|
MachineName\Journal$ |
|
Machine dead letter queue
|
MachineName\Deadletter$ |
|
Machine transactional dead letter queue
|
MachineName\XactDeadletter$ |
¡£ÒòΪÏûÏ¢¶ÓÁзþÎñÆ÷½ÓÊÕµ½Ò»¸öʹÓ÷¾¶·½Ê½Ê¹ÓÃÏûÏ¢¶ÓÁеIJÙ×÷ÇëÇóʱ£¬»áÈ¥½âÎö³ö·¾¶ºÍ¸ñʽÃû£¨format name£©,Òò´ËËüµÄЧÂÊÉϲ»Èç¸ñʽÃû·½Ê½Ê¹ÓöÓÁС£
¡£ÏûÏ¢¶ÓÁÐδÁ¬½Óʱ£¬Ö»ÄÜʹÓøñʽÃû·½Ê½¶ÔËü·¢ËÍÏûÏ¢¡£
·¾¶ÃûµÄÒýÓóýÁËpathÊôÐÔÒÔÍ⣬»¹¿ÉÒÔÓÉMachineNameºÍQueueNameÁ½¸öÊôÐԵõ½¡£
·¾¶ÒýÓõÄÀý×Ó£º
MessageQueue1.path=¡±.\MyQueue¡±
²ÉÓøñʽÃû£¨format name£©·½Ê½ÒýÓöÓÁÐ
¸ñʽÃûÓɹ«ÓÐ˽Óбêʶ´®¼ÓÉ϶ÓÁвúÉúµÄGUID£¬ÒÔ¼°ÆäËû±ØÐèµÄ±êʶ¹¹³É¡£
|
ÏûÏ¢¶ÓÁÐÀàÐÍ |
¸ñʽÃûµÄ¹¹³É¹æÔò |
|
Public queue |
PUBLIC=QueueGUID
|
|
Private queue |
PRIVATE=MachineGUID\QueueNumber
|
|
Journal queue
|
PUBLIC=QueueGUID;JOURNAL »òÕß PRIVATE=MachineGUID\QueueNumber;JOURNAL |
|
Foreign queues
|
DIRECT=AddressSpecification\QueueName
|
¸ñʽÃûÓɲ»ÓÉÓû§Ö¸¶¨£¬¶øÊÇÔÚ¶ÓÁд´½¨Ê±ÓɶÓÁйÜÀíÕß×Ô¶¯²úÉú¡£
¡£µ±ÄãµÄ²¿¼þ×÷Ϊһ¸öWEB sevice»òÕßÊÇWEBµ÷ÓõÄÒ»²¿·ÖµÄʱºò£¬×îºÃ²ÉÓøñʽÃû·½Ê½ÒýÓöÓÁУ¬ÒòΪËüËٶȽϿ졣
¡£µ±ÏòÒ»¸ö·ÇÁ¬½ÓµÄ¶ÓÁз¢ËÍÏûϢʱ£¬Ó¦Ê¹ÓøñʽÃû·½Ê½£¬ÒòΪµ±¶ÓÁв»¿ÉÁ¬½Óʱ£¬Â·¾¶½âÎö»áµ¼ÖÂʧ°Ü¡£
¡£ÍøÂçÍØÆË½á¹¹·¢Éú±ä»¯»òÕßÏûÏ¢¶ÓÁÐÖØ½¨ÒԺ󣬸ñʽÃû»á±ä»¯¡£
¿ÉÒÔÓÉÏûÏ¢¶ÓÁжÔÏóµÄFormatNameÊôÐԵõ½¸ñʽÃû¡£
ÀýÈ磺²ÉÓøñʽÃû·½Ê½ÒýÓÃÏûÏ¢¶ÓÁеÄÀý×Ó
MessageQueue1.Path = "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75"
²ÉÓñêʶ·½Ê½ÒýÓÃÏûÏ¢¶ÓÁÐ
±êʶÊÇÏûÏ¢¶ÓÁд´½¨Ê±£¬ÓÉÏûÏ¢¶ÓÁд´½¨ÕßÖ¸¶¨ÓÉÓÚÃèÊö¶ÓÁеÄÎı¾ÊôÐÔ¡£²ÉÓñêʶµÄºÃ´¦ÔÚÓÚÆÁ±ÎÁ˵ͲãµÄ¾ßÌåλÖ㬶ÔÓÚÒÆÖ²ºÍ³ÌÐòÐÞ¸Äʱ£¬Ó¦ÓõÄÐ޸ĺÜС¡£ËüµÄȱµãÒ²ÊÇÏÔÈ»µÄ£¬¾ÍÊDz»Äܱ£Ö¤±êʶµÄΨһÐÔ£¬µ±±êʶÓгåͻʱ£¬Ïò¸Ã±êʶ·¢ËÍÏûÏ¢»áµ¼ÖÂÒ»¸ö´íÎóµÄ·¢Éú¡£±êʶ¿ÉÒÔÓÉ·ÃÎÊÏûÏ¢¶ÓÁжÔÏóµÄLabelÊôÐԵõ½¡£
×ܽᣬÎÒÃǶÔÏûÏ¢¶ÓÁÐÒýÓõIJ½Öè´óÖÂΪ£º
Ê×ÏÈ£¬²úÉúÒ»¸öMessageQueue¶ÔÏóµÄʵÀý¡£
È»ºó£¬¸ù¾ÝÒýÓÃÏûÏ¢¶ÓÁеķ½Ê½ÉèÖò»Í¬µÄÊôÐÔ¡£
Èç¹ûΪ·¾¶·½Ê½£¬ÉèÖÃËüµÄpathÊôÐÔ
Èç¹ûΪ¸ñʽÃû·½Ê½£¬ÉèÖÃÆäFormatNameÊôÐÔ
Èç¹ûΪ±êʶ·½Ê½£¬ÉèÖÃËüµÄLabelÊôÐÔ
3£® ɾ³ýÏûÏ¢¶ÓÁÐ
ɾ³ýÒ»¸ö¶ÓÁÐʹÓÃDelete·½·¨¡£µ±É¾³ýÒ»¸ö¶ÓÁÐʱ£¬¶ÓÁÐÖк¬ÓеÄËùÓÐÏûÏ¢½«Ê×Ïȱ»É¾³ý£¬È»ºóɾ³ý¸Ã¶ÓÁУ¬Ëü²»»á°ÑÏûÏ¢¶ÓÁÐÖеÄÐÅÏ¢·¢ÍùËÀÐŶÓÁÐÖС£É¾³ýÒ»¸ö¶ÓÁÐ×îÖ÷ÒªµÄÎÊÌâÊÇÓû§ÊÇ·ñÓÐɾ³ý¸Ã¶ÓÁеÄ×ã¹»µÄȨÏÞ¡£
ʹÓÃDelete·½·¨µÄÀý×ÓÈçÏ£º
MessageQueue.Delete(¡°MyMachine\MyQueue¡±)
4£®Çå³ýÏûÏ¢¶ÓÁÐÖеÄÄÚÈÝ
ÓÐʱÎÒÃÇÐèÒª°ÑËÍÈëÏûÏ¢¶ÓÁÐÖжøÉÐδ·¢³öµÄÏûÏ¢Çå³ý£¬»òÕß¶¨ÆÚÐè¶ÔÏûÏ¢·¢ËÍÈÕÖ¾¶ÓÁнøÐÐÇå³ý£¬¿ÉÒÔʹÓÃÏûÏ¢¶ÓÁжÔÏóÌṩµÄPurge·½·¨¡£Ëü°ÑÖ¸¶¨µÄÏûÏ¢¶ÓÁÐÖеÄÏûϢȫ²¿Çå¿Õ£¬²¢²»ÔÙ·¢ËÍ¡£
ʹÓõÄÀý×ÓÈçÏ£º
MessageQueue1.Path="MyMachine\MyQueue"
MessageQueue1.Purge()
5£®´´½¨ÏûÏ¢¶ÓÁжÔÏóµÄʵÀý
´´½¨Ò»¸öÏûÏ¢¶ÓÁÐʵÀýµÄ²½ÖèÈçÏ£º
1£® ´´½¨Ò»¸öMessageQueueÀàµÄʵÀý
ÀýÈ磺
dim MyQue as New MessageQueue
2£® ¶ÔMessageQueueÀàʵÀýµÄpathÊôÐÔ½øÐÐÉèÖÃ
ÀýÈ磺
MyQue.path=¡±.\MyQueue¡±
3£®ÉèÖÃÄãÐèÒªÆäËûMessageQueueÀàµÄÊôÐÔ
6£®ÏûÏ¢¶ÓÁÐÅäÖÃÊôÐÔ
¹ØÓÚ¶ÓÁеÄÊôÐÔ£º
pathÊôÐÔ£ºËü¿ÉÒÔ¾ö¶¨ÒýÓöÓÁеÄÈýÖÖ·½Ê½£¬Â·¾¶ÒýÓᢸñʽÃûÒýÓᢱêʶÒýÓÃ
categoryÊôÐÔ£º±êʶµ±Ç°Ê¹ÓõĶÓÁеÄÀàÐÍ¡£CategoryÊǶÓÁÐËùÓÐÕß¶¨ÒåµÄGUIDÖµ¡£¸ÃGUIDÖµ¿ÉÒÔÓÐGUIDÉú³É¹¤¾ß²úÉú»òÕßÊÇÓû§×Ô¶¨ÒåµÄÊý×ÖÖµ¡£GUIDÖµ²»»áΨһ£¬ÕâÑù²Å¿ÉÒÔ¸ù¾ÝÏàͬµÄGUIDÖµ£¬°Ñ¶à¸öÏûÏ¢¶ÓÁл®·ÖΪ²»Í¬µÄÀà±ð£¨category£©¡£
¸ú·¢ËÍÊý¾ÝÀàÐÍÏà¹ØµÄÊôÐÔ
FormatterÊôÐÔ£º¾ö¶¨ÔÚÒ»¸ö¶ÓÁÐÖÐÈçºÎ·¢ËͺͽÓÊÕÏûÏ¢µÄ˳Ðò£¬ÒÔ¼°¿ÉÒÔÔÚÒ»¸öÏûÏ¢Öз¢ËÍʲôÑùµÄÄÚÈÝ¡£
ºÍ¶ÓÁн»»¥Ïà¹ØµÄÊôÐÔ
DenyShareReceiveÊôÐÔ£º¾ö¶¨Í¬Ò»Ê±¼äÄÚÖ»ÓÐÒ»¸ö²¿¼þÄܹ»·ÃÎÊÏûÏ¢¶ÓÁÐÖеÄÏûÏ¢¡£
CanReadºÍCanWriteÊôÐÔ£º¾ö¶¨¶ÓÁÐÊÇ·ñ¿ÉÒÔ±»¶ÁÈ¡»òÕßÊÇдÈë¡£
MaximumQueueSizeºÍMaximumJournalSizeÊôÐÔ£ºÒÔǧ×Ö½ÚΪµ¥Î»ÉèÖÃÒ»¸ö¶ÓÁУ¨ÈÕÖ¾¶ÓÁУ©µÄÏûÏ¢×î´óÈÝÄÉÁ¿¡£Ò»µ©½ÓÊÕµÄÏûÏ¢µ½´ïÕâ¸öÈÝÁ¿£¬ÐµÄÏûÏ¢½«²»ÔÙ±»½ÓÊÕ¡£
Ò»°ãÇé¿öÏ£¬ÏûÏ¢¶ÓÁеÄ×î´óֵΪÏûÏ¢¶ÓÁйÜÀíÔ±ËùÉèÖã¬Èç¹ûÕâ¸öֵûÓпØÖƵϰ£¬ÄÇôȱʡµÄÏûÏ¢¶ÓÁÐ×î´óÈÝÁ¿½«ÊÇÎÞÏÞÖÆµÄ¡£
UseJournalQueueÊôÐÔ£º:ÉèÖÃÊÇ·ñ½«ÊÕµ½µÄÏûÏ¢¿½±´µ½ÈÕÖ¾ÏûÏ¢¶ÓÁÐÖÐÈ¥¡£
7£®ÏûÏ¢·¢ËÍ
MSMQÏûÏ¢¶ÓÁÐÖж¨ÒåµÄÏûÏ¢ÓÉÒ»¸öÖ÷Ì壨body£©ºÍÈô¸ÉÊôÐÔ¹¹³É¡£ÏûÏ¢µÄÖ÷Ìå¿ÉÒÔÓÉÎı¾¡¢¶þ½øÖƹ¹³É£¬¸ù¾ÝÐèÒª»¹¿ÉÒÔ±»¼ÓÃÜ¡£Äã¿ÉÒÔÔÚÊôÐÔ´°¿Ú»òÕßÊÇÖ±½Ó¶ÔÏûÏ¢¶ÔÏóµÄÊôÐÔ½øÐи³Öµ¡£µ«ÊÇ£¬ÔÚMSMQÖÐÏûÏ¢µÄ´óС²»Äܹ»³¬¹ý£´£Í£Â¡£
ÏûÏ¢¿ÉÒÔ±»ËÍÍù¹«Óá¢Ë½ÓС¢ÈÕÖ¾¡¢ËÀÐÅ¡¢½»Ò×¶ÓÁС£
¡£¼òµ¥ÏûÏ¢µÄ·¢ËÍ
¼òµ¥ÏûÏ¢·¢Ë͵IJ½Öè´óÖÂΪ£º
£±£®½¨Á¢ÓëÒª·¢ËÍÏûÏ¢µÄ¶ÓÁеÄÁ¬½Ó
£²£®Ö¸¶¨ÄãÒª·¢Ë͵ÄÏûÏ¢µÄ¸ñʽ
£³£®ÌṩҪ·¢Ë͵ÄÊý¾Ý
£´£®Ê¹ÓÃSend·½·¨½«ÏûÏ¢·¢ËͳöÈ¥
²ÉÓüòµ¥ÏûÏ¢·¢ËÍ·½Ê½·¢Ë͵ÄÊý¾ÝÀàÐÍ¿ÉÒÔÊÇ£º¶ÔÏó¡¢ÔÊý¾ÝÀàÐÍ¡¢Êý¾ÝÁ÷»òÆäËû¼òµ¥µÄÊý¾ÝÀàÐÍ¡£
Àý×Ó£ºÒÔ·¢ËÍÒ»¸öÕûÐÍÊýºÍ×Ö·û´®ÎªÀý
Ê×ÏÈ´´½¨Ò»¸öÁ¬½Ó£º
Dim MessageQueue1 as new MessageQueue ("MyMachine\MyQueue")
»òÕß
Dim MessageQueue1 as New MessageQueue
MessageQueue1.path=¡±MyMachine\MyQueue¡±)
ÓÉÓÚÊDZê×¼Êý¾ÝÀàÐÍ£¬ÏûÏ¢¸ñʽ¿ÉÒÔ²»Ö¸¶¨£¬Ê¹ÓÃȱʡµÄ
È»ºó·¢ËÍÊýÖµ£±
MessageQueue1.Send(1)
ÔÙ·¢ËÍ×Ö·û´®¡°hello world¡±
MessageQueue1.Send("Hello world")
¡£·¢Ë͸´ÔÓµÄÏûÏ¢
Ïà¶ÔÓÚ¼òµ¥µÄÏûÏ¢·¢ËÍ£¬·¢ËͽÏΪ¸´ÔÓµÄÏûÏ¢¶ÔÏóÄܹ»¸øÄã´øÀ´¶ÔÏûÏ¢¸ü¶àµÄ¿ØÖƵĿØÖÆÄÜÁ¦¡£¶ÔÓÚ¸´ÔÓ¶ÔÏóµÄ·¢ËÍ£¬ÎÒÃÇÊÇͨ¹ý´´½¨ÏûÏ¢µÄ¶ÔÏóµÄʵÀý£¬È»ºó¶ÔËüµÄÊôÐÔʵÐÐÏàÓ¦ÉèÖÃÀ´ÊµÏֵġ£
·¢Ë͸´ÔÓÏûÏ¢µÄ²½Öè´óÖÂΪ£º
£±£® ´´½¨Ò»¸öMessageQueueµÄʵÀý£¬È»ºó¶ÔËüµÄpathÊôÐÔÉèÖã¬ÒÔÖ¸Ã÷²Ù×÷µÄÏûÏ¢¶ÓÁС£
£²£® ´´½¨Ò»¸öÏûÏ¢¶ÔÏóʵÀý¡£
£³£® ÉèÖÃÏûÏ¢µÄÖ÷Ì壨body£©, È»ºóÐ޸IJ»Ï£ÍûʹÓÃȱʡֵµÄÊôÐÔ¡£
£´£® ͬÑùʹÓÃsend·½·¨°ÑÏûÏ¢¶ÔÏó·¢ËÍÖÁÏàÓ¦µÄ¶ÓÁÐÖС£
Àý×Ó£º
¡®´´½¨MessageQueueʵÀý£¬Ö¸Ã÷Á¬½ÓµÄ¶ÓÁÐ
dim MessageQueue1 as New MessageQueue(¡°.\MyQueue¡±)
¡®´´½¨ÏûÏ¢¶ÔÏóʵÀý
dim MyMessage as New Message(¡°Hello world¡±)
¡®ÉèÖÃÏûÏ¢¶ÓÁÐÊôÐÔ
MyMessage.Label=¡±MyLabel¡±
¡®·¢ËÍÏûÏ¢
MessageQueue1.Send(MyMessage)
8£®ÏûÏ¢½ÓÊÕ
ÏûÏ¢µÄ½ÓÊÕ·ÖΪÁ½ÖÖ£¬¼´Í¬²½ºÍÒì²½¡£
ͬ²½·½Ê½£¬ÎÒÃÇʹÓÃreceive·½·¨¡£µ±µ÷ÓÃreceive·½·¨Ê±£¬Ëü»á´ÓÖ¸¶¨µÄÏûÏ¢¶ÓÁÐÖÐѡȡ³öµÚÒ»¸öÊʺÏÒªÇóµÄÏûÏ¢¶ÔÏ󷵻ظøÓû§£¬È»ºó°ÑËü´ÓÏûÏ¢¶ÓÁÐÖÐɾ³ý¡£Èç¹ûµ÷ÓÃreceive·½·¨µÄʱºò£¬ÏûÏ¢¶ÓÁÐÖÐûÓÐÒ»Ìõ¼Ç¼´æÔÚ£¬ÄÇô·½·¨½«µ¼Ö³ÌÐò¹ÒÆð£¬Ö±µ½ÓÐÏûÏ¢µ½´ïÏûÏ¢¶ÓÁÐÖС£ÎªÁ˲»Ê¹Õâ¸öµÈ´ý¹ý³ÌÌ«³¤£¬Äã¿ÉÒÔÔÚµ÷ÓÃReceive·½·¨Ê±Ö¸¶¨time-outÖµ£¨ºÁÃëΪµ¥Î»£©£¬ÒÔÖ¸¶¨ÔÚÏàӦʱ¼äµ½´ïºóÍ˳öµÈ´ý¹ý³Ì¡£ÔÚʹÓÃReceive·½Ê½Ê±£¬»¹¿ÉÒÔÖ¸¶¨ÏûÏ¢¶ÓÁеÄDenyShareReceiveÊôÐÔ£¬·ÀÖ¹ÆäËûÓû§¶Ô¶ÓÁнøÐвÙ×÷¡£ÊÔÏëÕâÑùÒ»ÖÖÇé¿ö£¬µ±ÏûÏ¢¶ÓÁÐÖÐÊ£Ò»ÌõÏûÏ¢µÄʱºò£¬2¸öÓû§Í¬Ê±¶ÔËüµ÷ÓÃpeek·½·¨£¬·¢ÏÖ¶¼ÓÐÏûÏ¢£¬ÓÚÊǶ¼·ÅÐĵÄʹÓÃReceive·½Ê½È¥»ñÈ¡ÏûÏ¢£¬½á¹û±ØÈ»µ¼ÖÂÆäÖÐÒ»¸öÓû§±»¹ÒÆð¡£Èç¹û£¬ÔÚµ÷ÓÃreceive·½·¨ÒÔǰʹÓÃÁËDenyShareReceiveÊôÐԾܾøÆäËûÓû§µÄ¶Ô¸Ã¶ÓÁеÄReceive·½·¨£¬¾Í»á±ÜÃâÉÏÊöÏÖÏóµÄ·¢Éú¡£
ͬ²½½ÓÊÕµÄÀý×Ó£º
dim MyMessageQue as MessageQueue
MyMessageQue=New MessageQueue(¡°MyMachine\MyQueue¡±)
¡®Ö¸¶¨ÒªÁ¬½ÓµÄÏûÏ¢¶ÓÁÐ
dim MyMessage as New Message
MyMessage=MyMessageQue.Receive(1000)
¡®Í¬²½ÊÕȡһÌõÏûÏ¢£¬³¬Ê±Ê±¼äΪ1Ãë
Peek·½·¨ºÍReceive·½·¨±È½ÏÀàËÆ£¬Ö»ÊÇËü²¢²»°ÑÈ¡µÃµÄÏûÏ¢¶ÔÏó´ÓÏûÏ¢¶ÓÁÐÖÐɾ³ý¡£Peek·½·¨Ö»È¡³öÏûÏ¢¶ÓÁÐÖеĵÚÒ»ÌõÏûÏ¢£¬ÈôҪȡµÃËùÓеÄÏûÏ¢¿ÉÒ