µÚÆßƪ ¸ß¼¶Ó¦ÓÃ

µÚÒ»ÕÂ XML¼°ÆäÓ¦ÓÃ

XML ÊDZê×¼À©Õ¹ÓïÑԵļò³Æ£¬ÊÇδÀ´Web±à³ÌµÄ±ê×¼¡£ÔÚÕâÒ»ÕÂÖУ¬ÎÒÃǽ«½²ÊöXMLÔÚASP.NETÖеÄÓ¦ÓÃ

7.1.1 ÖÆ×÷¹ã¸æÌõ

ÔÚÕâ¸ö³ÌÐòÖУ¬ÎÒÃÇͨ¹ý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

Ö¸¶¨Í¼Æ¬ÔÚ±í¸ñÖеĴóС

 

7.1.2 XMLºÍdataset¿Ø¼þ½áºÏʹÓÃ

Êý¾Ý·ÃÎÊÊÇÒ»¸öÓ¦ÓÃϵͳµÄºËÐÄ¡£¹«ÓÃÓïÑÔÔËÐл·¾³£¨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¼´ÊÇÕâÖÖ¼¼ÊõµÄÒ»¸öºÜºÃµÄÀý×Ó¡£)

7.1.3 XMLÓï·¨

    ÏÖÔÚÎÒÃÇÀ´½éÉÜÒ»ÏÂ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>

7.1.4С½á

    ͨ¹ýÉÏÃæµÄ½éÉÜ£¬Ê¹ÎÒÃǶÔXMLÔÚASP.NETÖÐÓÐÁËÒ»¶¨µÄÈÏʶ¡£ÔÚÏÂÃæµÄÕ½ÚÖУ¬ÎÒÃǽ«¶ÔXML½øÐиüÉîÈëµÄ½²½â¡£

µÚ¶þÕ Èý²ã½á¹¹¼°ÆäÓ¦ÓÃ

7.2.1 ¸ÅÄî¼°»·¾³

       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ÌÐò¡£¾ßÌåµÄÓ¦ÓÃÎÒÃÇ»áÔÚרÃŵÄÕ½ÚÉϽéÉܵġ£

7.2.2 Ò»¸ö»ùÓÚÈý²ã¼Ü¹¹µÄÀý×Ó

       ÎÒÃÇͨ¹ý¾ßÌåµÄÀý×ÓÀ´ËµÃ÷Èý²ã¼Ü¹¹µÄÓ¦Óã¬ÎÒÃǽ¨Ò»¸öСÏîÄ¿À´ËµÃ÷Õâ¸öÎÊÌâ¡£ÓÐʱΪÁ˰²È«ÐÔ£¬ÎÒÃÇͨ³£°ÑÓëÊý¾Ý¿âµÄÁ¬½ÓÓÃÒ»¸ö¶¯Ì¬Á¬½Ó¿âÎļþ·â×°ÆðÀ´£¬ÕâÑùÎÒÃǾÍÒª°ÑдÊý¾Ý¿âÁ¬½ÓµÄ.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>

 

    ÎÒÃÇ¿´µ½£¬ÔÚÕâ¸öÒ³Ãæµ±ÖУ¬Ã»ÓгöÏÖÓëÊý¾Ý¿â½»»¥µÄÓï¾ä£¬ÕâÑùÎÒÃǾͺܺõİÑÊý¾Ý²Ù×÷·â×°ÆðÀ´ÁË£¬ÎÒÃǵÄÔËÐÐЧ¹ûÈçÏ£º

7.2.4С½á

ÔÚ±¾ÕÂÖУ¬ÎÒÃǽ²½âÒ»¸ö»ùÓÚÈý²ã¼Ü¹¹µÄÀý×Ó£¬ÕâÖ»ÊÇÒ»¸ö·Ç³£¼òµ¥µÄÀý×Ó£¬ÎÒÃÇÖªµÀ.NETÔÚÕâ·½ÃæµÄ¹¦ÄÜÊǷdz£Ç¿´óµÄ£¬Äã¿ÉÒÔÓÃËüÀ´Ð´·Ç³£¸´ÔÓµÄ×é¼þ¡£

 

µÚÈýÕ ʹÓÃMSMQ

7.3.1 »ù±¾¸ÅÄî

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

7.3.2 ÏûÏ¢¶ÓÁеÄÃüÃû¿Õ¼äÌåϵ½á¹¹

ÈçͼËùʾ£º

 

 

 

 

 

 

 

 

 

 

 

 

 

 


ÏûÏ¢¶ÓÁг£ÓòÙ×÷£º

 

       ¡£ÓÃcreate·½·¨´´½¨ÄãÖ¸¶¨Â·¾¶µÄÏûÏ¢¶ÓÁУ¬Ê¹ÓÃdelete·½·¨É¾³ýÒ»¸öÒѾ­´æÔÚµÄÏûÏ¢¶ÓÁС£

       ¡£Ê¹ÓÃexists·½·¨ÅбðÊÇ·ñ´æÔÚÒ»¸öÏûÏ¢¶ÓÁС£

       ¡£Ê¹ÓÃGetPublicQueues·½·¨»ñÈ¡ÏûÏ¢¶ÓÁÐÍøÂçÖеÄÒ»¸öÏûÏ¢¶ÓÁÐ

       ¡£Ê¹ÓÃPeek»òÕßÊÇBeginPeek·½·¨²é¿´ÏûÏ¢¶ÓÁÐÖеÄÏûÏ¢£¬¶ø²»»áɾ³ýËüÃÇ

       ¡£Ê¹ÓÃReceive»òÕßÉÏBeginReceive·½·¨´ÓÏûÏ¢¶ÓÁÐÖÐÈ¡³öÒ»¸öÏûÏ¢£¬Í¬Ê±ÔÚÏûÏ¢¶ÓÁÐÖÐɾ³ýËü¡£

       ¡£Ê¹ÓÃSend·½·¨£¬ËÍÒ»¸öÏûÏ¢µ½Ö¸¶¨µÄÏûÏ¢¶ÓÁÐÖС£

7.3.3 ÏûÏ¢¶ÓÁеIJÙ×÷

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·½·¨Ö»È¡³öÏûÏ¢¶ÓÁÐÖеĵÚÒ»ÌõÏûÏ¢£¬ÈôҪȡµÃËùÓеÄÏûÏ¢¿ÉÒ