كيفية الاستخدام الفعال DTO الكائنات (نقل البيانات الكائنات)?

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

سؤال

ما هي أفضل طريقة لتنفيذ DTOs?

ما أفهمه هو أن تكون طريقة واحدة لنقل البيانات بين الكائنات.على سبيل المثال ، ASP.Net التطبيق قد تستخدم DTO لإرسال البيانات من التعليمات البرمجية-خلف إلى منطق الأعمال طبقة عنصر.

ماذا عن خيارات أخرى ، مثل إرسال البيانات طريقة المعلمات ؟ (هذا من شأنه أن يكون أسهل في asces وهر هناك أقل من البيانات لإرسال?)

ماذا عن فئة ثابتة فقط يحمل البيانات التي يمكن الرجوع إليها من قبل كائنات أخرى (نوع من العالمية asembly تخزين البيانات فئة)?(هل هذا كسر التغليف كثيرا؟)

ماذا عن واحد عام DTO المستخدمة في كل نقل ؟ قد يكون قليلا أكثر صعوبة في الاستخدام, ولكن يقلل من عدد من الطبقات في حاجة إلى العمل مع (يقلل من وجوه فوضى).

شكرا لتقاسم أفكارك.

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

المحلول 6

وشكرا لجميع الأفكار المفيدة ...

وملخص + بلدي يأخذ على هذا:

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

- إذا كان هناك الكثير من البيانات و / أو العديد من الكائنات لنقلها إلى، قد يكون كائن تم إنشاؤه خصيصا أسهل (كائن DTO)

- من شأنه أن كائن البيانات العالمية التي يمكن الرجوع إليها (بدلا من تمريرها) من خلال كائنات مختلفة ويبدو أن استياءه من ... ومع ذلك، وأتساءل عما إذا لم يكن هناك في بعض الأحيان مكانا له ضمن معين النظام الفرعي ؟ ذلك هو أحد السبل للحد من كمية مرور البيانات. فإنه دفع حدود "التغليف الجيد"، ولكن في حالات محددة داخل طبقات محددة، وربما يمكن أن تضيف إلى البساطة assemply particluar من الطبقات. وهكذا يمكن لأحد أن تفقد التغليف على مستوى الدرجة، ولكن يمكن أن لا تزال لديها التغليف مستوى التجميع.

نصائح أخرى

لقد استعملت DTO إلى:

  • تمرير البيانات بين المستخدم و خدمة الطبقة من معيار 3 طبقات التطبيق.
  • تمرير البيانات كما معلمات الأسلوب لتغليف عدد كبير (5+) من المعلمات.

'واحد DTO للحكم عليهم جميعا' النهج يمكن أن تحصل الفوضى ، أفضل رهان هو أن يذهب مع محددة DTO لكل ميزة/ميزة المجموعة ، مع الحرص على اسم لهم حتى انهم من السهل أن المباراة بين الميزات التي تستخدمها.

أنا لم أر قط ساكنة DTO في الطريق كنت أذكر يتردد في خلق DTO ووحدانية مثل تصفون.

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

وأتمنى أنها يمكن أن تكون بهذه البساطة. على الرغم نشأت DTO بسبب الشبكة طبقات توزيع نظام يمكن أن يكون هناك حمولة كاملة من القضايا إذا تم إرجاعها كائنات المجال لعرض طبقات. وفيما يلي بعض منها:

و1.By كشف الأجسام المجال لعرض طبقة، المشاهدات تصبح على علم بنية كائنات المجال، والتي تتيح عرض يجعل بعض الافتراضات حول كيفية الأجسام ذات الصلة المتاحة. على سبيل المثال إذا كان retunrned كائن مجال "الشخص" لعرض التي هي "ملزمة" وعلى بعض الرأي الآخر، "عنوان" من شخص هو أن تكون ملزمة، لن يكون هناك اتجاه لطبقة التطبيقات لاستخدام الدلالي مثل person.getAddresse () الذي woukd تفشل في ذلك منذ كائن المجال نقطة عنوان قد لا يتم تحميلها عند نقطة. في الجوهر، مع تصبح كائنات المجال المتاحة لعرض طبقات، يمكن أن تجعل دائما وجهات النظر افتراضات حول كيفية البيانات المتاحة.

2.) عندما لا بد كائنات المجال لآراء (أكثر من ذلك في عملاء سميكة)، سيكون هناك ألويس اتجاه لعرض منطق مركزية للتسلل داخل هذه الكائنات مما يجعلها فاسدة منطقيا.

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

ومن الواضح أنه لا توجد الإجابات الصحيحة لهذا خصيصا في نظام عميل سميكة.

وأنا اقترضت هذه الإجابة القصيرة ويست كاملة ولكن الحقيقية لDTO كليشيهات من:
http://www.theserverside.com/discussions/thread.tss؟ thread_id = 32389 # 160505

وأعتقد أنه من الشائع جدا لاستخدام مجموعة البيانات / DataTable وباسم "واحد DTO إلى حكم عليهم جميعا". فإنه من السهل لتحميلها من قاعدة البيانات، وتستمر القيم مرة أخرى، وأنها يمكن أن تسلسل بسهولة.

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

تستخدم

وDTOs لإرسال البيانات عبر السلك، وليس بين الكائنات. راجع في هذا المنصب: POCO مقابل DTO

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