Layered design in software engineering

5-Execution Type in LINQ

فى اكتر من أسلوب يتم استخدامه لتنفيذ الـ LINQ QUERY.

1-Deferred  Streaming Execution

2-Deferred  Non Streaming Execution

3-Immediate Execution

Deferred  Execution

فى ال Deferred Execution لا يتم البدء فى تنفيذ ال Query إلا عند استخدامها بمعنى أن ال query يتم عمل declaration لها ولا يتم تنفيذها إلا عند استخدامها.

مثال:


و هنلاحظ ان ال Query لم يتم تنفيذها .


وهنا تم تنفيذ ال Query عند  استخدامها من foreach ,بس فى ملاحظه مهمه وأن where method لا تقوم بعمل return  لكل ال results  بل على مراحل وهنا هنقول على الـ where انها Deferred Streaming وتحقق دا عن طريق استخدام ال Yield.

فى method بتكون Deferred  بس  بترجع ال result كلها مره واحده لل caller وليس على مراحل. مثل ال order by.
مثال:



2-Immediate Execution

ال Query لما تتكون من Deferred  methods لازم نستخدمها علشان ال methods تتنفذ انما لو ال Query تحتوى على اى Immediate Execution method ال Query هتتنفذ على طول مثل ال ()ToList .

مثال:



وهنا هنلاحظ أنه لم يتم استخدام foreach لتنفيذ ال Query بس ال Query اتنفذت على طول علشان بنستخدم Immediate Execution Method.

الملخص:

إن في methods لا يتم تنفيذها إلا عند استخدام الـ Query وهى ال Deferred Methods.
ال Deferred Methods ممكن ترجع ال result على مراحل وهنا بنقول عليها Deferred Streaming Method.
ال Deferred Method ممكن ترجع ال result كلها مرة واحدة وهنا بنقول عليها Deferred Non Streaming Method

وفى methods بتخلى ال query تتنفذ فى الحال وبنقول عليها Immediate Execution Methods .


تعليقات