تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
لماذا يتم انشاء العديد من كائنات الاتصال
#1
السلام عليكم ورحمة الله

لماذا يلجاء المبرمجين ان استخدام كائن اتصال جديد في كل مرة يريدون تنفيذ مهمة ما تم يغلقونه

كود :
Con=new connction
con .opn
' some code
con.close


ولماذا لا يقوم المبرمج بانشاء كائن اتصال عام في موديل والاتصال به في كل مرة يريد القيام بعملية ما

كود :
freind con as new conection

كود :
cmd.conection = con
الرد }}}
تم الشكر بواسطة: سعود
#2
وعليكم السلام ورحمة الله وبركاته

عن تجربة بالتعامل مع قواعد بيانات آكسس
عندما ينقطع التيار والقاعدة مفتوحة بكائن اتصال : احتمال دمار قاعدة البيانات أكثر من 60% 
استرجعت الكثير ممن تم دمارها بسبب التيار أو سبب ما عرضي ...
وليس كل قاعدة بيانات يتم دمارها يمكن استرجاعها .. أو استرجاع جزء من بياناتها..
ممرت بحالات لم أستطع استرجاع أي شيء من البيانات..
بينما لو انقطع التيار والاتصال مغلق لن يحدث أي شيء للبيانات..

هذا فيما يخص أمان قاعدة البيانات من التلف والدمار..

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

شيء آخر : عندما تعمل مع قواعد بيانات لبرامج محاسبية ..
سيكون عليك انشاء كائن (جديد) مع كل عملية، فالعملية الواحدة قد تطلب بيانات للمستخدم وبيانات للتنفيذ على جدول ثم بيانات من جدول آخر لتنفذ في جدول مختلف
فقد تنفذ عدة عمليات في عدة جداول بنفس الوقت، فلو كنت تعتمد على فتح اتصال وحيد وكائنات تعامل محددة مع الجداول ستقع بخطأ الخلط بين البيانات ولن تعرف أين الخطأ إلا بعد حين من الدهر .. تكون وقتها مللت من أم البرمجة وأم المحاسبة..
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
#3
شكرا على المرور والمعلومات

بالنسبة لقاعدة بيانات اكسس هي اسواء ما يوجد ولم استخدمها من قبل وباقي قواعد البيانات لا مشكلة لديها في انقطاع التيار والاتصال مفتوح

اما بالنسبة لتحديث البيانات فكائن الاتصال لا علاقة له بتحديث البيانات وانما كائنات القراءة والكتابة مثل محول البيانات
ولامشكلة سوف تنشئ كائن جديد من قارئ او محول البيانات في كل عملية
الرد }}}
تم الشكر بواسطة: سعود , عبدالله الدوسري , foo
#4
أسلوب ومتطلبات البرنامج تحدد اسلوبك في الإتصال بقاعدة البيانات


( لا يضر الشاة سلخها بعد ذبحها )
ادري المثل ماله علاقة ، بس هذا من عندي هدية



بعض التطبيقات ، لا يضرها لو تم تنفيذ مليون عملية وفي كل مرة يتم إنشاء كائن إتصال جديد، ويتم تدميره في نفسة المرة.
عادي جداً...


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



التقنيات الحالية في الــ NET. و الــ Sql Server ،،،،


مسمى ("مجمع الإتصالات") - ("connection pooling")

المسؤال في الـ NET. عن الإتصالات ( ADO.NET ) مهما قمت بإنشاء عدد لا نهائي من الإتصالات، بواسطة كان إتصال، في حلقة تكرار مثلاً ، تنشئ كائن إتصال ، تتصل، تنتهي، تغلق، تدمر الكائن، لو عملتها مليون مرة ، الــ( ADO.NET ) يعيد استخدام الاتصالات سيعطيك نفس الـ Connection الموجود في ("مجمع الإتصالات")، ولا يسبب أي جهد على موارد النظام


في الحالات العادية ، ينصح بإنشاء كائن إتصال جديد وتدميرة بعد الإنتهاء مباشرتاً، بذلك أنت تخبر  الــ( ADO.NET ) أنك لست في حاجة الإتصال، ليتم إرجاعهة إلى  ("مجمع الإتصالات").

في حالات تنفيذ عمليات متعددة وكبيرة من الأفضل إستخدام كائن واحد والإتصال مفتوح لجميع العمليات، وتدميره بعد الإنتهاء من كافة العمليات.
الرد }}}
تم الشكر بواسطة: ابو محمد محمد محمد , سعود , foo
#5
شكرا اخ عبد الدوسري على المعلومات
يبقى سؤال واحد بالخصوص

