خدمات بيانات Flex وADO.NET...هل قام أحد بذلك؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

هل استخدم أي شخص ADO.NET Data Services كمصدر بيانات لتطبيقات Adobe Flex؟إذا كان الأمر كذلك، هل هناك أي قصص نجاح أو مآسي يجب تجنبها؟إذا كنت قد استخدمته، كيف تعاملت مع الأمن؟

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

المحلول

أستخدم WebORB لـ .NET لإجراء اتصال Flex عن بُعد ثم استخدم DLINQ على الخادم.أحد الأشياء الصعبة في استخدام LINQ مع WebORB هو أن WebORB يستخدم الانعكاس لاسترداد جميع علاقات الكائن (الكائنات) التي ترجعها إلى Flex تلقائيًا.يؤدي هذا إلى فرض عقوبات زمنية شديدة حيث يستخدم LINQ التحميل البطيء لتحميل العلاقات.ولمنع حدوث ذلك، أفعل شيئًا مثل ما يلي:

تجاوز مُنشئ DataContext وأضف الكود التالي:

this.DeferredLoadingEnabled = false;
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Order>(q => q.Payments);
dlo.LoadWith<Order>(q => q.Customer);
this.LoadOptions = dlo;

هذا يخبر DataContext بتعطيل التحميل المؤجل للعلاقات ويوجهه على وجه التحديد لتحميل العلاقات التي تريدها فقط، دون التحميل البطيء.بهذه الطريقة، لا يتسبب WebORB في حدوث أي تحميل بطيء من خلال Reflection ويتم الاحتفاظ بعدد العلاقات التي يتم نقلها إلى Flex عند الحد الأدنى.

نأمل أن يساعدك هذا بطريقة ما.إنها بالتأكيد واحدة من تلك المشاكل الصغيرة عند العمل مع Flex/WebORB وLINQ.

نصائح أخرى

نعم، نحن نستخدم Flex مع خدمات الويب .Net على نطاق واسع.

لا يستطيع Flex التعامل مع .Net DataSets، أو في الواقع الكثير عن طريق أنواع XML المعقدة.لقد وجدنا أنه من الأفضل الالتزام بمخرجات XML البسيطة نسبيًا.

ومع ذلك، إذا قمت بذلك، فيمكنه التعامل مع مخرجات خدمة الويب .Net بشكل جيد:

<mx:WebService id="myDataService" showBusyCursor="true">
    <mx:operation name="WebMethodName" 
                  resultFormat="object" 
                  result="functionFiredOnComplete();">
</mx:operation>
</mx:WebService>

public function load():void
{
    myDataService.loadWSDL( "web method's wsdl" );
    myDataService.WebMethodName.send( params );
}

public function functionFiredOnComplete():void
{           
    // get data
    var myData:Object = myDataService.WebMethodName.lastResult;
    ...

لقد سأل عن خدمات بيانات ADO.NET وليس خدمة الويب

يمكن أن تحصل Flex فقط و Post Flex لا يفهم رسائل استجابة HTTP

لذا لكي تتمكن Flex من التحدث إلى خدمات بيانات ADO.NET، يتعين عليك إما القيام بذلك؛
1.استخدم خادمًا وكيلاً، ولكن عليك العثور على خادم وكيل أو إنشائه بنفسك
2.قم بتعديل الطلبات الواردة واستخدم $method=MERGE وما إلى ذلك (مثل الوكيل)
3.استخدم عميل as3 httpService آخر، هناك بعض المبادرات مفتوحة المصدر

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

بالطبع يمكن القيام بذلك، ولكن عليك أن تفعل ذلك بنفسك.أعلم أن Flash Builder 4 سيأتي مزودًا باستيراد REST، وقد يؤدي ذلك إلى تسريع الأمور، ولكن ليست لديك خبرة في ذلك

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