الطريقة المفضلة لتحويل من كسلان / تأخير التحميل إلى حرصا التحميل في API؟

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

سؤال

ولقد تم العمل على API (والذي يلتف خدمة على شبكة الإنترنت من نوع ما) لبعض الوقت الآن، ولها تقريبا كاملة الميزة.

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

وهكذا، سؤالي هو: كيف تريد أن ترى API التي هي في الغالب كسول التحميل تعرض آلية للحصول على الإصدارات بشغف تحميلها من الطبقات

وأنا يميل نحو الزهر explicit، ولكن شيئا على غرار Eager.AsEager(SomeDelayLoadingObject) يبدو أيضا الطبيعي إذا كان أكثر مطول.

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

المحلول

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

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

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

نصائح أخرى

وAPI الخاص بك هو التفاف على خدمة ويب، لذلك API الخاص بك هو أكثر أو أقل بدور وكيل. وأود أن وضع سلوك تحميل على الوكيل نفسه، أو على نوع من سياق الوكيل، بدلا من التركيز على الطبقات.

// Basic: Every operation through the proxy uses Eager loading
using (var proxy = new ApiProxy(Loading.Eager))
{
  var result = proxy.DoSomething();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top