سؤال

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

سؤالي بوضوح، عند استخدام الرسم البياني للكائنات المستمرة (أحمق، LINQ إلى SQL، إلخ) خلف خدمة ويب (WCF في هذا السيناريو)، هل تفضل إرسال تلك الكيانات على السلك؟ أو هل تقوم بإنشاء مجموعة من أخف وزنا DTO (مراجع حكاية) عبرها؟

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

المحلول

DTOS. استخدم Automapper لرسم خرائط كائن للكائن

نصائح أخرى

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

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

كما ذكر آخرون، Automapper. هي أداة رائعة للكيان في رسم الخرائط DTO.

لقد قمت دائما بإنشاء DTOS دائما لنقلها عبر الأسلاك واستخدام كيانات ريختر على الخادم والعميل الخاص بي. على العميل، سيكون لديهم بعض منطق عرض تقديمي مشترك أثناء وجوده على الخادم منطق أعمال. يمكن أن يكون رسم الخرائط بين DTOs والكيانات غبية ولكنه يحتاج إلى حدوث ذلك. أدوات مثل Automapper تساعدك.

إذا كنت تسأل هل أرسلت كيانات تسلسل من خدمة ويب إلى العالم الخارجي؟ ثم الجواب ليس بالتأكيد، سوف تحصل على الحد الأدنى من قابلية التشغيل البيني إذا قمت بذلك. تساعد DTOS في حل هذه المشكلة من خلال تحديد مجموعة من "الكائنات" التي يمكن إنشاء مثيل لها بأي لغة سواء كنت تستخدم C # أو Java أو JavaScript أو أي شيء آخر.

كان لدي دائما مشاكل في إرسال كائنات أحمق عبر السلك. خاصة إذا كنت تستخدم نموذج activerecord. و / أو إذا كان جسمك لديه علاقات إلى الجلسة (Yuck). نتيجة أخرى سيئة هي أن Nhipernate قد يحاول تحميل الكائن عند إدخال الطريقة (قبل أن تتمكن من الوصول إليها) والتي يمكن أن تسبب أيضا مشاكل.

إذن ... الحصول على الرسالة هنا؟ المشاكل، مشاكل المشاكل ... DTO على طول الطريق

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