۱۳۸۹/۰۶/۳۰

چه زماني بهتر است از Silverlight استفاده شود؟


1- نياز به توانايي‌هاي موجود در برنامه‌هاي Desktop را داريد اما همچنين نياز است تا آن‌ها را تحت وب نيز ارائه دهيد.
يكي از دلايل اقبال به برنامه‌هاي تحت وب در سازمان‌ها عدم نياز به نصب آن‌ها و توزيع هر چه ساده‌تر اينگونه برنامه‌ها در شبكه است. تنها كافي است چند فايل را بر روي سرور به روز رساني كنيد و پس از آن تمام كلاينت‌ها از آخرين نگارش برنامه شما بهره‌مند خواهند شد (+). توزيع برنامه‌هاي سيلورلايت نيز به همين منوال است. علاوه بر آن استفاده از فناورهايي مانند MEF امكان ماژولار ساختن برنامه و دريافت آخرين ماژول‌هاي تهيه شده (فايل‌هاي XAP مجزاي از برنامه به صورت افزونه) را بر اساس انتخاب و سطح دسترسي كاربر نيز ميسر مي‌سازد.

2- نياز است تا يك برنامه‌ي گرافيكي تمام عيار را تحت وب ارائه دهيد.
توانايي‌هاي XAML به همراه يكي از زبان‌هاي دات نت جهت خلق جلوه‌هاي بصري، پويانمايي و گرافيكي بسيار بسيار فراتر از كتابخانه‌هاي جاوا اسكريپتي موجود هستند و نكته‌ي مهم آن‌ها هم اين است كه لازم نيست حتما يك متخصص مثلا جاوا اسكريپت باشيد تا بتوانيد براي مثال پويانمايي را ارائه دهيد. امكان استفاده از انواع و اقسام قلم‌ها و قرار دادن آن‌ها در برنامه، امكان استفاده از گرافيك برداري و غيره را نيز لحاظ كنيد.

3- برنامه‌ي شما نياز است تا از طريق وب توزيع شود اما نياز به سطح دسترسي بيشتري نسبت به يك برنامه‌ي وب معمولي دارد.
تمام برنامه‌هاي توزيع شده از طريق مرورگرها محدود به سطوح دسترسي آن‌ها نيز هستند. اما امكان نصب خارج از مرورگر برنامه‌هاي سيلورلايت نيز وجود دارد. در اين حالت مي‌توان در صورت نياز و همچنين تائيد صريح كاربر، به سطوح دسترسي بيشتري دست يافت. براي مثال دسترسي به اسكنر در يك برنامه‌ي وب متداول بي‌معنا است. اما سيلورلايت 4 در حالت اجراي در خارج از مرورگر امكان تعامل با اشياء COM را نيز دارد.

4- برنامه‌ي وب شما نياز است تا مدت زمان زيادي فعال باقي بماند.
يك برنامه دريافت ايميل يا يك برنامه مونيتورينگ را در نظر بگيريد. اينگونه برنامه‌ها بايد مرتبا بدون نياز به دخالت كاربر، فعال باقي بمانند و با سرور ارتباط داشته باشند. نوشتن اينگونه برنامه‌ها با HTML و جاوا اسكريپت و فناوري‌هاي مشابه واقعا مشكل بوده و نياز به دانش فني بالايي دارند. اما اين مساله و حيات يك برنامه سيلورلايت تا زمانيكه مرورگر بسته نشده است جزو خواص اوليه اينگونه برنامه‌ها است.

5- از مشكلات مديريت حالت در برنامه‌هاي متداول وب به تنگ آمده‌ايد.
اگر براي مثال برنامه نويس ASP.NET باشيد حتما با مباحث State management آشنايي داريد (از سشن و كوكي گرفته تا ViewState (ايي كه همه به نحوي قصد كوچك كردن آن‌را دارند!) و غيره). تمام اين‌ها هم براي اين است كه بتوان تجربه‌ي كاري برنامه‌هاي دسكتاپ را در محيط مرورگرها شبيه سازي كرد. اين مشكلات در سيلورلايت حل شده است. يك برنامه‌ي سيلورلايت State full است نه Stateless . همچنين اگر از حافظه‌اي هم استفاده مي‌كند اين مورد در سمت كاربر است و نه سمت سرور و نه منقضي شدن زود هنگام سشن‌ها و صدها ترفند براي مقياس پذيري همين مساله‌ي بسيار كوچك با تعداد كاربران بالا در برنامه‌هاي متداول وب.
به عبارتي تصور كنيد كه برنامه‌ي دسكتاپ سال‌هاي قبل شما هم اكنون داخل مرورگر دارد اجرا مي‌شود و چيزي به نام وب سرور وجود ندارد كه پس از نمايش صفحه‌ي وب شما، كليه‌ي اشياء مرتبط با آن‌را در سمت سرور تخريب كند چون بايد پاسخگوي كاربران همزمان بي‌شماري باشد و منابع سرور هم محدود است. (سيلورلايت يك فناوري سمت كاربر است. بنابراين وب سرور صرفا نقش توزيع آن‌را به عهده دارد يا حداكثر ارائه‌ي يك وب سرويس جهت تعاملات بعدي مانند كار با بانك اطلاعاتي)