عند استخدام الـ Transaction ومطلوب تحسس اي عملية اعتقد بحال انشاء اتصال جديد لا يمكن للاتصال الثاني تحسس اي عملية قام بها الاتصال الاول
الا بحال كانت العملية الثانية تستخدم نفس الاتصال للعملية الاولى
الرد }}}
تم الشكر بواسطة: سعود , foo
#6
(21-04-23, 02:02 PM)ابو محمد محمد محمد كتب : شكرا اخ عبد الدوسري على المعلومات
يبقى سؤال واحد بالخصوص

عند استخدام الـ Transaction ومطلوب تحسس اي عملية اعتقد بحال انشاء اتصال جديد لا يمكن للاتصال الثاني تحسس اي عملية قام بها الاتصال الاول
الا بحال كانت العملية الثانية تستخدم نفس الاتصال للعملية الاولى

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

فإنه فعلاً العمليات التي تتم في الإتصال الأول منفصلة كلياً عن التي في الإتصال الثاني.. وعلى قولتك لا يمكن التحسس ( إن صح التعبير )
الرد }}}
تم الشكر بواسطة: ابو محمد محمد محمد , سعود , foo
#7
بالضبط هو ما قصدته وجزاك الله كل خير
الرد }}}
تم الشكر بواسطة: سعود , عبدالله الدوسري
#8
استاذ عبدالله الدوسري هل لـ SAVE TRANSACTION مفيدة في حالة اتصالين منفصلين؟
الرد }}}
#9
إقتباس :استاذ عبدالله الدوسري هل لـ SAVE TRANSACTION مفيدة في حالة اتصالين منفصلين؟

هذا ما قصدته من سؤالي سابقا واعتقد ان الاجابة هي لا 
لان Transaction على اتصال مختلف
ان كان فهمي صحيح

لنفترض ان كل اتصال يمثل طريق ولهذا لا تستطيع ان تضع نقاط توقف على الطريق الاول لعلامات من الطريق الثاني
يجب ان تكون كلتا السيارتين على نفس الطريق لوضع نقاط توقف لها وعلى نفس الطريق
الرد }}}
تم الشكر بواسطة: سعود , عبدالله الدوسري
#10
ما رايكم بالطريقة التالية هل ستسبب مشكلة؟
PHP كود :
using con as new oledbconnection(str)
using cm as new oledbcommand(sql,con)
if 
con.state connectionstate.closed then con.open

هنا الاجراءات

if con.state connectionstate.open then con.close
end using
end using 


خصوصا الـFunctions
كل تحقق او اجراء فيه هكذا هل يسبب مشكلة ام انه عادي؟
شكر الله لكم جميعا و كل عام و انتم بخير.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة: foo


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  لماذا البرنامج يتوقف بدل عرض رسالة الخطأ justforit 0 100 07-12-25, 10:22 AM
آخر رد: justforit
  [VB.NET] كود الاتصال بالنت mmaalmesry 4 870 04-09-25, 02:28 PM
آخر رد: أبو خالد الشكري
  [سؤال] سؤال ترددت قبل نشرة:طابعة الباركود لماذا تطبع أكثر من ليبل فارغ قبل السليم dr.programming 1 506 20-04-25, 09:26 PM
آخر رد: Kamil
  كود الاتصال بأكسس 2007 لايعمل ZEEN4ZEEN 2 318 04-04-25, 02:03 AM
آخر رد: أبو خالد الشكري
  [VB.NET] شرح انشاء تقارير فجوال 2008 Report.Rdlc mefof 0 338 27-01-25, 12:11 PM
آخر رد: mefof
  هذا الكود لا يعمل بشكل صحيح لماذا ؟ PeterGhattas082460 3 445 21-12-24, 02:55 PM
آخر رد: aljzazy
  مساعدة في عمل جملة الاتصال في ملف خارج البرنامج Emam emam 2 379 25-11-24, 09:24 PM
آخر رد: Emam emam
  كيفية معرفة تاريخ انشاء ملف وحدفه المتألق9 2 502 07-11-24, 08:54 AM
آخر رد: F.H.M
  لماذا يتغير حجم الفورم تلقائي عند فتح الاتصال بقاعدة البيانات؟ ABDULLAH HASSAN 4 517 24-09-24, 03:57 AM
آخر رد: Taha Okla
Rainbow [كود] الاتصال وقراءه البيانات من قاعده بيانات اكسس حجمه كبير وتحتوى على الالف البيانات محمد مسافر 16 837 15-09-24, 07:57 AM
آخر رد: محمد مسافر

التنقل السريع :


يقوم بقرائة الموضوع: