[.net] Silverlight vs Flex


Answers

هناك سؤالان هنا: Silverlight مقابل Flash كمنصة و Silverlight مقابل Flex كإطار RIA.

يعتمد السؤال الأول على الإطار الزمني الخاص بك. يحتوي Flash Player على نسبة تصل إلى 95٪ ، ولا توجد أي طريقة بالقرب من Silverlight. ومع ذلك ، قد تحصل على Silverlight ، بعد كل شيء مدعوم من قبل Microsoft. إذا كنت تهدف إلى إطلاق موقع الأسبوع المقبل وتريد جمهورًا كبيرًا ، فلا يعد Silverlight خيارًا. إذا كنت تهدف إلى إطلاق تطبيق رائع حقًا يرغب الجميع في استخدامه فهو مختلف قليلاً ، إذا كان تطبيقك جيدًا بما يكفي ، فقد يقوم جمهورك المستهدف بتركيب Silverlight فقط لتتمكن من تشغيله.

أما بالنسبة للسؤال الثاني فهو مسألة مدى سهولة تطوير التطبيقات في Silverlight. فليكس ليس مجرد مجموعة من الأدوات ، إنه إطار كبير للغاية يقوم بالكثير من الأمور التي تعمل على تسهيل عمل المطور. يمكنك كتابة نفس التطبيقات باستخدام واجهة برمجة تطبيقات Flash الأساسية فقط ، ولكنها ستكون أكثر من ذلك بكثير. اعتمادًا على ما هو متاح في Silverlight ، يجب أن يكون هذا عاملاً مهمًا عند اتخاذ القرار. إذا كان بإمكانك تقليل وقت التطوير ، فهل لديك برنامجين يستحق كل هذا العناء؟

Question

تقوم شركتي بتطوير عدة أنواع من التطبيقات. يأتي الكثير من أعمالنا من التطبيقات ذات الوسائط المتعددة ، وعادة ما يتم ذلك في Flash. ومع ذلك ، الآن بدأ هذا الجانب من المنزل في الهجرة نحو تطوير فليكس.

معظم تطويرنا الآخر يتم باستخدام .NET. أحاول أن أتقدم نحو تطوير Silverlight بدلاً من ذلك ، نظرًا لأنها ستستفيد بشكل أفضل من مطوري .NET على الموظفين. أنا أفضل منصة Silverlight عبر منصة Flex للحقيقة البسيطة أن Silverlight هو كل رمز .NET. لدينا المزيد من مطوري .NET على الموظفين أكثر من مطوري Flash / Flex ، ومعظم مطوري Flash / Flex هم فنانون تصويريون (ليسوا مبرمجين حقيقيين). السبب الوحيد الذي يدفعهم نحو Flex الآن هو أنه يبدو كخطوة منطقية من Flash.

لقد قمت بالتطوير باستخدام كلاهما ، وأعتقد بصدق أن Silverlight أسهل للعمل معه. لكني أحاول إقناع الناس الذين هم فقط مطوري فلاش.

إذن ، إليكم سؤالي: إذا كنت سأشارك في اجتماع لامتداح Silverlight ، فلماذا تريد شركة الذهاب إلى Silverlight بدلاً من Flex؟ بخلاف الواضح "ليس لدى الجميع Silverlight" ، ما هي إيجابيات وسلبيات لكل منهما؟




لن تحصل أبدًا على إجراء تصويت عادل على هذا السؤال على SO نظرًا لأن لديها العديد من برامج Microsoft.

أيضا ، من المحتمل أن يقوم الناس بالتصويت على هذه الإجابة ، والتي تقول كل شيء حقا.

أقول السماح لمطوري البرامج لديك بتجربة كلا النظامين الأساسيين ومعرفة أيهما يفضلان.

للإجابة على التعليقات أدناه ، لاحظت أنه في حين أن هناك الكثير من الأجوبة التي توصي بـ Flash / Flex ، فإن الأجوبة الخاصة بـ Silverlight تحصل على الكثير من الأصوات. انها ليست مسألة الكذب ، انها مجرد تفضيل ما كنت على دراية ، وليس بالضرورة أفضل منصة.




في نهاية اليوم ، لا يجب على مطوري البرامج أن يمليوا على التكنولوجيا الخاصة بك. هذا هو قرار منتج يجب أن يعتمد على المستخدمين.

إذا كنت تنشر على الإنترنت للمستهلك ، فإن Flash Player أو AJAX هو الطريق الذي يجب أن تسلكه. إذا كنت تقوم بالنشر على شبكة LAN خاصة لمؤسسة .net ، فلديك خيارات.