6- نياز داريد تا برنامه‌ي وب شما تحت تمام مرورگرها به يك شكل به نظر برسد و همچنين رفتار يكساني هم داشته باشد.
هيچ وقت روزي را فراموش نمي‌كنم كه حين پرداخت الكترونيكي بانك XYZ به كمك مرورگر فايرفاكس، دكمه‌ي پرداخت در مرحله‌ي آخر، كار نمي‌كرد! هر چقدر روي آن كليك مي‌كردم اتفاقي نمي‌افتاد! تراكنش برگشت خورد و همين خريد ساده با مرورگر IE به سادگي انجام شد.
با سيلورلايت اين مشكلات را نخواهيد داشت زيرا كار نمايش برنامه شما توسط افزونه‌ي مربوطه صورت مي‌گيرد و اين افزونه مستقل است از نوع مرورگر شما.

7- نياز است برنامه‌ي وب شما در حالت آفلاين هم كار كند.
برنامه‌هاي سيلورلايت تنها زمانيكه نياز به دريافت يا ثبت اطلاعاتي از سرور داشته باشند، بايد آنلاين باشند. همچنين اين برنامه‌ها دسترسي به مفهوم جديدي به نام Isolated Storage دارند كه در آن مي‌توان اطلاعات را به ازاي هر كاربر آن هم با ضريب امنيتي بالا بر روي هارد شخص ذخيره كرد و زمان آنلاين شدن برنامه آن‌ها را به سرور انتقال داد.

8- برنامه وب شما نياز است تا با فايل‌هاي مالتي مديا تعامل داشته و آن‌ها را پخش كند.
حتي تگ Video در HTML5 نيز به پاي توانايي‌هاي مالتي مديا در Silverlight مانند smooth streaming, multicasting, editing, video brushes نمي‌رسد. براي مثال با استفاده از video brushes مي‌توان يك فايل ويديويي در حال پخش را بر روي يك وجه يك شيء در حال پويانمايي نقاشي و نمايش داد.

9- نياز به پشتيباني از multi-touch در برنامه‌ي وب شما وجود دارد.
برخلاف HTML ، تعاملات multi-touch در Silverlight ميسر است.

10- نياز به ايجاد برنامه‌هاي بازي تحت وب داريد.
به طور قطع مي‌توان بازيي‌هايي در حد Pong را با جاوا اسكريپت هم ايجاد كرد، اما اگر نياز به توليد بازي‌هايي جدي‌تر وجود داشت براي مثال انتقال بازي Quake به محيط وب، Silverlight در اين زمينه هم حرف‌هاي زيادي براي گفتن دارد (+).

11- نياز به توليد برنامه‌ي دسكتاپ چند سكويي داريد.
سيلورلايت هم اكنون تحت ويندوز، MAC OS-X ، لينوكس و ... پشتيباني مي‌شود (+). همچنين برنامه‌هاي سيلورلايت قابليت اجراي در خارج از مرورگر را هم دارند.
با سيلورلايت ديگر نيازي نخواهد بود تا كاربران لينوكسي ابتدا Wine را نصب كنند تا بتوانند از يك برنامه‌ي ويندوزي كه انتقال پذير نيست در لينوكس هم بتوانند استفاده كنند؛ چون پروژه‌ي مون لايت لينوكسي براي اين منظور مهيا است.

12- نياز به توليد برنامه‌هاي تحت وب سريع و با كارآيي بالا داريد.
فايل‌هاي نهايي Silverlight با توجه به ماهيت كامپايل شده‌ي آن‌ها به طور قطع از كدهاي جاوا اسكريپتي سمت كلاينت كه بايد توسط مرورگر تفسير و پردازش شوند (و هر كدام هم از موتور خاص خودشان استفاده مي‌كنند)، سريعتر اجرا مي‌شوند (+).

