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

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

PHP كود :
TTable.Edit
TTable
.Fileds("id").value=Textbox1.text
TTable
.Fileds("FName").value=Textbox2.text
TTable
.Fileds("LName").value=Textbox3.text
TTable
.Save 

وللاضافة

PHP كود :
TTable.Insert
TTable
.Fileds("id").value=Textbox1.text
TTable
.Fileds("FName").value=Textbox2.text
TTable
.Fileds("LName").value=Textbox3.text
TTable
.Save 

هي عبارة عن اداة UserControl فيها خاصيتين لاستقبال مكون الاتصال واسم الجدول او جملة الاستعلام
PHP كود :
TTable.Connection=con
TTable
.TableName=Employy

or

TTable.Connection=con
TTable
.Query=Select from Emolyye 

بالنسبة لي عملت الاداة بشكل جيد نوعا ما ولكن استخدمت فيها DataTable وكذلك BindingSource ولكن نريد ان تكون احترافية يمكن استخدام هذه الامور فيها او تنفيذ الاوامر مباشرة بواسطة SqlCommand والقراءة بواسطة DataReader وليس DataAdapter لتكون سريعة جدا .

انا في استخدام الـ Reflaction لازلت مبتدئ

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

من الامور التي اعجبتني في تجربتي هي امكانية ربط الجداول ببعضها عن طريق تحديد اسم الفهرس الرئيسي والفرعي واسم الجدول الرئيسي
مثلا لربط جدولين .

PHP كود :
TTable2.premaryKey id
TTable2
.SubIndex Myindex
TTable2
.PremaryTable TTable1 

وجعلت الجدول الثاني لا يتم تعبئته الا بالبيانات الخاصة بالسجل الذي يقف عليه المؤشر الان فقط .
بعكس ما يفعله الـ DataSet وهي جلب كل البيانات وهو ما سبب بطئ خاصة على الشبكة
الرد }}}
#2
وعليكم السلام ورحمة الله وبركاتة

الله يوفقك اخي الكريم 

عن نفسي لا املك الخبرة الكافية 
ولا الوقت الكافي لاتطور كثيراً 

لكم مني الدعاء والتشجيع 
واتنى لك التوفيق والنجاح  حيث يبدو من معرفتي لك بالمنتدى لفترة قصيرة انك مثابر  وتستحق النجاح 
صحيح انا متابع كثيرا ولكن غالباً  من الجوال او من العمل. الذي لا يوجد فيه سوى برامج العمل والتصفح فقط.
الرد }}}
#3
شكرا أخ سندباد ، كلنا حقيقة مشغولون ولكن لسنا في عجلة من امرنا كلما سنحت الفرصة ندخل ونعمل ما نستطيع
الرد }}}
#4
أحيي فيك النشاط والمثابرة أخي viv  وكل عام وانت بخير


انا أفضل عدم التورط  في محاولة اعادة صناعة العجلة
dapper من انتاج فريق موقع stackOverFlow
صدقني لن تستطيع مجاراتها
لا أقصد "تحطيم المجاديف" ولكن هذا الواقع

لو قلت سأطور مكتبة orm صغيرة خاصة بالمنتدى مع الاعتماد على لغة LINQ ممكن ولكن مجاراة dapper مضيعة للوقت
الأفضل احترافها او انشاء دورة خاصة بالمنتدى لتعلمها على الاقل يخرج الاعضاء المبتدئين من متاهات البرمجة الفوضوية التي لا تعتمد حتى على كلاسات


روابط لبعض مكتبات ORM :
https://github.com/StackExchange/Dapper
https://github.com/CollaboratingPlatypus/PetaPoco
https://github.com/FransBouma/Massive
https://github.com/bbraithwaite/HybridOrm

الرد }}}
#5
من وجهة نظري لو يتم التركيز على انشاء او صناعة او ابتكار نظام قواعد بيانات  ومن ثم يتم انشاء مكتبات خاصة بها هذا افضل (من وجهة نظري طبعا)
الرد }}}
تم الشكر بواسطة: Amir_Alzubidy , عبدالله الدوسري , asemshahen5
#6
انا حملت مشروع مكتبة Dapeer والقيت نظرة خاطفة .
لا اسرار فيها ، كل ما في الامر انها تستخدم نفس الاسلوب الذي تحدتث عنه .
يعني ال DataReader مع Command فقط مع الامكان ربطها بالـ BindingSourse لان الـ Query يعديد مصفوفة عادية List 
اذا ما الذي تفعله مكتبة Dapeer فعلا
لاشئ قامت بتغليف لمجموعة عمليات في شكل امر واحد مثلا

PHP كود :
Con.Query(of Class1)("Select * from MyTable")

الذي فعلته هو امر عادي جدا انشأت كائن اوامر Commander وربطته بقاري بيانات DataRader واعادت البيانات في شكل مصفوفة .

انا افكر في استخدام نفس الشئ ولكن بدل من الامر الافقي هذا نستخدم اسلوب البرمجة العمودية فكل المبرمجين القدامى متعودين على البرمجية العمودية .
وهي سهلة كثيرا مقارنة

المكتبة نفسها تلجاء الى البرمجة المعمودية عند تعقيد الاوامر .

PHP كود :
Using connection As IDbConnection OpenConnection()
 
       Const query As String "SELECT p.ProductID, p.Name, p.ProductNumber, " 
              
"p.MakeFlag, p.FinishedGoodsFlag, p.Color, " 
              
"p.SafetyStockLevel, p.ReorderPoint, " 
              
"p.StandardCost, p.ListPrice, p.Size, p.SizeUnitMeasureCode, " 
              
"p.WeightUnitMeasureCode, p.Weight, p.DaysToManufacture, " 
              
