سؤال

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

هل هناك أي اقتراحات عند اتباع هذا النهج؟


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

يحرر:هو - هي يبدو يمكنك استخدام سمة XMLIgnore حتى لا يتم النظر إليها أثناء التسلسل ..لا تزال تقرأ على هذا بالرغم من ذلك

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

المحلول

كما هو الحال بالنسبة لأي بنية تعمل عن بعد، ستحتاج إلى تجنب تحميل رسم بياني كامل للكائنات "أسفل السلك" بطريقة لا يمكن التحكم فيها (ما لم يكن لديك عدد صغير تافه من الكائنات).

ال مقالة ويكيبيديا يحتوي على التقنيات القياسية التي تم تلخيصها إلى حد كبير (وفي C#.أيضاً!).لقد استخدمت كلاً من الأشباح وأصحاب القيمة وهم يعملون بشكل جيد.

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

تتيح لك طبقات مثل هذه ضبط الطريقة التي يتم بها تنفيذ الخدمة بشكل مستقل نسبيًا عن طبقات واجهة المستخدم التي تستدعي الخدمة وطبقة الأعمال التي يتم استدعاؤها.كما أنه يمنحك نصف فرصة لاختبار الوحدة!

نصائح أخرى

لا تقم بالتحميل البطيء عبر واجهة الخدمة.حدد DTO الصريحة واستهلكها كعقود بياناتك في WCF.

يمكنك استخدام NHibernate (أو ORMs أخرى) لجلب الكائنات التي تحتاجها لإنشاء DTOs بشكل صحيح.

يمكنك محاولة استخدام شيء يعتمد على REST (على سبيل المثال. خدمات بيانات ADO.NET) ولفها بشكل شفاف في رمز العميل الخاص بك.

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