سؤال

كيف يتواصل Flash مع الخدمات / البرامج النصية الموجودة على الخوادم عبر صندوق النقد العربي?

فيما يتعلق مكتبات صندوق النقد العربي بالنسبة لـ Python / Perl / PHP والتي تعتبر أسهل في التطوير من .NET / Java:

  • هل يقومون بتنفيذ ملفات البرامج النصية عندما يرسل Flash مكالمة إجراء عن بعد؟
  • أم أنهم يتواصلون عبر مآخذ التوصيل لفئات البرامج النصية التي تعمل كخدمات؟

فيما يتعلق بوظيفة AMF النموذجية:

  • كيف يتم نقل البيانات؟هل يتم إجراء تسلسل تلقائي من خلال وسيطات الطريقة؟
  • كيف يمكن للخوادم "يدفع"للعملاء؟هل يجب توصيل أفلام الفلاش بمقبس؟

شكرا على وقتك.

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

المحلول

مكتبة AMF الوحيدة التي أعرفها هي بيامف, ، والذي كان من الرائع العمل معه حتى الآن.فيما يلي الإجابات على أسئلتك الخاصة بـ PyAMF:

  • أتخيل أنه يمكنك تشغيله كبرنامج نصي (هل تقصد مثل CGI؟)، ولكن أسهل IMO هو إعداد خادم تطبيقات خصيصًا لطلبات AMF

  • أسهل طريقة هي تحديد الوظائف في لغة بايثون الخالصة، والتي يلتفها PyAMF لتسلسل بيانات AMF الواردة/الصادرة

  • يمكنك التواصل عبر المقابس إذا كان هذا هو ما تحتاج إلى القيام به، ولكن مرة أخرى، من الأسهل استخدام وظائف Python الخالصة؛أحد استخدامات المقابس هو الحفاظ على اتصال مفتوح و"دفع" البيانات إلى العملاء، انظر هذا مثال

فيما يلي مثال على ثلاث خدمات AMF بسيطة يتم تقديمها localhost:8080:

from wsgiref import simple_server
from pyamf.remoting.gateway.wsgi import WSGIGateway

## amf services ##################################################

def echo(data):
    return data

def reverse(data):
    return data[::-1]

def rot13(data):
    return data.encode('rot13')

services = {
    'myservice.echo': echo,
    'myservice.reverse': reverse,
    'myservice.rot13': rot13,
}

## server ########################################################

def main():
    app = WSGIGateway(services)

    simple_server.make_server('localhost', 8080, app).serve_forever()

if __name__ == '__main__':
    main()

بالتأكيد أوصي بـ PyAMF.تفحص ال أمثلة لمعرفة ما هو قادر عليه وكيف يبدو الكود.

نصائح أخرى

كيف يتواصل Flash مع الخدمات/النصوص البرمجية الموجودة على الخوادم عبر AMF؟

يتم نقل البيانات عبر اتصال TCP/IP.في بعض الأحيان يتم استخدام اتصال HTTP موجود، وفي حالات أخرى يتم فتح اتصال TCP/IP جديد لبيانات AMF.عند فتح اتصالات HTTP أو اتصالات TCP إضافية، فمن المحتمل أن يتم استخدام واجهة المقابس.ينتقل AMF بالتأكيد عبر اتصال TCP من نوع ما، وتكون واجهة المقابس هي الطريقة الوحيدة لفتح مثل هذا الاتصال.

تتكون "البيانات" التي يتم نقلها من أنواع بيانات ECMA-script (Javascript(tm)) مثل "عدد صحيح" و"سلسلة" و"كائن" وما إلى ذلك.

للحصول على مواصفات فنية لكيفية ترميز الكائنات إلى ملفات ثنائية، قامت Adobe بنشر مواصفات: مواصفات AMF 3.0 على Adobe.com

بشكل عام، الطريقة التي يعمل بها نظام العميل/الخادم الذي يستخدم AMF هي كالتالي:

  1. يعرض العميل بعض واجهة المستخدم ويفتح اتصال TCP بالخادم.
  2. يرسل الخادم بعض البيانات إلى العميل، الذي يقوم بتحديث واجهة المستخدم الخاصة به.
  3. إذا أصدر المستخدم أمرًا، يرسل العميل بعض البيانات إلى الخادم عبر اتصال TCP.
  4. تابع الخطوات من 2 إلى 3 حتى يخرج المستخدم.

على سبيل المثال، إذا نقر المستخدم على زر "إرسال بريد" في واجهة المستخدم، فقد يقوم كود العميل بما يلي:

public class UICommandMessage extends my.CmdMsg
{
   public function UICommandMessage(action:String, arg: String)
   {
      this.cmd = action;
      this.data = String;
   }
}

ثم في وقت لاحق:

UICommandMessage msg = new UICommandMessage("Button_Press", "Send_Mail");
server_connection.sendMessage(msg);

في رمز الخادم، يقوم الخادم بمراقبة الاتصال أيضًا لكائن AMF الوارد.يتلقى الرسالة ويمرر التحكم إلى وظيفة الاستجابة المناسبة.وهذا ما يسمى "إرسال رسالة".

ومع المزيد من المعلومات حول ما تحاول تحقيقه، يمكنني أن أقدم لك المزيد من التفاصيل المفيدة.

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