13- از پيچيدگي‌هاي پياده سازي برنامه‌هاي متداول وب خسته شده‌ايد.
هنوز هم با تمام پيشرفت‌هاي حاصل، توليد برنامه‌هاي وب پيشرفته مشكل است. از يك طرف ناسازگاري يك سري از مرورگرها با يك سري از قابليت‌ها را بايد در نظر داشت، تا فراگيري فريم ورك‌هاي Ajax و غيره تا مشكل بودن طراحي كنترل‌هاي جديد فراتر از آن چيزي كه HTML استاندارد ارائه مي‌دهد. بله، به طور قطع دانش فني بالايي در اين زمينه در طي ساليان توليد شده است، اما باز هم فراگيري و تسلط به آن‌ها زمان قابل توجهي را طلب مي‌كند.
در سيلورلايت كليه تعاملات با شبكه به صورت پيش فرض غيرهمزمان است (همان ايده‌ي اصلي Ajax) همچنين با توجه به state full بودن اينگونه برنامه‌ها، عملا برنامه نويس‌ها بدون درگير شدن با مفاهيم اجكسي و مديريت حالت، برنامه‌ي پيشرفته‌ي وبي را در مدت زمان كوتاهي توليد كرده‌اند و اين برنامه در تمام مرورگرهايي كه قابليت بارگذاري افزونه‌ي سيلورلايت را دارند به يك شكل و كيفيت اجرا مي‌شود.

14- در زمينه ميزان مصرف پهناي باند ملاحظاتي ويژه‌اي وجود دارد.
يك برنامه‌ي سيلورلايت تنها يكبار بايد دريافت شود. پس از آن در سمت كاربر كش خواهد شد (تا زمان به روز رساني بعدي برنامه در سرور). همين مساله در دفعات بعدي مراجعه كاربر به سايت نقش قابل توجهي را در كاهش ميزان مصرف پهناي باند (يا به قولي ميزان كمتر data transfer) كلي دارد.

15- فرصت كافي براي فراگيري انبوهي از فناوري‌هاي مختلف را نداريد!
بله! براي ايجاد يك برنامه‌ي تحت وب كه كاربر آن پس از مشاهده بگويد WOW نياز است به HTML ، JS ، CSS ، AJAX ، يكي از فناوري‌هاي سمت سرور و ... مسلط بود (علاوه بر اينكه بايد بدانيد فلان كد JS در IE كار مي‌كند اما در فايرفاكس خير. فايرفاكس فلان قسمت CSS را پشتيباني مي‌كند اما IE خير! و ...).
اما براي استفاده از سيلورلايت فقط كافي است به XAML و يكي از زبان‌هاي دات نت مانند سي شارپ يا VB.NET مسلط باشيد (البته هيچ وقت از دست ASP.NET خلاص نخواهيد شد! حداقل در حد راه اندازي يك وب سرويس يا مفاهيم امنيتي آن).
اين مورد خصوصا براي افرادي كه برنامه نويس دسكتاپ هستند اما علاقمندند تا برنامه‌ي وب نيز توليد كنند بسيار مهم است. با حداقل آموزش مي‌توانند توانايي‌هاي خود را به وب نيز گسترش دهند. علاوه بر آن عمده‌ي دانش Silverlight شما جهت توليد برنامه‌هاي WPF (با توجه به اينكه Silverlight فرزند WPF محسوب مي‌شود) يا Windows phone 7‌ و غيره نيز مي‌تواند بكار گرفته شود.

16- نياز به اجراي كدهاي چند ريسماني در سمت كاربر داريد.
تا اين لحظه پشتيباني رسمي از مباحث چند ريسماني در JavaScript و استانداردهاي مرتبط با آن وجود ندارد. Silverlight به اكثر امكانات Threading موجود در دات نت فريم ورك دسترسي داشته و دانش فعلي شما قابل انتقال است.


و دست آخر بايد به نكته اشاره كرد كه هدف از Silverlight ساخت وب سايت معمولي نيست. اين نوع كارها را با همان ابزارهاي متداول انجام دهيد. هدف اصلي آن ساخت برنامه است (Application در مقابل Web site). مشتري‌هاي اصلي اين نوع برنامه‌ها هم بيشتر سازمان‌ها و اينترانت‌هاي پر سرعت و بسته‌ي آن‌ها هستند كه نه نگران حجم افزونه‌ي سيلورلايت هستند و نه مشكلي با حجم برنامه‌ي سيلورلايت شما در يك شبكه‌ي داخلي پر سرعت دارند.