Bamdad Dashtban

Developer

Month: October, 2008

Bayeux چیست؟

Bayeux چیست؟

پروتوکلی است بر روی HTTP برای جابجایی پیغام های asynchronous ( نا هماهنگ ) با زمان عکس العمل کم. ( سرعت بالا و ترافیک کم ).پیغام ها از طریق کانال های نامگذاری شده مسیریابی می شوند و می توانند از سرور به کلاینت ، کلاینت به سرور و کلاینت به کلاینت ( از طریق سرور ) منتقل شوند.

هدف اصلی این پروتوکل پیاده سازی تراکنش سریع کاربر از طریق وب با استفاده از آژاکس و تکنولوژی Server- Push که Comet نامیده می شود ، است.

Bayeux به دنبال کاهش پیچیدگی های توسعه اپلیکیشن های کامیتی(Comet-driven) برای برنامه نویسان است.

این پروتوکل باعث شده تا مشکلات مسیریابی پیغام ها و هماهنگی با سایر قسمت ها به سادگی حل شده و باعث ایجاد مکانیسم پیشرفت و بسط دادن سیستم می شود.

پیغام های Bayeux برای سادگی در خواندن و اجرا شدن به زبان JSON نوشته می شود.

این پروتوکل برای اولین بار از طرف بنیاد DOJO جزو سردمداران تکنولوژی آژاکس مطرح شد.از این پروتوکل در فریم ورک های مختلف مثل CometD به کار رفته است.از جمله فعالان در این پروژه می توان به Alex Russell جزو فعالان و بوجود آورندگان آژاکس و کامیت اشاره کرد.

برای خواندن این پروتکل از این لینک استفاده کنید.

*نکته: خواندن کلمه Bayeux به صورت آوایی بین بایا و بایو است و x آخر آن تلفظ نمی شود.

مقایسه کامیت On-Board و Off-Board

offboard comet

تعاریف:

Off-Board Comet : به حالتی گویند که سرور های ارائه دهنده کامیت و سرور ارائه دهند سایر داده ها از یکدیگر جدا شوند.

On-Board Comet : به حالتی گویند که همان سروری که داده ها را ارائه می دهد ، کامیت را هم ارائه دهد.

چه تفاوتی دارند؟

بیش از چیزی که شما فکر کنید.به خاطر جدا شدن منابع، تاثیر زیادی روی سیستم می گذارد.به صورت کلی بسته به معماری شما دارد.

مزایای Off-Board Comet:

  • باعث بهبود قطعی های سیستم می شود ( قطعی ها کمتر می شود).
  • هماهنگی بهتر با سیستم های چند زبانه.
  • توسعه و تغییرات راحت تر است.

مزایای On-Board Comet :

  • راه اندازی ساده و آسان.
  • مدیریت ساده در صورت استفاده از داده های نرمال.
  • توسعه و برنامه نویسی سیستم بسیار ساده تر و راحت تر انجام می شود.

از چه FrameWork هایی برای پیاده سازیOff-Board یا On-Board استفاده کنم؟

Cometd, Lightstreamer, Caplin Liberator و Orbited مثال های از فریم ورک ها برای پیاده سازی Off-Board Comet هستند.

DWR و وب سرور هایی که به صورت داخلی از کامیت پشتیبانی می کنند مانند, Grizzy Jetty و TomCat مثال هایی از پیاده سازی On-board Comet هستند.

به طور کلی در پروژه های بزرگ از فرم ورک ها و معماری Off-Board استفاده کنید و برای پروژه های کوچک از On-Board.

چگونه انتخاب کنیم؟

چند فاکتور که به شما استفاده از Off-board را نشان می دهد به شرح زیر است :

  • شما به دنبال توسعه سیستم هایی در مقیاس Google یا FaceBook هستید.
  • شما از زبان های برنامه نویسی مثل PHP استفاده می کنید که به صورت کامل Comet را پشتیبانی نمی کنند.
  • شما سیستم بزرگ فعالی دارید که کاری که کامیت می کند با کاری که کل سیستم می کند متفاوت است.

چند فاکتور که به شما استفاده از On-board را نشان می دهد به شرح زیر است :

  • احتیاجات کامیتی شما با فعالیت اصلی سیستم شما در یک راستا است.
  • شما به دنبال حل مسائل ساده و کارایی های کوچکی هستید.
  • شما کامیت را بدون ایجاد تغییرات زیادی در سرور می خواهید.

جاوا اوج آرزوهای یک برنامه نویس

توی یکی دو سال اخیر چندین بار تلاش کرده بودم جاوا یاد بگیرم ولی همیشه به نظرم سخت می اومد و یاد گرفتن مفاهیم آن برام خیلی سخت شده بود،تا این دفعه آخر که با تشویق دوستم آرش ، خودمو مجبور کردم بشینم جاوا یاد بگیرم.

بعد از اینکه با جاوا آشنا شدم دید جدیدی نسبت به تولید نرم افزار پیدا کردم.

به همه پیشنهاد می کنم در حال یاد گرفتن هر زبانی هستند دست نگه دارند و جاوا یاد بگیرند.

