IranIT.info Articles
عنوان مجوعه اي از نرم افزارهاي Open Source براي Web Applicationها
نويسندهحسن ابوالحسنى تاريخ ارسال 23/02/1382 نام قسمت فناورى
در اينجا تعدادي از نرم افزارهاي open source که بطور روزافزوني براي توليد و ارائه کاربردهاي براساس وب مورد استفاده قرار مي گيرند را به اجمال معرفي مي کنيم. اين مجموعه در برگيرنده انواع مختلفي از نرم افزارها که قابليت توليد و ارائه کاربردهاي کوچک تا خيلي بزرگ را فراهم مي سازند است. البته براي هر رده از نرم افزارهاي ارائه شده در اينجا نرم افزارهاي تجاري مشابهي وجود دارد، ولي امروزه بسياري از موسسات به دلايل زير ترجيج مي دهند تا اين نرم افزارها را بکارگيرند:
1-صرفه جويي در هزينه ها
2-نرم افزارهاي open source به درجه اي از بلوغ رسيده اند (خصوصا آنهائيکه در اينجا معرفي شده اند) که با نرم افزارهاي تجاري مي توانند رقابت کنند،
3-يکي از دلايلي که بعضي اوقات بعنوان مانعي براي استفاده گسترده از اين نرم افزارها عنوان شده است، عدم پشتيباني آنها بوسيله شرکتهاي تجاري است. به اين ترتيب عنوان مي شود که در صورت پيش آمدن مشکلي مرجعي که بتوان به آن رجوع نمود و مشکل را رفع کرد وجود ندارد. خوشبختانه امروزه سالها از بکارگيري اين نرم افزارها گذشته و بسياري از سئولات و مشکلات مطرح براي توليد کنندگان در mailing list ها و نظاير آن پاسخ دهي شده است.

شکل زير نمايي از نرم افزارهايي که در اينجا مورد بررسي قرار مي گيرند را نشان مي دهد:


Linux- يکي از مشهورترين نرم افزارهاي open source است. لينوکس امروزه بيشتر بعنوان سيستم عامل سرورهاي وب مورد استفاده قرار مي گيرد. برخلاف سيستم هاي ويندوز، اين سيستم همواره قابليت اطمينان بالا را بعنوان فاکتور اساسي در نظر داشته است. با در نظر گرفتن مزاياي آن، شرکتهاي بزرگي نظير آي بي ام و اچ پي امروزه سيستم هاي سخت افزاري خود را براساس اين سيستم عامل بنا مي کنند.
http://www.linux.org

Apache web server- امکاناتي براي ميزباني يک وب سايت فراهم مي سازد. صفحات يک سايت مي توانند بصورت فايلهاي ايستاي html بوده و يا با استفاده از برنامه هاي cgi بصورت ديناميک ايجاد شوند. برنامه ها مي توانند به زبانهايي نظير perl يا php (در ادامه توضيح داده مي شود) نوشته شوند. اين نرم افزار همچنين امکانات اساسي براي تعريف سايتهاي مجازي (virtual host) فراهم مي سازد. امروزه براي ميزباني سايتهاي ايستا (تنها داراي تعدادي فايلهاي html) و يا کاربردهاي نوشته شده به perl يا php (کاربردهاي کوچک تا متوسط) از اين نرم افزار بصورت گسترده اي استفاده مي شود. براساس آمارهاي منتشر شده اکثر وب سرورهاي موجود از اين نرم افزار استفاده مي کنند.

استفاده ديگري که براي کاربردهاي بر اساس وب از اين نرم افزار مي شود، ترکيب آن با يک application server (مثلا tomcat) است. در اين حالت apache web server بعنوان سرور دريافت کننده درخواستها و رد کننده آن درخواستها بهserver application بکار مي رود. مزيت اين روش بجاي ارسال مستقيم درخواستها به application server در اين است که با امکانات قوي آن مي توان امنيت دسترسي به سايت را تعريف کرد. همچنين براي تعريف سايتهاي مجازي استفاده از آن مفيد است.

موارد بالا را مي توان در شکل زير خلاصه کرد:


در اينجا يک وب سايت داراي تعدادي صفحه ايستا، قسمتهايي نوشته شده به perl و php (مثلا قسمت bultine board)، و برنامه هايي در داخل يک application server (مثلا قسمت order processing) است. همانطوريکه در شکل نشان داده شده است، همه درخواستها ابتدا به apache web server وارد شده، پردازشهاي اوليه بر روي آن صورت پذيرفته (چک امنيت دسترسي، نگاشت سايت مجازي به برنامه هاي فيزيکي و غيره) و سپس به قسمت مورد نظر ارسال مي گردد. در نهايت جواب به درخواست به apache وارد شده و از آنجا به مشتري برگشت داده مي شود.
http://httpd.apache.org

mysql- يک RDBMS است. از نقاط برجسته آن سرعت پاسخ دهي آن است. مي توان از محيط هاي متفاوتي نظير perl، php، c++، java و امثال آن با آن ارتباط برقرار کرد. در محيط php امکاناتي از پيش تعريف شده براي استفاده از اين نرم افزار بصورت بهينه وجود دارد.
http://www.mysql.com

