سؤال

آمل أن يكون هذا السؤال لا يأتي قبالة كما وضح كما قد يبدو في البداية.أنا تصميم تطبيق البرمجيات في بلدي <sarcasm>ضخمة</sarcasm> وقت الفراغ.وأود أن يكون على حد سواء عبر منصة وحدات.في هذه النقطة لأنني لا تزال في مرحلة التخطيط ، يمكنني اختيار عمليا أي لغة و أدوات.

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

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

هذه ليست فكرة جديدة, و لا سيما الغريبة.إلا أنني أجد نفسي المصارعة مع ليس كثيرا كيف نفعل ذلك (أستطيع أن أفكر في الكثير من الطرق) ، ولكن الأسلوب الذي هو أفضل.

على سبيل المثال, أعرف أن الكسوف تجسد عمليا ما أصفه, ولكن أجد تطبيقات جافا في العام (و الكسوف هو استثناء) أن تكون كبيرة جدا و بطيئة على ما أريد.كما سبق تطبيقات سطح المكتب مكتوب بيثون وروبي (التي هي ممتازة اللغات!)

أنا لا أمانع ترجمة التعليمات البرمجية الأساسية لمنصات مختلفة مثل الأم exectables.بعد, C و C++ لديها مجموعة من القضايا.

C# المطور, لدي تفضيل التعليمات البرمجية المدارة.ولكن أنا لست على الإطلاق تباع في مونو ، بعد (قد أقتنع).

هل من أحد لديه أفكار/الخبرات/ محددة المفضلة أطر للمشاركة ؟

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

المحلول

فقط كمثال:ل .صافي تطبيقات هناك سيارة أجرة (مركب تطبيق بلوك) و مركب تطبيق توجيهات WPF.على حد سواء هي أساسا تطبيقات مجموعة من عدة أنماط التصميم التي تركز على نمطية فضفاضة اقتران بين مكونات مماثلة المكونات في الهندسة المعمارية:لديك IOC إطار MVC فئات أساسية ، المتباعدة الحدث وسيط, تحميل الديناميكي من وحدات وغيرها من الاشياء.

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

لذا تأخذ ليكون:

  1. دراسة (إذا كنت لم تكن مألوفة مع) بعض من تلك أنماط التصميم.هل يمكن أن نأخذ كمثال سيارة أجرة إطار WPF الوثائق: أنماط في مركب تطبيق المكتبة
  2. تصميم العمارة التفكير في أي من هذه الأنماط تعتقد المفيد ما تريد تحقيقه أول من دون التفكير في نمط معين تطبيقات أو منتجات.
  3. مرة واحدة لديك الخاص بك 'المتطلبات المعمارية' تعريف أكثر تحديدا ، والبحث عن الفردية الأطر التي تساعد على إنجاز كل واحد من هذه الأنماط/ميزات اللغة كنت ترغب في استخدام وضع معا التطبيق الخاص بك الإطار بناء عليها.

أوافق على أن الجزء الصعب هو جعل كل هذا المنبر المستقل.أنا حقا لا يمكن التفكير في أي حل آخر لاختيار منصة ناضجة مستقلة اللغة مثل جافا.

نصائح أخرى

هل تخطط سطح المكتب أو تطبيقات الويب ؟

الجميع هنا يعتقد أحادية كبيرة ، ولكن ما زلت لا أعتقد انها مستعدة لاستخدام الصناعة ، وأود أن مساواة أحادية إلى حيث النبيذ هو فكرة عظيمة;عندما يعمل يعمل بشكل جيد, و عندما لا...حسنا الخاص بك من الحظ.mod_mono Apache للغاية glitchy و من الصعب الحصول على تشغيل بشكل صحيح.

إذا تهدف لسطح المكتب, لا شيء يدق الكسوف الحزب الشيوعي الثوري (الغنية منصة العميل) الإطار: http://wiki.eclipse.org/index.php/Rich_Client_Platform.

يمكنك بناء نافذة, لينكس, ماك بموجب نفس القانون وجميع مكونات واجهة المستخدم هي الأم إلى نظام التشغيل.و RCP يفوز في نمطية اليدين إلى أسفل ، وقد المكونات في الهندسة المعمارية التي لا مثيل لها (ما رأيت)

لقد عملت مع الحزب الشيوعي الثوري عن 1.5 سنة الآن وأنا لا أعرف ماذا يمكن أن يحل محله ، ذلك هو #1 في مكانة.

إذا كان الخاص بك تماما بدلا من جافا وأود أن ننظر إلى wxWidgets إما مع بيثون أو C++