جاوا دنیای زیبایی دارد و  برنامه نویسی با آن لذت زیادی به برنامه نویس می دهد.

تکنولوژی کامیت

نکته : این مقاله رو برای پروژه کلاب نوشتم که متاسفانه پروژه مسکوت ماند. در حال حاضر کامیت پیشرفت زیادی کرده و من فعالیت خودم در مورد تحقیق راجع به این تکنولوژی شروع کردم.این مقاله رو دوباره برای آشنایی این جا می گذارم.

کامیت یک تکنولوژی تحت وب است که در آن وب سرور ، اطلاعات را به صورت نا متقارن به سمت کلاینت ( معمولاّ مرورگر وب ) می فرستد بدون آنکه کلاینت صریحاً درخواستی کرده باشد.کامیت به شما این امکان را می دهد که بر اساس رخداد ها عمل کنید ، به صورت زنده با مرورگر تراکنش داشته باشید که در حالت های دیگر ( سایر معماری ها ) امکان پذیر نیست.
واژه کامیت از سال 2006 مطرح شد ولی از سال ها قبل تحت نام های Server push, HTTP push, HTTP Streaming, Pushlets, Reverse Ajax و…. به کار می رفته است.اپلیکیشن های کامیت ارتباط های طولانی مدت HTTP بین وب سرور و کلاینت دارند (Long-Lived) که به سرور اجازه میدهد با وقفه به درخواست ها پاسخ دهد ، و هر موقع اطلاعات جدیدی بوجود آمد آن ها را به سمت کلاینت Push کنند.این مغایر با تعریفی که از ابتدا در مورد وب شده است می باشد که در آن مرورگر صفحه ی کامل وبی را در قبال فرستادن درخواست می گیرد.همچنین با مدلی که از آژاکس نیز ارائه شده است هم متغایر است که در آن مرور گر با درخواست خود قطعه ای از اطلاعات را برای بروز رسانی صفحه ی کنونی به کار می برد.اثری که کامیت می گذارد بسیار شبیه اپلیکیشن هایی است که به طور سنتی از آژاکس به همراه Polling برای چک کردن وجود اطاعات جدید و بروز رسانی صفحه استفاده میکنند.
ولی عملکرد بسیار بهینه شده و تاخیر و Server load بسیار کم شده است.اپلیکیشن های وب همیشه به خاطر وجود محدودیت های دسترسی به منابع محلی و شبکه ای و همچنین محدودیت هایی که برنامه های درون مرورگری نسبت به اپلیکیشن های دسکتاپ کم توانا تر و کم انعطاف پذیر تر بودند،با پیشرفت مرورگر ها بسیاری از این محدودیت ها برداشته شد و همین باعث بوجود آمدن اپلیکیشن های توانای اینترنت شد.(Rich Internet Applications ) و اپلیکیشن های وب به اپلیکیشن های دسکتاپ شبیه تر و شبیه تر شدند.
یکی از این مشکلات آن بود که هر قطعه ای از اطلاعات که از سمت سرور به سمت کاربر می رفت باید از طرف کاربر صراحتاّ درخواست می شد. که این مشکل با بوجود آمدن کامیت برداشته شد.کامیت به سرور اجازه می داد به صورت زنده به رخ داد ها پاسخ دهد مانند به روز شدن منابع اطلاعات یا تغییر در آن ( شما شاهد تغییر آنی آن خواهید بود ) یا فرستادن پیغامی از طرف کاربر.کامیت بهترین راه حل برای حل این محدودیت می باشد.
فرض کنید شما نشستید و آخرین تغییرات قیمت طلا را مشاهده می کنید برای اینکه قیمت جدید را ببینید احتیاجی نیست از جاوا ، فلش یا … استفاده کنید. شما با کامیت فقط احتیاج به یک مرورگر دارید.به محض تغییر در سرور در مرورگر شما اطلاعات بروز می شوند بدون اینکه از شما درخواستی برای بروز شدن فرستاده شده باشد.
مثال هایی از کامیت

این مثال ها مربوط به Light Streamer نام فریم ورکی تجاری برای Comet و Ajax می باشد.
توجه داشته باشید که در آن واحد فقط یک اپلیکیشن را باز کنید و چند تا با هم باز نکنید.
برای سرعت بیشتر از مرورگر فایر فاکس استفاده کنید.1- نمودار زنده :
http://app.lightstreamer.com/ChartDemo/

2- لیست زنده قیمت های بازار بورس :
http://app.lightstreamer.com/StockLi…x.html?fade=ON

Rss خوان زنده :
http://app.lightstreamer.com/RSSDemo

مونیتوریگ زنده سرور ( برای پهنای باند ، رم ، CPU …)
http://app.lightstreamer.com/MonitorConsole/

اندازه گیری از راه دور مسابقات فرمول 1 :
http://app.lightstreamer.com/WebTelemetryDemo/

*نکته : طرز تلفظ درست Comet ،کامیت می باشد و نه کامت ، در تالار های گفتگوی فارسی دیدم که به اشتباه از کامت استفاده می کنند.