Apache tomcat- يک application server است. همچنين بعنوان servlet engine نيز شناخته مي شود. در هر حال، محيطي براي اجراي برنامه اي نوشت شده به زبان java که بر روي سرور اجرا مي شوند فراهم مي سازد. برنامه ها بصورت java servlet و يا java server page (jsp بصورت اختصار) نوشته مي شوند.
http://jakarta.apache.org/tomcat/index.html

Jboss- اصطلاحا بعنوان يک EJB container شناخته مي شود به اين معني که محيطي براي اجراي EJBhها فراهم مي سازد. بطور خلاصه EJB (Enterprise Java Bean)ها componentهايي هستند که بوسيله يک container مانند Jboss مديريت شده و يک لايه شئ گرا براي يک بانک اطلاعاتي رابطه اي فراهم مي کنند. شکل زير ارتباط يک container و يک RDBMS را بصورت خيلي ساده شده نشان مي دهد.

همانطوريکه در اين شکل نشان مي دهد مهمترين وظيفه يک container مديريت EJB در حافظه اصلي را به عهده داشته و اين تضمين را ايجاد مي کند که هر لحظه آنها با مقادير جداول مربوطه در بانک اطلاعاتي هماهنگ هستند. همچنين آنها امکاناتي در زبان جاوا براي يافتن، ايجاد و حذف EJBها (که بنابراين بطور اتوماتيک بر روي جداول بانک اطلاعاتي تاثير خواهند گذارد) فراهم مي سازند.
http://www.jboss.org/index.html

Perl- محيطي است که در ابتدا براي مديريت سيستمهاي يونيکس تعبيه شد. با پيدايش وب با توجه به داشتن امکانات قوي براي پردازش متن و توليد سريع برنامه ها بوسيله آن، مورد علاقه توليد کنندگان قرار گرفت. تعداد زيادي از کاربردهاي کوچک بر روي وب را مي توان براساس اين سيستم پيدا کرد.
http://www.perl.org

Php- محيطي است که از دل محيط perl ايجاد شده است. با ساده سازي پردازش درخواستها و ايجاد مدل امنيت قوي تر امروزه نسبت به perl ترجيح داده مي شود. کاربردهاي کوچک تا اندازه متوسط بخوبي براساس آن ايجاد و مورد استفاده گسترده قرار گرفته اند. به هر حال هم php و هم perl زبانهاي ساختيافته واقعي مانند جاوا و C++ نيستند. اين عامل به همراه مدل اجرائي آن که بصورت مفسري است و نه کمپايلري باعث مي شود که بکارگيري از آن براي کاربردهاي بزرگ مشکل ساز باشد.
http://www.php.net

Cocoon- يک فريم ورک براساس xml در محيط جاوا است. با داشتن امکانات اساسي براي پردازش xml ها و تبديل آنها به فرمتهاي مختلف و در نهايت توليد فرمت نهايي مانند pdf، html، wap و غيره مي تواند بسياري از نيازمنديهاي کاربردهاي وب را پاسخگو باشد.

ايده اصلي در cocoon ايده خط لوله (pipeline) است. يک خط لوله با عنصري که اصطاحا توليد کننده ناميده مي شود شروع مي گردد. يک توليد کننده وظيفه توليد xml sax event ها را از يک منبع (مثلا يک فايل بر روي سيستم عامل) به عهده دارد. پس از توليد کننده تعدادي مبدل (transformer) در خط لوله وجود دارند که هر يک ساختار xml دريافتي را به ساختار ديگري تبديل مي نمايند. در انتهاي خط لوله يک سريال کننده (serializer) قرار دارد که نتيجه را براي مشتري تدارک مي بيند. شکل زير يک خط لوله نمونه را نشان مي دهد.

در اينجا خط لوله با يک توليد کننده که فايل xml را خوانده و eventهاي لازم را توليد مي کند شروع مي گردد. اين xml در اينجا شامل مشخصات يک پرسش از يک بانک اطلاعاتي است. در ادامه يک DB Transformer براساس ساختار پرسش دريافتي با بانک اطلاعاتي ارتباط برقرار کرده و نتيجه را بصورت ساختار xml جديدي ارائه مي کند. در ادامه يک xslt transformer آنرا به صورت xhtml در آورده و در نهايت serializer آنرا بعنوان نتيجه به مشتري ارسال مي کند.
http://xml.apache.org/cocoon

AXIS- يک فريم ورک براي انتشار و استفاده از web service ها فراهم مي کند. در حال حاضر تنها محيط مورد پشتيباني جاوا است ولي گسترش به محيطهاي ديگري نظير C++ مد نظر توليد کنندگان آن است.
http://ws.apache.org/axis/index.html

FOP- مخفف Formating Object Processor است. XSL:FO ? استانداردي است که براي نمايش صفحات چاپي بصورت استاندارد xml، ايجاد شده است. هدف از پروژه FOP ايجاد محيطي براي تبديل فايلهاي XSL:FO به فرمتهاي ديگري نظير PDF، SVG و نظاير آن است.
http://xml.apache.org/fop/index.html

Apache Xindice- يک بانک اطلاعاتي xml واقعي است. به اين معني که مي توان مستندات xml را در آن ذخيره و مورد پردازش قرار داد. بعنوان زبان پرس و جو از استاندارد XPATH استفاده مي کند.
http://xml.apache.org/xindice