سؤال

بدأت تجريب Aptana Jaxer من جانب الخادم محرك جافا سكريبت على مشروعي القادم.و لدي بعض quesions عن ذلك

  • باستخدام الخادم الجانب JS, يمكننا تنفيذ كل تطبيق ويب بدون استخدام أي ملقم جانب اللغات (مثل C#,java الخ).أو من جانب الخادم شبيبة يجلس بين خادم الويب الأخرى الناطقة المكدس.

  • هل هو حقا أفضل نهج ??

  • ما هي advandages و disadvandages?

  • كيف هذا يعمل بشكل جيد من حيث الأداء ؟

  • هل هناك أي وقت التنفيذ (المواقع العامة) فقط باستخدام الخادم الجانب JS(أي لغات أخرى)?

  • ما هي البدائل المتاحة على Aptana jaxer (مفتوحة المصدر)??

  • كيف يمكننا تنفيذ & ميتين db المعاملات ؟ يمكننا أن نفعل ذلك في serverside JS..?

  • هل من الممكن وضع مريح و الصابون الخدمات في serverside JS..??

أعرف أن هذا هو طويل جدا (و الأسئلة الساذجة).أنا فقط آمل شخص بالفعل تأتي عبر كل هذه أثناء تنفيذ serverside JS.

تحرير:

كما في متى وكين التعليقات ، ولقد أضاف بعض الوضوح على السؤال هل هو حقا أفضل نهج??

هذا ما كنت أنوي أن أسأل..

هل هو حقا أفضل من النهج باستخدام الخادم الجانب اللغات (نفترض c#), كيف يمكن لنا أن نقارن هذا مع c# تنفيذ موقع (الأداء ميزات اللغة)??واحد الذي هو أفضل نهج باستخدام شبيبة وحده في serverside أو JS في الطبقة الوسطى بين لغة أخرى كومة خادم??

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

المحلول

أنا المطور ل myna. (www.mynajs.org)، منصة JS Server JS مفتوحة المصدر على أساس وحيد القرن وجافا. سأتناول المشكلات لأنها تتعلق بالحيوية، ولكن العديد من هذه النقاط تنطبق على Server-Side JS بشكل عام:

باستخدام Server Side JS، يمكننا تطبيق تطبيق الويب بأكمله دون استخدام أي لغات جانبية خادم (مثل C #، Java، إلخ). أو جانب الخادم JS يجلس بين خادم الويب ومكدسة Langauge الأخرى.

في MyNA، من الممكن كتابة التطبيق بأكمله في JS. تضم MyNA بالفعل API للحصول على قاعدة بيانات، ورسم الخرائط العلائقية للكائنات، CryTogrophy، OpenID، إلخ.

هل هو حقا نهج أفضل من ج # / جافا؟

مع خادم وحيد القرن، فهو تافهة لتسرب إلى جافا كلما حاجة. يمكنك بسهولة تثبيت مكتبات Java Open-Source / Commercial / Commercy-Commericed / Commericed / Commericed / Wide هذا يعني أنك تحصل على التطور السريع ل JS ولكن الحفاظ على مزايا منصة Java

ما هي مزايا وعيوب؟

الايجابيات:

  • التطور السريع: في Myna، يمكنك فقط إنشاء ملفات في Webroot مع ملحق .sjs. هذا يعني أنه يمكنك إنشاء دورة متصفح تحرير تحرير التحديث مع رمز تصحيح الأخطاء / التغيير والتبديل.

  • يسهل json.: وجود JS Support Server-Server يعني تحريك الهياكل المعقدة أمر سهل للغاية

  • الرمز المشترك: إذا كنت بحاجة إلى إجراء نفس الوظيفة على كل من الخادم والمتصفح، يمكنك استخدام نفس الرمز

  • orm الديناميكي: لغات مكتوبة ثابتة تجعل من الصعب تغيير الكائنات في وقت التشغيل. هذا يعني عادة أن orm يجب تعريفه مسبقا. في مبنى myna أورم بسيط مثل

    var manager =new Myna.DataManager("DataSource name").getManager("table name");
    

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

    manager.create($req.data);
    
  • البرمجة الوظيفية: إذا كنت قد بدأت اللعب بميزات JavaScript المتقدمة، فستكون ممتنا كم نسقى من جانب الخادم. بسبب بيئة جانب الخادم الثابت، من الآمن استخدام الميزات المتقدمة مثل صفيف إضافات, المولدات والمقتطفات, مهام التدمير, ، و E4X.

سلبيات:

  • أدوات: لغات مكتوبة ثابتة مثل C # وجافا لديها أدوات IDE والمطور ممتازة ممتازة. لغات ديناميكية مثل JS فقط لا تملك دعم الأداة بعد. أنا شخصيا أجد أن التخفيض الكبير في شفرة المرجعية وصب نوع Fussy يجعل هذا الأمر، ولكن هذا لا يزال عيبا كبيرا إذا كنت تقوم بعمل الكثير من التطوير في معالم الخطوط الجوية. إذا كنت تستخدم حاليا IDE، ففكر في استخدام جيديت لغات ديناميكية

  • النضج / التوحيد: ServerSide JS لا يزال نموذجا جديدا، وهناك العديد من اللاعبين وليسوا فائزين واضحين. ليس لدى ECMA أي معايير لخدمة Server JS. كما ذكر في إجابة براندون، commonjs. تحاول المجموعة تشكيل معيار ServerSide JS و MyNA لديه دعم Commonjs التجريبي عبر narwhal.

كيف يعمل هذا جيدا من حيث الأداء؟

في السرعة الحسابية النيئة، يمكن لبعض اللغات الديناميكية مطابقة لغات مكتوبة ثابتة مثل C # وجافا. بعد القول أنه لا يهم حقا. من المحتمل أن تكون أي جزء من تطبيقك مكثفا في جافا أو استخدام مكتبة Java موجودة. لن أقترح أن أي شخص يكتب قاعدة بيانات في JS على سبيل المثال. بالنسبة لتطبيقات الويب العالمية الحقيقية / SOA، فإن السبب الرئيسي للتباطؤ ليس سرعة حسابية خام، فمن غير فعال رمز، وخاصة الوصول إلى قاعدة البيانات. تساعد NANA في ذلك من خلال القيام بأشياء مثل:

  • التخزين المؤقت داخليا compiled JS النصوص
  • داخليا باستخدام البيانات المعدة المخزنة مؤقتا لمعاملات قاعدة البيانات
  • الاستعلام والإخراج شظية التخزين المؤقت
  • تجمع اتصال قاعدة البيانات
  • التلقائي إيتاج تجزئة الدعم
  • أدوات التنميط
  • كسول تحميل البيانات الوصفية

كيف يمكننا تنفيذ وصيانة معاملات DB؟ هل يمكننا أن نفعل ذلك في Serverside JS ..؟

إذا كنت تعني المعاملة كما في "مجموعة من عبارات SQL التي يمكن عكسها أو ارتكبتها"، فإن MyNA لا يدعم المعاملات بعد. أنا منفتح على تنفيذ هذا إذا كان هناك فائدة كافية.

إذا كنت تقصد "أي نوع من دعم قاعدة البيانات هل لدى Server-Side JS؟" ثم الإجابة تعتمد منصة. توفر منصة MyNA ميزات قاعدة البيانات التالية:

  • تطبيق إدارة على شبكة الإنترنت حيث يمكنك تحديد "DataSources"، أي معلومات اتصال قاعدة البيانات IE. يمكنك بعد ذلك الاستعلام عن بيانات Datasources بالاسم. يتضمن MyNA برامج تشغيل JDBC ل H2 و MySQL و Microsoft SQL Server و PostgresQL، ولكن يمكن استخدام أي بيانات DataSource JDBC أو ODBC
  • myna.database. و myna.table. توفير إمكانية الوصول إلى MetData محايد قاعدة البيانات بالإضافة إلى إنشاء الجدول وتعديله.
  • myna استفسار يدعم الكائن MaxRows، الترحيل، معلمات SQL، معاملات الصف مخصص، استعلام الاستعلام، التخزين المؤقت والمزيد
  • myna مدير البيانات يدعم الكائن إنشاء كائن Runtime Orm

هل من الممكن تطوير خدمات مريحة والصابون في Serverside JS ..؟

دعم الراحة والصابون هي ميزات منصة محددة. myna خدمة ويب كائن يدعم البروتوكولات التالية:

  • صابون
  • XML-RPC.
  • json-rpc.
  • تحويلة المباشر
  • JSON-MYNA (بروتوكول بسيط يستخدم مشاركات الشكل العادي وإرجاع JSON. سهل الاستخدام من المتصفح)

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

تصحيح

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

في myna،

 Myna.log(type,label,detail)

سوف تفرخ موضوع منخفض الأولوية لكتابة رسالة سجل HTML إلى قاعدة بيانات تسجيل الدخول MyNA. ثم يمكن بعد ذلك البحث في هذه السجلات من خلال مسؤول myna. سجلات سجلت أيضا الطوابع الزمنية وانتضطرت مللي ثانية لأغراض التنميط. يمكن أيضا استخدام myna.dump (OBJ) لتقديم تمثيل جدول HTML لأي كائن. يسجل Syna أيضا جميع الاستثناءات غير المعالجة بها مع آثار المكدس وسياق التعليمات البرمجية المصدر، وطلب التفاصيل. بين تفريغ ()، سجل ()، ومعالج الخطأ الافتراضي ليس لدي الكثير من صعوبة تصحيح أخطاء رمز myna

نصائح أخرى

باستخدام Server Side JS، يمكننا تطبيق تطبيق الويب بأكمله دون استخدام أي لغات جانبية خادم (مثل C #، Java، إلخ).

لا ينبغي أن يكون من الضروري كتابة التعليمات البرمجية بأي لغة أخرى، على الرغم من أن العديد من أطر JavaScript جانب الخادم تستخدم محرك Rhino، والذي يسمح لك بالاتصال بأي رمز Java.

هل هو حقا نهج أفضل؟

لا أعتقد أن JavaScript (كشركة) هو خيار أفضل أو أسوأ من اللغات من جانب الخادم التقليدي. لديها مزايا (جنبا إلى جنب مع لغات ديناميكية أخرى مثل Ruby and Python) مثل المرونة، النماذج الأولية السريعة (بدون التورية المقصودة)، والمرونة، إلخ. من ناحية أخرى، ليس لديها دعم المكتبة أن Java و C # لديك أو كتابة ثابتة (لن أخرج من النقاش الذي هو أفضل هنا؛ أحب كلاهما لأسباب مختلفة).

إذا كنت ترغب في أفضل كليهما، يمكنك استخدام JavaScript ككلغة نصية، مضمنة في التطبيق الخاص بك. وحيد القرن ل Java، وجهاز jscript.net يجعل من السهل التعامل مع الأشياء "الأصلية" في جافا سكريبت. يمكنك، على سبيل المثال، اكتب فئات المجال الخاصة بك في Java أو C #، وينصيها مع JavaScript حيث تريد المزيد من المرونة. إذا كنت مرتاحا بما فيه الكفاية مع جافا سكريبت، فقد تكون الكتابة بلغة واحدة أبسط.

لم أكتب أبدا تطبيق "حقيقي" جانب الخادم باستخدام JavaScript، لذلك لا أستطيع حقا إصدار حكم حول ما إذا كان أفضل أو أسوأ من .NET (كما أنني أيضا استخدمت jscript.net). لقد لعبت حول عدد قليل من الأطر للمتعة على الرغم من إعادة كتابة موقعي الشخصي باستخدام Helma NG. حتى الآن كانت تجربة جيدة (أفضل بكثير من PHP، والتي لم أحبها حقا).

ما هي الإراضاد والدعاية؟

Advantanges:

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

سلبيات:

  • العديد من الأطر هي تجريبية / ليست ناضجة للغاية.
  • يجب عليك البرنامج في جافا سكريبت (على افتراض أنك لا تحب اللغة).

كيف يعمل هذا جيدا من حيث الأداء؟

يجب أن يكون الأداء قابلا للمقارنة تقريبا لغات البرمجة النصية الأخرى.

هل هناك أي تنفيذ في الوقت الفعلي (المواقع العامة) فقط باستخدام جانب الخادم JS (لا توجد لغات أخرى)؟

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

ما هي البدائل المتاحة عبر Aptana Jaxer (مصدر مفتوح)؟

ويكيبيديا لديه قائمة كبيرة من الخيارات, ، لكن ليس لديها الكثير من المعلومات المفيدة. هناك الكثير من الخيارات مع مجموعة واسعة في الاستحقاق والحجم.

إليك عدد قليل من المعلومات المعلنة (إلى درجات متفاوتة)

  • هلما - الكركدن (Java) الإطار القائم على سجل نشط.
  • هلما نانوغرام - هيلما الجيل القادم (إعادة كتابة التجريبية، تحت التطوير النشط).
  • فوبوس - لديه دعم جيد في netbeans..
  • V8CGI. - صغيرة وبسيطة، يستخدم محرك V8 من Google، وربما لا يكون على استعداد الإنتاج حتى الآن.
  • جافر - يعمل على Spidermonkey مع تطبيق DOM، حتى تتمكن من التعامل مع الصفحة بالأطر مثل jquery أو النموذج الأولي. لديه دعم جيد IDE في استوديو Aptana.

كيف يمكننا تنفيذ وصيانة معاملات DB؟ هل يمكننا أن نفعل ذلك في Serverside JS ..؟

تتيح لك الأطر القائمة على وحيد القرن استخدام فئات Java، لذلك لديك دعم JDBC الكامل. لم أستخدم مكتبات قاعدة بيانات Jaxer، لذلك لا أعرف أي شيء عن قدراته.

هل من الممكن تطوير خدمات مريحة والصابون في Serverside JS ..؟

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

كما مقدمة, يمكنني استخدام SSJS في بلدي يوم عمل.نحن تشغيل معقول كبيرة (من حيث التعقيد وكذلك صفحة) الموقع على وspidermonkey.سأضيف إلى متى ممتاز الإجابة حيث لدي خبرة.

هل هو حقا أفضل من النهج باستخدام الخادم الجانب اللغات (نفترض c#)

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

أهم شيء أن أجد SSJS العالم ينقصنا الآن هو النضج.أنا لم تكن مألوفة مع C#, ولكن جافا سكريبت لا ناضجة المكتبة القياسية, و لا ناضجة يعني من حزمة توزيع.بالنسبة لي هذا هو قطعة كبيرة من اللغز.

وقال إبقاء العين على CommonJS المجموعة.انهم يعملون نحو تحديد تلك الأشياء بالضبط.كما Jaxer وثائق Api قوائم المدمج الإضافية التي تم تضمينها في هذا الإطار.

كيف هذا يعمل بشكل جيد من حيث الأداء ؟

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

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

كيف يمكننا تنفيذ وصيانة db المعاملات ؟ يمكننا أن نفعل ذلك في serverside JS..?

Jaxer يبدو MySQL و SQLite database Api.متى ذكر ، إذا كنت تستخدم وحيد القرن ، يمكنك استخدام JDBC api.

تحرير:وأضاف الروابط

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