هل من المقبول للحفاظ على اتصال ديسيبل مفتوحة لحياة الصفحة؟

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

سؤال

والجميع يعرف أنه يجب إغلاق اتصال مباشرة بعد الانتهاء من استخدامه.

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

هل هذا موافق؟ أو يجب أن لا تزال مغلقة على الفور بعد كل استخدام مرة واحدة؟

وشكرا مقدما.

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

المحلول

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

نصائح أخرى

لا، فمن غير موافق.

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

وماذا لو الصفحة تعطل قبل الوصول إلى الحدث Page.Unload؟ سيكون لديك اتصال فتحه. بالنسبة لي هو أفضل ليغلق دائما الاتصال في أقرب وقت ممكن.

نعم، على ما يرام.

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

وكل تطبيق ASP.NET لائق يستخدم تجمع الاتصالات في الوقت الحاضر، وحمام هو في الأساس مجموعة من الاتصالات المفتوحة. في قضيتك ذلك يعني أن اتصال كنت على عقد لهو "احتلال" ولا يمكن أن تستخدم لخدمة طلبات أخرى.

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

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

وتحطم الصفحة؟ هذا ما باستخدام وأخيرا هي ل

وأن قال، من أجل أداء DB (أي القشور) * فمن الأفضل للحفاظ على اتصالات مفتوحة كما باختصار فترة ممكنة مما يسمح فقط ان كنت لا تريد فتح قريب فتح قريب وثيق مفتوحة للعمل متتابعة بسرعة ويمكن التنبؤ به

و* قيل لي هذا من قبل معلمه في مسيرتي في وقت مبكر، يجب أن أقول أنا لم تختبر هذا الواقع نفسي ولكن يبدو الحق نظريا

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

ويجب عليك بالتأكيد الحفاظ على الاتصال مفتوحة عبر عمر من الصفحة، إذا كنت تفعل استعلامات متعددة أثناء ذلك. عموما، واحدة إعادة يستخدم-اتصالات عبر العديد من الصفحات، في الواقع.

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

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

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

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