إذا كنت تريد منصة الاستقلال ، ثم عليك أن التجارة بين الأداء والاقتصاد في جهود التنمية.C++ قد تكون أسرع من جافا (هذا أمر قابل للنقاش FWIW) ولكن ستحصل على منصة الاستقلال الكثير أكثر سهولة مع جافا.بايثون و روبي هم في نفس القارب.

أشك في ذلك .صافي سيكون أسرع بكثير من جافا (كلاهما VM اللغات بعد كل شيء) ، ولكن المشكلة الكبيرة مع .صافي هو منصة الاستقلال.أحادية لديه هدف نبيل والغريب نتائج جيدة حتى الآن ولكن سوف دائما أن يلعب اللحاق بالركب مع مايكروسوفت على نظام التشغيل ويندوز.كنت قد تكون قادرة على قبول حدوده لكنه لا يزال لا نفس وجود متطابقة المتعدد البيئات التي Java و Python و Ruby لها.أيضا:على .صافي دعم وتطوير أدوات منحرفة بشدة نحو نظام ويندوز, و ربما سوف يكون دائما.

المنظمة البحرية الدولية ، وأفضل رهان هو الهدف جافا...أو ، على الأقل ، JVM.إذا كنت لا ترغب في لغة جافا (مثل C# ديف أظن أن الأمر ليس كذلك) ثم على الأقل لديك خيارات مثل Jython, JRuby ، سكالا.مع JVM ، يمكنك الحصول على جيد جدا منصة الاستقلال الأداء الجيد و الوصول إلى عدد كبير من المكتبات و أدوات الدعم.هناك دائما تقريبا جافا مكتبة, منفذ أو تنفيذ من شأنها أن تفعل ما عليك أن تفعله.أنا لا أعتقد أن أي منصة أخرى لديها نفس العدد من الخيارات ؛ هناك قيمة حقيقية في تلك المرونة.

أما بالنسبة نمطية:هذا مزيد من المعلومات حول كيفية بناء البرنامج من منصة ما كنت تستخدم.أنا لا أعرف الكثير عن البرنامج المساعد أبنية مثل تصف لكن أعتقد أنه سيكون من الممكن في كثير جدا من أي برنامج تختاره.

إذا كنت تخطط على القيام الثعبان التنمية ، يمكنك دائما استخدام بيركس لتحسين بعض أبطأ أجزاء.

مع محدودية أحادية تجربة أستطيع أن أقول أنا جدا تباع على ذلك.حقيقة أن هناك نشاطا التنمية والكثير من الجهد المتواصل لكي يصل إلى المواصفات مع أحدث .صافي التقنيات مشجع.هذا هو مفيدة بشكل لا يصدق أن تكون قادرة على استخدام القائمة .صافي المهارات على منصات متعددة.لدي قضايا مماثلة مع الأداء عند محاولة إنجاز بعض المهام الأساسية في بايثون + PyGTK ربما أنها يمكن أن تكون مصنوعة من أداء في اليد اليمنى ولكن من الجميل أن لا داعي للقلق حول أداء 90% من الوقت.

لتطبيقات سطح المكتب والكتابة في تفسير اللغة ، عبر منصة واجهة المستخدم أدوات مثل wxWidgets سوف تحصل شوطا طويلا نحو منصة الاستقلال (عليك أن تكون حريصا على عدم استخدام أي وحدات أخرى التي لا عبر منصة ، استخدام أشياء مثل بايثون os.path وحدة في مكان القيام بأشياء مثل config_path = "/home/$USER")

وقال لجعل جيد عبر منصة التطبيق سيكون لديك للقيام ببعض الأشياء بشكل مختلف على كل منصة..

على سبيل المثال ، OS X هو على الارجح الاكثر مختلفة - تفضيلات عادة ما تكون مخزنة في ~/المكتبة/Prefernces/ باسم .plists ، واجهة المستخدم عموما القائم حول النوافذ العائمة ، مع قائمة واحدة-شريط رست في الجزء العلوي من الشاشة.

أعتقد أن هذا هو المكان نمطية يأتي دور..مع تفضيلات المثال أعلاه, يمكن أن يكون لديك الدرجة UserConfig, من التي لديك نظام التشغيل-إصدارات معينة من.Windows أحد المتاجر التكوين البيانات المناسبة Application Data مجلد أو التسجيل.نظام التشغيل Mac OS واحد يستخدم .plist الملفات على ~/Library/Preferences/, و unix'y واحد يستخدم ~/.dotfiles.

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