هل هناك أي أطر ويب MVC تدعم أنواع الطلبات المتعددة؟

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

سؤال

في كل إطار عمل MVC قمت بتجربته (Rails، وMerb، وWaves، وSpring، وStruts)، ترتبط فكرة الطلب (والاستجابة) بمفهوم HTTP الخاص بالطلب.أي أنه حتى لو كان هناك AbstractRequest يمثل فئة فائقة من الطلب، فإن AbstractRequest يحتوي على أشياء مثل الرؤوس وطريقة الطلب (GET وPOST وما إلى ذلك) وجميع الأشياء الأخرى المرتبطة بـ HTTP.

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

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

إن كان هناك كان إطار عمل جيد لوسائط الطلب المتعدد، كيف سيبدو التوجيه؟في Rails، يبدو توجيه HTTP كما يلي:

map.connect 'some/path/with/:parameter_1/:paramter_2', :controller => 'foo', :action => 'bar'

كيف سيبدو طريق تويتر أو الرسائل القصيرة؟التعبيرات العادية لمطابقة الكلمات الرئيسية والمعلمات؟

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

المحلول

يبدو أنك تعمل في الغالب مع Java و/أو Ruby، لذا سامحني أن هذه الإجابة تعتمد على Perl :-).

أنا معجب جدًا بإطار عمل Catalyst MVC (http://www.catalystframework.org/).إنه يفوض التعيين الفعلي للطلبات (بالمعنى العام العام) للتعليمات البرمجية عبر المحركات.من المؤكد أن جميع فئات المحرك تعتمد حاليًا على HTTP، لكنني فكرت في فكرة محاولة كتابة فئة محرك لا تعتمد على HTTP (أو ربما كانت مرتبطة بشيء مثل Twitter، ولكن تم فصلها عن تفاعلات HTTP الذي يستخدمه تويتر).على أقل تقدير، أنا مقتنع بأنه يمكن القيام بذلك، حتى لو لم أقم بتجربته بعد.

نصائح أخرى

أنا لم أر واحدة.المشكلة هي أن الطلب مرتبط أيضًا بالمضيف، والاستجابة مرتبطة بالطلب.

لذا، إذا تلقيت طلبًا عبر البريد الإلكتروني، وطلبت وحدة التحكم عرض العرض "aboutus"، فستحتاج إلى إطار عمل MVC لمعرفة كيفية:

  • الحصول على الطلب في المقام الأول - سيحتاج إطار عمل MVC تقريبًا إلى أن يكون مضيفًا (لا يتم إخطار IIS برسائل البريد الإلكتروني الجديدة، فكيف يتم إطلاق رمز استقصاء البريد الإلكتروني الخاص بك؟)
  • السماح بمطابقة المسار المرنة - لن تعمل المطابقة حسب المسار/عنوان URL للجميع، لذا ستكون هناك حاجة إلى توجيه وحدة التحكم الخاصة بالطلب
  • استخدم Aboutus بريد إلكتروني عرض بدلاً من عرض SMS أو HTTP المسمى "aboutus"
  • أرسل الرد عبر البريد الإلكتروني إلى المستلم الصحيح

إطار عمل MVC للويب لن يفي بالغرض - ستحتاج إلى "مضيف" MVC يمكنه التعامل مع التنشيط عبر الويب، أو الرسائل القصيرة، أو البريد الإلكتروني، أو أي شيء آخر.

تم تصميم مواصفات Java Servlet لتكون Servlet محايدة للبروتوكول، ويمكن توسيعها بطريقة خاصة بالبروتوكول - HttpServlet كونها امتداد Servlet خاص بالبروتوكول.لقد تخيلت دائمًا أن Sun، أو غيرها من موفري إطار العمل الثالث، سوف يتوصلون إلى امتدادات أخرى خاصة بالبروتوكول مثل FtpServlet أو MailServlet، أو في هذه الحالة SmsServlet وTwitterServlet.

وبدلاً من ذلك، ما حدث هو أن الأشخاص إما تجاوزوا إطار عمل Servlet تمامًا، أو قاموا ببناء بروتوكولاتهم فوق HTTP.

بالطبع، إذا كنت ترغب في تنفيذ ملحق خاص بالبروتوكول للبروتوكولات المطلوبة، فسيتعين عليك تطوير المجموعة بأكملها - كائن الطلب، وكائن الاستجابة، وآلية تحديد الجلسات (على سبيل المثال استخدام MSISDN في رسالة نصية قصيرة بدلاً من ملفات تعريف الارتباط )، إطار عمل للقولبة والعرض (يعادل JSP) - ثم قم ببناء إطار عمل MVC فوقه.

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

جميع الطلبات تأتي على واجهة برمجة التطبيقاتسيتم التعامل مع .yourhost.com بواسطة المحول المعتمد على REST.

سيسمح هذا المحول بالاتصال بموقع الويب الخاص بك برمجيًا والحصول على النتيجة بتنسيق قابل للتحليل.

عمليا هذا يعني:فهو يستبدل القوالب بمحرك قوالب خاص، حيث يحدث هذا الأمر:

  • بدلاً من القالب المعين، يتم استدعاء قالب xml/json عام، والذي يقوم فقط بإخراج ملف xml يحتوي على جميع vars القالب

ثم يمكنك إنشاء Twitter Poller أو بوابة الرسائل القصيرة أو حتى الاتصال بها من Javascript.

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