عنوان | Cocoon 2 | ||||||||||||||||
نويسنده | هادى صبوحى | تاريخ ارسال | 05/05/1381 | نام قسمت | فناورى | ||||||||||||
معرفي Cocoon بخشي از پروژه xml در سازمان Apache است. در حال حاضر آخرين نسخه ارايه شده نسخه شماره 2 آن است و در اين مقاله توضيحات ارايه شده، براي اين نسخه است. از اين پس در اين مقاله با نام C2 به آن ارجاع مي دهيم. C2 چهارچوبي بسيار انعطاف پذير براي انتشار صفحات وب ارايه مي نمايد. اين سيستم از اجزايي تشکيل يافته که تنها يک اينترفيس دارند و آن xml است. به اين معني که هر جزء يک سند xml را بعنوان ورودي دريافت کرده و سندي xml به عنوان خروجي توليد مي کند. به همين خاطر C2 را يک چهارچوب انتشار وب بر اساس xml مينامند. با يک بررسي اجمالي بر تکنولوژيهاي مشابه نقاط اشتراک و تمايز اين چهارچوب را نشان مي دهيم. امروزه براي انتشار صفحات بر روي وب معمولا از يکي از تکنولوژيهاي معروف زير استفاده مي شود: برخي از مزايا و معايب هر يک ازاين تکنولوژيها که به بحث اين مقاله مربوط مي شود را مي توان در زير خلاصه کرد:
نقطه تمايز C2 و تکنولوژيهاي بالا در اين است که سعي مي کند سه عنصر محتوا، قالب بندي و منطق برنامه(Logic) را از يکديگر جدا سازد. براي اين منظورC2 ازxml بعنوان اساس انتشار صفحات وب استفاده مي کند. بعنوان آشنايي مقدماتي از طرز کار آن، مي توان بطور خيلي ساده شده توليد يک صفحه وب را درC2 بصورت زير خلاصه کرد. توليد يک صفحه از يک سند شروع مي شود. اين سند مي تواند يک سند ايستا ي ذخيره شده در يک فايل xml يا سندي که بصورت پويا بوسيله يک برنامه توليد مي شود، باشد. بر روي اين سند تبديلاتي صورت مي پذيرد تا نهايتا به يک سند html (يا هر خروجي دلخواه) تبديل شود. در ادامه اين مقاله توضيحات دقيقتري ارائه مي شود. براي فهم طرز کار C2، نياز به دانستن برخي از مفاهيم اساسي است که در اينجا بصورت خيلي مختصر بدانها اشاره مي شود. براي آشنايي جزيي تر با هر يک از آنها لطفا ارجاعات ارائه شده را نگاه کنيد: <?xml version=”1.0”> <book id=”123”> <author name=”xyz”/> <title>XML publishing with xml</title> <publish-date><year>2002</year><month>7</month><day>15</day></publish-date> </book> C2 چيست؟ C2 يك چهارچوب XML Publishing است. اين جمله چه معني دارد؟ C2 يك پايگاه داده كه محتوي XML را ذخيره كند يا يك سرويس دهنده J2EE كه امكانات يك Web Server را براي ارايه محتوي فراهم ميكند، نيست. بلكه از لحاظ معماري بين اين دو لايه قرارميگيرد. C2 چهارچوبي براي پردازش محتوي است. پردازش محتوي از طريق يك رشته پشت سرهم يا از يك ترتيبي از اجزا انجام ميشود. اين ترتيب توسط طراح تعيينميگردد. مانند خطوط لوله (pipelines) در سيستم عامل يونيکس،2c از ايده خط لوله براي ترکيب اجزاء استفاده مي کند. مثالهاي ساده : با يك مورد ساده شروع ميكنيم. يك سند XML در يك فايل با نام file.xml ذخيره شده است كه با يك XSL Stylesheet به نام stylesheet.xsl پردازششده و بصورت HTML ارايه ميشود. يك خط لوله مناسب براي اين كار در شكل 1 نمايش داده شده است. شكل 1 شكل 2 <guest-list> <sql:execute-query> <sql:query> SELECT CONCAT(lastName, ', ', firstName) as name, age FROM guest WHERE status = ARRIVING; </sql:query> </sql:execute-query> </guest-list> <guest-list> <row-set> <row> <name>Bush, George</name> <age>56</age> </row> <row> <name>Jackson, Michael</name> <age>42</age> </row> <row> <name>Einstein, Albert</name> <age>105</age> </row> </row-set> </guest-list> به عنوان مثالي ديگر، يك پايگاه داده محلي را در نظر بگيريد كه شامل ليستي از اقلام است كه ميخواهيم نرخ فروش فعلي آنها را بدست آوريم. اين قسمت مي تواند بخشي از يك portal مانند Yahoo باشد. اين مساله ميتواند توسط يك خط لوله چند جزيي مانند شكل 3 انجام شود : شكل 3 <soap:query url="http://www.mystock.org:8080"> <soap:body> <getStockPrice> <stockName>IBM</stockName> <stockName>HWQ</stockName> <stockName>BEA</sockName> </getStockPrice> </soap:body> </soap:query> طرز کار C2 بطور خلاصه همانطور كه گفته شد، سه جزء بنيادي در C2 وجود دارد. اول : توليدکنندهها براي ساخت يك رشته XML SAX استفاده ميشوند. اين رشته ميتواند از يك فايل بر روي فايل سيستم محلي، يك BLOB از XML در يك پايگاه داده، از يك سيستم ديگر و يا هر جاي ديگر باشد. دوم : مبدلها مسؤول تغيير دادن رشته XML هستند كه ميتوانند مبدلهايي مانند XSL، SQL، SOAP، LDAP و يا موارد تعريف شده توسط برنامه ساز باشند. ويژگي اصلي، گرفتن يك رشته XML و ارايه يك رشته XML است. در پايان : سريال کننده ها كه مسؤول خاتمه رشته XML و ارايه محتوي به يك شكل مناسب هستند. معمولا خروجي HTTP است، اما ميتواند يك شكل گرافيكي، نوشتن در يك فايل سيستم، و يا در عمل هر چيز ديگري باشد. نقشه سايت (Sitemap) خطوط لوله C2 توسط يک فايل مخصوص بنام Sitemap تعريف ميشوند، كه در فايل sitemap.xmap ذخيره مي گردد. قطعه اصلي Sitemap براي مثال شكل 3 مي تواند بصورت زير باشد : <map:match="*.html"> <map:generate src="file.xml"/> <map:transformer type="sql"> <map:parameter name="use-connection" value="mydatabase"/> </map:transformer> <map:transformer type="xsl" src="format-adjust.xsl"/> <map:transformer type="soap" url="soap://www.stockquote.com"/> <map:transformer type="xsl" src="html-presentation.xsl"/> <map:serializer type="html"/> </map:match> خلاصه : C2 مفهوم پردازش خطي را پيادهسازي ميكند. اجزا موجود C2 توانايي دسترسي به پايگاههاي داده رابطهاي و XML، همچنين ارتباط به LDAP و ساخت تصاوير گرافيكي را دارند. ميتوان منتظر اجزايي با توانايي ساخت و دريافت پيامهاي SOAP و ebXML، سريالكنندههاي قرارداد SNMP، اجزا فراهمساز COM و EJB/RMI و يا در كل اجزا با انجام وظايف ديگر براي مسايل كاري مهم بود. Cocoon مثالي از يك نرمافزار هدايت شده توسط XML، يك معماري كه دامنه دانش كاري بصورت XML گرفتهميشود و اين XML نرمافزار با روند كلي را راهبري ميكند. اجزا XSL و مبدل SQL مثالهاي روشني هستند. سازندگان نرمافزار تنها نياز دارند كه راهحل نرمافزار را بصورت زبان XML بيان كرده و قادر به استفاده از اجزا ديگران نيز هستند. مرجع :
http://xml.apache.org/cocoon
|