"p.ProductLine, p.Class, p.Style, p.ProductSubcategoryID, " 
              
"p.ProductModelID, p.SellStartDate, p.SellEndDate, " 
              
"p.DiscontinuedDate,  p.ModifiedDate, " _
              
"s.ProductSubcategoryId AS Id, s.ProductCategoryID " 
              
"AS CategoryId, s.[Name], s.ModifiedDate AS ModifiedOn " _
              
"FROM Production.Product p " _
              
"LEFT OUTER JOIN Production.ProductSubcategory " 
              
"s ON s.ProductSubcategoryId = p.ProductSubcategoryID"
 
       Return connection.Query(Of Product
 
          SubCategoryProduct)(query, Function(productsubCategory)
 
                       product.SubCategory subCategory
                        Return product
                        End 
Function)
 
   End Using 


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

إقتباس :من وجهة نظري لو يتم التركيز على انشاء او صناعة او ابتكار نظام قواعد بيانات

ممكن انشاء نظام قواعد بيانات للمنظومات الصغيرة والبرامج الصغيرة الفكرة ليست مستحيلة .
الرد }}}
#7
وعليكم السلام 

الأفكار جميلة والحماس أجمل , لكن صدقي حتى مكتبة Dapeer مضيعة للوقت, وأنا واثق جداً أنه ولا واحد منكم راح يعتمد على مكتبة Dapeer لو احتاج أن يتعامل مع البيانات , لأنه ببساطة سيكتب الكود الذي يريد مباشرتاً 
مكتبة Dapeer تم عملها خصيصاً لحل مشاكل معينة كانت تواجة موقع Stack Overflow مع شركة قوقل وكانت تكلفهم الكثير لأسباب سرعة إستجابة الخوادم في تنفيذ جمل الإستعلام والأكواد
كان موقع قوقل يلتهم موقع Stack Overflow يومياً , بسحب كل ما يدور هناك , وهذا ما جعل خوادم Stack Overflow , هههههه تولع , ( الموقع يقوم بتنفيذ إستعلامات كثيرة ومترابطة بشكل عميق يصل إلى 100 Level )
بعد عمل تجارب وإختبارات للكود وجدو أن عناصر الأدوات ( في الـ frameworks  ) التي يستخدمونها التي تخص البيانات تستهلك الكثير من الوقت لقيامها بأعمال إضافية Stack Overflow لا تريدها
وكان الحل في عمل ORM خاص بهم ( Object-relational mapping ) يحل مشكلة الوقت في تنفيذ الإجراءات الغير مرغوب فيها.
لأن الموضوع إستعلام عن ملايين السجلات في أقل من دقيقة , ( وكانوا يتحدثون عن أجزاء من الثانية )

في النهاية الفكرة كانت لحل مشكلة تخصهم هم

كان بإمكان الشركات الكبرى مثل MicroSoft أن تقوم بعمل مكتبة تسهل علينا الأمر
لكن لماذا لا توجد مكتبة تقوم بتسهيل كل هذة الأمور ؟

من المستحيل أن تجد مكتبة تخدم كل من يريد أن يتصل بمصدر بيانات
كل مبرج يريد أن يقوم بعمل معين وبطريقة معينة وفي وقت معين يدخل فيها إجراء معين وبشروط معينة في لحظة معينة وسيقوم بإجراء معين بناءاً على شرط معين عندما يحدث في لحظة معينة وعندما يحدث شيء معين يريد أن يقوم بشيء معين لتفادي شيء معين ويستخدم طريقة أخرى معينة ...........................................................................................
وفي حالة موقع Stack Overflow كانوا أصلاً لا يريدون لحدث معين في وقت معين أن يحصل ( في تنفيذ الإستعلامات ) , وكان هذا الحدث يحصل رغماً عنهم لأنه في قلب الـ  frameworks  ولا يستطيعون تحاشي هذا الحدث


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



الفكرة جميلة ولكن غير مجدية ( خصوصاً مع البيانات )
إذا كنت تريد عمل المكتبة لعمل إجراءات بسيطة , لإستخدام البرامج البسيطة ، ممكن , اعتقد ممكن يستفيد منها احد



لو كان الموضوع عن الـ Graphics سأقوم بالمشاركة 
أو لو كان عن تصميم أدوات تحكم ( Controls )  لشاركت أيضاً 




أحييك على الحماس في بناء مكتبات , أفكار جميلة.
إذا أردت أن تكمل في بناء هذة المكتبة , سنساعد بما نستطيع , وبالتوفيق إن شاء الله
الرد }}}
#8
ساحاول ان ابداء في الخطوات الاولى واعرض لكم الفكرة .
الرد }}}
تم الشكر بواسطة: عبدالله الدوسري , sendbad100 , asemshahen5
#9
اذا كانت خطواتي من مشروع سابق كما هنا بهذا المثال

استخدمت قاعدة بيانات Access  ملاحظة لن نرفقها في المشاريع القادمة وستكون هنا بأول مرفق فقط .



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

PHP كود :
TCustomer.Edit()
 
       TextBox1.Text TCustomer.Fields("ID")
 
       TCustomer.Fields("FirstName") = TextBox2.Text
        TCustomer
.Fields("LastName") = TextBox3.Text
        TCustomer
.Fields("Company") = TextBox4.Text
        TCustomer
.Save() 

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

لا اعرف سارى ما تقولون


الملفات المرفقة
.rar   WindowsApplication1.rar (الحجم : 46.22 ك ب / التحميلات : 37)
الرد }}}
تم الشكر بواسطة: عبدالله الدوسري , sendbad100
#10
   
الرد }}}
تم الشكر بواسطة: sendbad100 , viv , elgokr , elgokr , asemshahen5



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم