ما هي المزايا الموجودة في تطوير تطبيق Win32 في C ++ عبر تطبيق .NET في C #؟

StackOverflow https://stackoverflow.com/questions/562620

سؤال

تعلمت برمجة Windows باستخدام Visual C ++، و API Win32. في الوقت الحاضر، يبدو أن معظم التطبيقات تم تطويرها في .NET باستخدام C #. أنا أفهم أن معظم الوقت لا يوجد فرق الأداء بين الكود الأصلي والرمز المدار. لذلك أنا أتساءل، إذا كنت سأبدأ في كتابة تطبيق سطح مكتب جديد اليوم، هل هناك أي سبب (بخلاف حقيقة أنني أكثر دراية مع C ++)، فقد أريد أن أكتبها في C ++ غير المدار بدلا من ذلك بدلا من ذلك من .NET؟ هل لا تزال هناك مزايا لاستخدام C ++ و Lative Code؟ أو لديه هذه الطريقة كانت أكثر أو أقل استبدالها .NET على نظام Windows؟

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

هل كانت مفيدة؟

المحلول

  • الأداء (بعض المواقف، مثل الرسومات)
  • بصمة الذاكرة (كما قال مانكوزو)
  • استخدام المكتبات الموجودة
  • لا حاجة لوقت التشغيل
  • سيطرة أدق

لسرد عدد قليل.

ومع ذلك، قد ترغب أيضا في إلقاء نظرة على السؤال من الزاوية المعاكسة لتقييم لغة الاستخدام إلى حد ما.

بالإضافة إلى ذلك، يمكنك استخدام C ++ / CLI لدمج كلا من التعليمات البرمجية الأصلية و .NET.

نصائح أخرى

IMO أهم واحد للتطبيقات القابلة للتنزيل الصغيرة هو أن الرمز الأصلي لا يحتاج إلى وقت التشغيل .NET. في حين أن النطاق العريض يصبح أكثر وأكثر شيوعا ليس الجميع تقريبا لديه بعد.

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

إذا كان التطبيق الخاص بك يجب أن يكون قادرا على تشغيله دون تثبيت (أي إذا كنت لا تستطيع أو لا ينبغي أن تفعل شيئا مثل تثبيت .NET Framework)، فلا يمكنك الاعتماد على .NET يجري على جهاز Windows (Pre-Vista ). يمكن أن تقع الكثير من تطبيقات المرافق في هذه الفئة.

أوصي لكتابة كل تطبيق سطح المكتب في رمز المدارة. وبعد .NET / C # هو منصة رائعة للقيام بذلك.

أسبابي:

  1. عقوبة الأداء ضئيلة. وبعد جوجل للمعايير إذا كنت لا تأخذ كلامي. ما يهم أكثر هو رمز نفسه. يمكنك كتابة خوارزميات O (N ^ M) في C ++ أو .NET / C #. محركات جيت ناضجة جدا هذه الأيام.
  2. يحتوي C ++ غير المدمن على عيوب كبيرة عندما يتعلق الأمر اختبار الوحدة، والسخرية و romactoring. وبعد انها مرهقة جدا وغير مرنة. يتيح الانعكاس شفرة المدارة لجعل مثل هذه الأشياء مريحة للغاية.
  3. النشر هو قضية صغيرة. ومع ذلك، قم بإنشاء برنامج إعداد يتحقق من الشروط المسبقة .NET الضرورية وتثبيتها تلقائيا هو عدم التفكير.
  4. تجميع أسرع، لا رابطفي حتى يحدث حتى في الخلفية عند تحرير التعليمات البرمجية.
  5. .صافي دعم المكتبة هي طريقة أفضل وأنظف من STL، MFC وتعزيز.
  6. لا توجد ملفات رأس وحدات ماكرو. وبعد هم مجرد خطأ عرضة.
  7. حمايةفي جيد وداعا يتأرجح، مؤشرات سيئة، المتغيرات غير المهيمية ...
  8. استثناءات. وبعد واضح الاستثناء التسلسل الهرمي في .NET. استثناءات C ++ افسدت.

بصمة الذاكرة. ولكن ما لم تكن تتطور للحصول على ذاكرة آلة معاق بشدة، فإنه لا ينبغي أن يكون مشكلة لمعظم التطبيقات.

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

ولكن أدرك أنك سلسلة تطبيقك إليها - إلى اللغة والإطار، إذا كنت فورس في المستقبل حيث قد ترغب في الهروب من ذلك، ففكر أفضل مرتين.

Win32 قديم وملك، لكنه يعمل على أي إصدار ويندوز تقريبا دون تبعيات إضافية، ويمكن أن يكون التعليمات البرمجية الخاصة بك في عادي أو محمول أو C / C ++.

+1 لعدم الحاجة إلى طلب حزمة / تثبيت .NET على الجهاز (الآلات) المستهدفة. هذا لا يزال مشكلة كبيرة.

عندما تكون جميع الآلات أحادية أو صافي، لن تكون هذه مشكلة كبيرة.

شيئين أستطيع التفكير فيه.

  1. حماية الملكية الفكرية. من الصعب بلا حدود عن شخص ما لعكس مهندس تطبيق C ++ غير المدار. يمكن تجميع تطبيقات .NET أو Java التي تم إدارتها بسهولة.

  2. سرعة. C ++ أقرب إلى الأجهزة ولديه بصمة الذاكرة الأصغر كما ذكر التعليق الآخر. هذا هو السبب في أن معظم ألعاب الفيديو تواصل مكتوبة في C ++ وتجميع مضمنة.

يحتوي برامج .NET أيضا مدى عمر الدعم، حيث لا تفعل الأم حقا. سيتم تشغيل الأم لسنوات عديدة عبر نظام التشغيل المختلفة دون الحاجة إلى تحديثات.

يمكن تصوير برامج .NET من خلال تكوين .NET BAD.

.NET برامج بدء التشغيل بطيئة وتشعر بطيئا، يبدأ الأم بسرعة سريعة ويتم تشغيلها بسرعة.

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

استخدم Delphi للأواني الأصلية، وليس C ++. يستند .NET جزئيا إلى ديلفي راد و Java Backend.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top