هل إنشاء فصول للتعامل مع "الكيانات" للتطبيقات تعتمد على البيانات؟

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

سؤال

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

والآن بعد أن تطورت قليلا دعنا نقول أن بعت الحاجيات للعملاء وتحفظ كل المعلومات المبيعات في قاعدة بيانات. لو كنت كتابة برنامج الوصول إلى قاعدة بيانات لن أريد أن خلق فئة من نوع "العملاء" و "القطعة" للعمل مع تلك الكيانات؟

إذا كنت مخطئا فما هو النهج المناسب لتطبيقات قواعد البيانات برمجة؟

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

المحلول

نعم.

وأنت ترغب في النظر في ن الطبقة البرمجة.

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

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

وبقدر ما يتعلق الأمر الملزم، إذا كنت تستخدم البصرية أشكال ستوديو ويندوز (2005 فصاعدا) يجب أن تكون قادرا على لنا <على أ href = "http://msdn.microsoft.com/en-us/library/ system.windows.forms.bindingsource (VS.80) .ASPX "يختلط =" نوفولو noreferrer "> bindingSource التي يمكنك بعد ذلك استخدامها لربط عناصر التحكم الخاصة بك. إذا كنت تستخدم ASP.NET ثم التحكم الخاصة بك يجب ربط قائمة الكائنات دون أي مشاكل.

لASP.Net و ObjectDataSource قد يكون من المفيد النظر في . أنا لم تستخدم ذلك بنفسي، ولكن هناك الكثير من العينات على شبكة الإنترنت. محاولة هنا أو <وأ href = "HTTP: //quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/data/objectdatasource.aspx "يختلط =" نوفولو noreferrer "> هنا .

نصائح أخرى

نعم.

وأنت تريد أن ننظر عن كثب في كائن علائقي الخرائط .

وعلى غرار الكيانات التجارية في العالم الحقيقي الخاص بك عن طريق الأشياء التي تعين الجداول العلائقية.

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

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

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

في هذه الطريقة، يمكنك فصل عرض المعلومات الخاصة بك من المثابرة والمنطق الكامن وراء الموقع. ما ينطوي هو التخطيط الجيد. على وجه التحديد، لديك لمعرفة ما موقع الويب الخاص بك سوف تفعل في أي لحظة معينة، وماذا يعني ذلك من حيث ما واجهات وكائنات عملك تقدم. ثم قمت بتطبيق كائنات عملك القائم قبالة تلك المتطلبات؛ هذه الكائنات الأعمال هي المكان الذي وضعت علم بنية قاعدة البيانات والمنطق عملك محددة ( "عندما يحدث A، B تفعل ثم C"، الخ.).

وهذا يبدو مثل الكثير من العمل الإضافي في البداية، لكنها في الحقيقة يستحق كل هذا العناء.

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