اعتاد فريقي على كتابة ميزات الويب الغنية في Flex ، والآن يكتبها في Silverlight.

أسبابنا لهذا التبديل:

  • FlexBuilder مبني على Eclipse. كسوف فظيع! مجانا ، ولكن علة تعصف بها ، خلل شغل وبطيئة.
  • FlexBuilder هو ضعف سعر Expression Blend ، والتي نحصل عليها مجانا مع MSDN على أي حال.
  • فليكس هو ألم في التحكم بالمصدر ، فهو لا يحب أن يتم وضع الملفات في مكان واحد ولا يلعب بشكل جيد مع الأجزاء الأخرى من الحل الخاص بك (لقد حاولنا باستخدام SourceGear Vault و SVN).
  • لا يحب إصدار FlexScript من ActionScript معظم تطبيقات SOAP ، خاصةً أنه يحتوي على كل أنواع المشاكل مع .Net WebMethod.
  • على الرغم من استخدامنا لمكونات Flex المرخصة بشكل دوري ، إلا أننا قررنا عدم امتلاكنا لهذا الإصدار وإضافة علامات مائية تجريبية فقط. والطريقة الوحيدة لإزالة هذا هي نقل المشروع إلى وحدات البت وإعادة تثبيت Flex وإعادة تثبيت التراخيص وإعادة إنشائها.
  • FlexBuilder لا يحب فيستا على الإطلاق.
  • يتزايد قبول Silverlight ، عندما كان على المستوى الذي يمكننا إضافته كشرط للميزات ذات الصلة التي قمنا بتبديلها. إذا كنا نعمل من أجل جمهور (بدلاً من الشركات) على شبكة الإنترنت ، فأنا لست متأكداً من أننا سنكون قادرين على ذلك.

ما تبقى من مشروعنا هو .Net و C # ، فقد تجد كل هذه القضايا أقل أهمية في متجر Java.




يتوفر Flash Player بشكل رسمي في جميع أنظمة سطح المكتب (Windows و Linux و Mac) ، في حين سيتم دعم Silverlight بشكل أساسي في Windows.

توفر article التالية مقارنة من الأنظمة الأساسية.




على الرغم من أنني قمت بالعمل مع Silverlight وأنا متحمس جدًا بشأن القدرة على جعل التطبيقات تعيش خارج المتصفح ، فإن إحدى الفوائد الضخمة لـ AIR هي إمكانية الوصول إلى وظيفة السحب والإفلات الأصلية. يتيح لك هذا إنشاء ميزات تحميل صورة أو مستندات سهلة الاستخدام (مثل Flickr uploader). من ما سمعت ، لا تركز MS على هذا النوع من الدعم حتى الآن (أي لم يتم الإعلان عن خطط).




ذهبنا من خلال هذه المسألة نفسها وفاز فليكس إلى أسفل. نشعر بالقلق على مطوري. NET في البداية ، ولكن بعد العمل لفترة طويلة في ألم أجاكس وجافا سكريبت ، أصبحوا يحبون الآن ويستمتعون بالعمل في فليكس.

إليك اختبار بسيط لك. . . حاول العثور على 3 أمثلة على الأقل على تطبيقات Silverlight في العالم الحقيقي (ليست ألعابًا أو مشغلات فيديو أو أدوات). ثم افعل نفس الشيء لـ Flex.




نحن نفعل كل من silverlight والمرن ، وهنا نقطة وجهة نظر المطور لكليهما.

الايجابيات من Silverlight:

  1. قوة C # ، Code Snippets ، إعادة استخدام تطبيقات C # خوارزمية موجودة
  2. قوة لغات أخرى أيضا ، Generics و Linq الخ
  3. قوة التنفيذ الأصلي لـ CLR بدلاً من Interpretator الخاص بفلاش العمل
  4. واحد متكامل Visual Studio للجميع التنمية
  5. Expression Blend هو محرر رائع ومتطور أكثر ثم Fast Builder
  6. XAML هو محرك البحث ودية
  7. انتقالات حالة جميلة لطيفة وسهلة لتعريفها
  8. خيوط والمهام غير المتزامنة
  9. إمكانية الوصول ، لا أحد يعلم أن Microsoft دائما حققت أفضل ميزات إمكانية الوصول على جميع منتجاتها ، فهي تعمل دائمًا بشكل جيد مع الأشخاص ذوي الاحتياجات الخاصة ، وتقارن بين المتصفحات فقط IE تدعم إمكانية الوصول الكامل و Safari / firefox الخ حيث لا تكون أقرب.

سلبيات سيلفرلايت:

  1. مايكروسوفت منصة صارمة ، وأنا أعلم أن الكثير من الناس سوف يجادل ولكن مع السيناريو الحالي ، نصف انتل ماك اللاعبين لا يمكن الحصول على Silverlight 3.0 العمل ، جميع اللاعبين PPC Mac غير قادر على استخدام Silverlight 2.0 فصاعدا ، ولا Silverlight لينكس.
  2. هناك أحادية ، لكن غير معتمدة رسميًا من قبل Microsoft ، ستظل دائمًا متخلفة عن الهندسة العكسية .NET وتقوم بنقلها على منصة أخرى ، وليس خارجها بعد.
  3. أغلبية المكونات / الضوابط هي "مختومة" لذا من الصعب تمديدها وتجاوزها لجعل المكونات الجديدة سهلة.
  4. بنية CustomControl / UserControl سيئة. على سبيل المثال ، لا يمكنك الحصول على جذر XAML ك ComboBox أو أي عنصر تحكم آخر والسماح له بالتصميم بالإضافة إلى التعليمات البرمجية ، يمكنك إنشاء تحكم مخصص ولكنها معقدة للغاية
  5. يتطلب الربط تسمية المكونات ولا يدعم تعبيرات المثيل مثل المرن ، على الرغم من أن الربط ثنائي الاتجاه جيد في Silverlight ولكن يجب عليك كتابة رموز طويلة لارتباطات متعددة لتعبير حساب واحد
e.g.
// this is possible in flex..
// but not in silverlight
<mx:TextBox id="firstName"/>
<mx:TextBox id="lastName"/>

// display full name..
<mx:Label text="{firstName.text} {lastName.text}"/>

الايجابيات من فليكس:

  1. حقا منصة مستقلة ، معتمدة على مختلف الأجهزة وأنظمة التشغيل والعمل في كل مكان عظيم حقا.
  2. المصدر المفتوح يجعل من السهل فهم الوظيفة وتوسيعها.
  3. يمكن توسيع كل عنصر تحكم / مكون وهناك قيود أقل تجاوز السلوك الافتراضي.
  4. الطريقة الأكثر سهولة لإنشاء مكونات جديدة ، يمكن أن يكون لديك mxml مشتقة من أي تحكم وتمديدها بربط واسع النطاق
  5. يحتوي Flex على الكثير من عناصر التحكم ولا تحتاج إلى أي مكتبة تابعة لجهة خارجية

سلبيات فليكس:

  1. تنفيذ بطيء لعمليات الإعدام المتكررة ، لا مواضيع !! لا مهام async!
  2. بناء على النقطة 1 ، لا توجد رسوم متحركة أو رسومات رائعة
  3. لا الأدوية ، لا لغات أخرى ، لا linq ..
  4. فئة رقم لديه خطأ ، غير قادر على تخزين كامل قيمة 64 بت طويلة
  5. كسوف أمر سيئ لتصميم شيء عظيم واجهة المستخدم

استنتاج

  1. نحن نستخدم فليكس لتطبيقات البيانات ، تلك تطبيقات معالجة نموذج بسيطة
  2. Silverlight لرسومات غنية للغاية والرسوم المتحركة



قال أحدهم: "العثور على 3 تطبيقات سيلفرلايت العالم الحقيقي". حسنًا ، كنت أعرف بعضًا من فوق رأسي لكنني غوغل على أي حال. القائمة:

  • أولمبياد بكين 2008 ( الإحصائيات هنا ، 250 تيرابايت من البيانات التي تم تسليمها!)
  • مشغل Netflix حسب الطلب
  • عميل البريد الإلكتروني AOL (قد لا يتم تحريره بعد)

أوه ، لا مشغلات الفيديو؟ حسنا ، هذا يترك تطبيق UFC (وهو عبارة عن فيديو مختلط / دردشة / أشياء أخرى) وعميل البريد الإلكتروني AOL. يتفوق Silverlight على الفيديو وهذا هو المكان الذي يكتسب فيه موطئ قدم ، لكن هذا لا يعني أنه لا يمكنه فعل أشياء أخرى. لا أرى أي سبب لرفضها لمجرد أنها تعمل بشكل جيد.

قال Infoworld [link] أن "Silverlight لديه ميزة تقنية كبيرة وأداء جيد نسبيا. إنها تقنية RIA قادرة للغاية مفيدة بشكل خاص في أيدي المبرمجين مع .Net الخبرة والمصممين بتجربة XAML." إنها مقالة جيدة لتقرأها فيما يتعلق بسؤالك.

إجابتي: إذا كان لديك فريق من devs مرتاحين مع .NET ، فيجب أن يكون Silverlight أولاً في قائمتك. إذا لم يكن كذلك ، فهذا يعني أنه حقيقي. لقد رأيت مقالات تقول إن Visual Studio عبارة عن منصة تطوير متفوقة مقارنة بما تستخدمه مع Flex. لكن فلاش هو لعنة في كل مكان في كل مكان.

ضع في اعتبارك أيضًا أن Silverlight 2 لا يستخدم تقريبًا جافا سكريبت (لا أظن ، لكنني لست إيجابيًا). لذا فإن أي تجنب لـ Silverlight بسبب JS لا أساس له من الصحة.

إذا كان الأداء مهمًا ، سيفوز Silverlight به. لقد رأيت استخدام وحدة المعالجة المركزية في المستعرض الخاص بي يذهب إلى 100٪ مرات عديدة ويقضي على أي نافذة يتم تشغيلها فلاش يتخلص دائمًا منها. من الواضح بشكل خاص في Chrome حيث يمكنك مشاهدة العملية التي تستهلك وحدة المعالجة المركزية (CPU). إذا كنت مهتمًا بـ Silverlight لإمكانية اللعب ، فابحث عن QuakeLight ، منفذ Silverlight في Quake. انها تتشكل بشكل جيد.

أعتقد حقاً أنها تأتي إلى حيث تكمن موهبة مطوّري البرامج ونوع التطبيق الذي ستقدمه. لعبة بسيطة؟ فلاش. خط تطبيق الأعمال؟ سيلفرلايت. ما بين أثنين؟ اذهب مع ما تنصح به.




ميزة أخرى لتطوير Flex هي أنه يمكنك التبديل إلى تطوير تطبيقات سطح المكتب (Adobe AIR) بنفس شفرة المصدر (ونفس IDE) وتوزيعها من الويب. يمكنك التحقق من ذلك لمستقبل منصة الفلاش.
تحديث Q3 / 2011: يدعم Flash 11 تسريع ثلاثي الأبعاد منخفض المستوى ، وهناك بالفعل العديد من الإطارات والمحركات الرئيسية (Unreal Engine 3، Unity) تدعمها. إلا أن نقطة البيع للمستقبل هي أن تطبيق AIR سيعمل على أنظمة التشغيل Windows و Mac و Android و Playbook و iOS (تم إسقاط دعم Linux). مع الحد الأدنى من المتاعب بين النقل بين هؤلاء (على الأقل عندما يكون لديك Adobe CS5.5 +).

تحديث Q2 / 2015: سلفرليغت ميت رسميًا. إن Adobe AIR على قيد الحياة ، ولكن ليس مزدهرًا - قد يكون من المفيد استنادًا إلى مهاراتك وسلسلة الأدوات. كل من Microsoft و Adobe يعترفان بأن HTML5 هو الطريق الصحيح (سواء مع AIR أو Apache Cordova أو Visual Studio).

تحديث Q3 / 2017: هاها واو ، الذي يستخدم الفلاش أيضًا.




يجب عليك عدم استخدام أي من تقنيات ActiveX2.0. لا سيلفرلايت ولا فليكس ...

بادئ ذي بدء ، كلاهما ليس أكثر من "إطارات winforms موزعة مع دعم لكونها تعمل في المتصفح" ، وثانياً لا تستوعب بشكل جيد للأجهزة الأخرى (خصوصاً بالنسبة لـ Silverlight) ، وثالثًا لا تعمل جيد مع الأجزاء الأخرى من صفحتك. أنها لا تعمل بشكل جيد للمعاقين ، إلخ ، إلخ ، إلخ. قائمة تنتقل إلى ما لا نهاية ...

يحاول كل من Adobe و Microsoft إخفاء هذه الحقيقة بجد ، ولكن في نهاية اليوم يكون كل من Silverlight و Flex لا شيء غير ActiveX في التفاف جديد ...

تأكد من أنها تعمل في صناديق الرمل ، هي اللغات المدارة وكل ذلك. ولكن ما زال يتم تنزيل جزء كبير من BLOB لتشغيله محليًا في المتصفح ، AKA ActiveX ...




Links