• 0
علوي علي

التطبيقات المتعددة الطبقات datasnap الطريقة 3

سؤال

السلام عليكم ورحمة الله وبركاته

مقدمة الى تقنية datasnap

يرجع ظهور هذه التقنية الى نسخة دلفي 3 حيث كانت تعرف في هذه النسخة باسم MIDAS لتتطور في نسخة دلفي 4 الى MIDAS 2 ثم الى3 MIDAS

ووفرت هذه التقنية ادوات قوية للاتصال عن بعد والتعامل مع تطبيقات (خادم و زبون)بواسطة com اي استخدام برتوكول Tcp/ip,Http وcom لتخاطب بين الطبقتين

ليغيير اسمها الى datasnap في نسخة دلفي السادسة وبقت بنفس المكونات الى غاية النسخة دلفي 2007

وبصدور دلفي 2009 تغيرت هيكلة Datasnap لاعتماده على التام على TCP/IP فقط مع امكانية التعامل مع دوت نت

مع ظهور دلفي 2010 ظهر تطور كبير على datasnap ليدعم اغراض جديدة وفريم ورك جديد

1- التخاطب مع service سواء ويب REST et JSON اوdcom

2-التخاطب مع تطبيقات وندوز win32

3-التخاطب مع منصة اخرى .net

كما يمكن استعماله في الويب لانه يدعم ISAPI و CGI

وحتى لانطيل في الشرح والمقدامات نستهل درسنا بمثال بسيط في في المشاركة القادمة وهو Hello World

وفقنا الله واياكم لما يحبه ويرضاه

DataSnapArch.png

تم تعديل بواسطه زكيري عبد العالي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

15 إجابة على هذا السؤال .

  • 0

بسم الله الرحمن الرحيم

عذرا اخواني الكرام على التاخير بسبب بعض الامور العالقة فمعذرة

كما اسلفنا الذكر في الشاركة السابقة سنتعرض اليوم الى تطبيق بسيط يمكننا من التعرف على تقنية datasnap في دلفي 2010

بسم الله نبدا

اولا نقوم بانشاء مجلدين الاول باسم server والثاني باسم client

ثم نقوم بانشاء مشروع جديد في دلفي 2010 كما يلي

post-112245-12706556795868_thumb.jpg

1- ملف (File)

2- جديد (new)

3-خيارات اخرى (Other )

post-112245-12706664534601_thumb.jpg

1- نختار من القائمة الجانبية (datasnap server)

2- نقوم باختيار (datasnap sever)

لتظهر نافذة جديدة كما في الصورة التالية

post-112245-12706557216237_thumb.jpg

1- اذا قمت بتفعيل هذا الخيار فسينشا لك مشروع vcl اي نافذة ويندوز المعروفة ومكونات vcl

2- اذا قمت بتفعيل هذا الخيار فان المشروع يفذ على شاشة الدوس

3 - اذا قمت بتفعيل هذا الخيار فان المشروع سيكون خدمة

4- هذا الخيار يمثل مشروع يطبق على شبكة محلية

5- المشروع المنشا يعمل على شبكة الانترنت

نترك الخيارات كما هي ونضغط على ok

سوف يظهر المشروع ثلاث نوافذ كما يلي

post-112245-12706557463819_thumb.jpg

نافذة ويندوز عادية

post-112245-1270655805205_thumb.jpg

نافذة بها بعض المكونات للاتصال

post-112245-12706557706785_thumb.jpg

اخير النافذة التي سنقوم باستخدمها في هذا التطبيق وستاخذ الاسم الافتراضي ServerMethodsUnit1

كما هو ظاهر من خلال اسمها سوف نضع كل Methods و functions

نقوم بالنقر عليها نقرا مزدوجا سنجد بدخلها function كما يلي

function TServerMethods1.EchoString(Value: string): string;
begin
Result := Value;
end;

نقوم بتغيير هذة functions كما يلي

function TServerMethods1.Hello_World (): string;
begin
Result := 'Hello World';
end;

دون ان ننسى تغييرها في القسم Public

  public
{ Public declarations }
function Hello_World (): string;

هنا نكون قد انتهينا من الخادم قم بتثبيت المشروع في المجلد server

ملاحظة :يجب ان تثبت المشروع

ننتقل الى الزبون

من القائمة الجانبية للمشروع

post-112245-12706600917498_thumb.jpg

نضغط عليه بزر الفارة اليمن اضف مشروع جديد (Add New)

اختر مشروع دلفي vcl

نقوم باضافة مكون sqlConnctio من صفحة Dbexpress

post-112245-12706601118148_thumb.jpg

ثم نقوم بتغيير الخصائص كما يلي

post-112245-12706601360541_thumb.jpg

1 - driver الى datasnap لتظهر علامة (+) نقوم بالضغط عليها لتظهر خيار اخرى

2- HostName الى localhost

3- loginprompt ال false

الان نضغط دابل كليا على مشروع السرفر

post-112245-12706601594101_thumb.jpg

وننفذ في الوضع الامن (Run with out débouguer)

نترك السيرفر منفذ لانقوم باغلاقه سوف تظهر نافذة ويندوز عادية

نرجع الان الى مشروع زبون ثم نقوم بتفعل الخاصة Active الى treu للمكون sqlconnction

ثم كيلك يمين على المكون Sql connction ونختار (Generate client classes DataSnap)

post-112245-12706603285499_thumb.jpg

لتظهر لنا class جديدة في المشروع زبون باسم Unit3.pas

نقوم بتعرفيها في القسم implementation

uses Unit3;

هنا نقوم باضافة مكون Button وlabel

post-112245-12706603547038_thumb.jpg

في حدث الضغط على الزر نقو بكتابة الكود التالي

procedure TForm2.Button1Click(Sender: TObject);
var
oTServerMethods1Client :TServerMethods1Client;
begin
oTServerMethods1Client := oTServerMethods1Client.Create(SQLConnection1.DBXConnection);
Label1.Caption:=oTServerMethods1Client.Hello_World;
end;

احفظ المشروع في المجلد client ثم نفذ (يجب عليك ان تحفظ المشروع قبل اللتنفيذ)

اتمنى ان اكون قد وفقت في الشرح الى حد ما

وفقنا الله واياكم لما يحبه ويرضاه

تم تعديل بواسطه علي .ع
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا على هذا الدرس اخي على

3 - اذا قمت بتفعيل هذا الخيار فان المشروع سيكون خدمة

هل هذه الخدمة عبارة عن خدمة ويب او مجرد DCOM او API ارجو التوضيح ولو بمثال شكرا

تم تعديل بواسطه علي .ع
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

اهلا وسهلا بك اخي عبد العالي

التخاطب مع service سواء ويب REST et JSON اوdcom

وفقنا الله واياكم

تم تعديل بواسطه علي .ع
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم كيف حالكم اخوتي

اسف على قلة مشاركاتي في الفترة الاخيرة بسبب ظروف خارجة عن ارادتي

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

كيف استطيع ان ارسل صنفا في الداتا سناب جربت استعمال Tremotable او Invokable لكنه لم يعمل. لذلك قمت بتنفيذ المثال على المشروع السابق الذي استعملته باستعمال dataset فقط

في المرفقات ما نجحت ان اصل اليه

D7DbTiersEssai2.rar

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

تم تعديل بواسطه زكيري عبد العالي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

اهلا اخي امين

كدت ان اياس من قلة الرورد وعدم الاهتمام

بالنسبة لسؤالك ساجيب عليه في الدرس القادم ان شاء الله

وفقنا الله واياكم لما يحبه ويرضاه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

***

عتابي على اخي امين وهو يعرف لماذا ولكن لما قرائت هذا :

اسف على قلة مشاركاتي في الفترة الاخيرة بسبب ظروف خارجة عن ارادتي

عرفت السبب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ،،،

أخوي علي مشكوووور على الدروس .

نقطة لم أفهم ماذا تقصد بها

هنا نكون قد انتهينا من الخادم قم بتثبيت المشروع في المجلد server

ماذا تقصد بتثبيت المشروع .

لأن عند تفيذ المشروع تأتي رسال مفادها ان المكتبة غير مسجلة .

[DCC Fatal Error] ServerContainerUnit1.pas(7): F1026 File not found: 'IdSchedulerOfThreadPool.dcu'

حلينا المشكلة الثانية باضافة (BDS)\Lib\Indy10 الى الخيارات في الدلفي .

لكن الان ماذا تقصد بثبيت المشروع .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

اهلا بكم جميها و الله احسد الاخ علي على هذا التجاوب معه و مشاركات االخوة في موضوعه .

اخي محمد يقصد الاخ على بتثبية المشروع هو حفضه في مجلد معين فقط التسجيل لست ادري لما كتب تثبيت لان هذا المصطلح يتسعمل لتثبيت البرامج ليس للحفظ :wink:

عليلو :ohmy:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ماهو اصدرا الدلفي ليك اخي محمد لاني جرب بالدلفي 2010 و 2009 و ليس لدي مشاكل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اهلين بيك اخوي زكيري

استخدم دلفي 2010 مع ويندوز 7

جربت المثال لا يعمل .

التنفيذ يعمل لكن المشكلة عند الضغط على الزر لا ينفذ الفكشن يعطي خطأ

سأحاول مرة أخرى هذه الليلة ان شاءالله .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

التنفيذ يعمل لكن المشكلة عند الضغط على الزر لا ينفذ الفكشن يعطي خطأ

اخي محمد لا تنسي ان في هذه المرحلة التي شرحها الاخ على انها تشبه برامج client / server اي يعني يجب تنفيذ المشروع الاول و تركه منفذ ثم تنفيذ البرنامج الاخر .client و هكذا بتم التخاطب بينهما كما ارجوا من الاخ على بعد الانتهاء من الدرس ان يشرح لنا كيفية تحويل برنامج السرفر "اى طبقة البيانات"

الى خدمت و تنفيذها على IIS .لاني لم افلح لحد الان في تجريبها .

شكرا

post-1034-12711444848012_thumb.jpg

تم تعديل بواسطه زكيري عبد العالي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

أهلا إخواني mohfa وأخي أبو محمد أمين وعبد العالي أثريتم الموضوع بتواجدكم شاكر لكم

اليوم سوف نأتي على التطبيق الأهم في هذا الدرس وهو تشكيل طبقتين لتبادل البيانات في ما بينهما

بسم الله نبدأ

أولا نقوم بإنشاء مجلد نسميه فرضا N-tier وننشأ بداخله مجلدين نسميهما فرضا DataServer

والثاني باسم Prisontation كي نحفظ بهما المشروع

أولا نبدأ بالطبقة Server

ننشأ مشروع جديد كما أسلفنا في الدرس السابق

1- ملف (File)

2- جديد (new)

3- خيارات اخرى (Other )

4- نختار من القائمة الجانبية (datasnap server)

5- نقوم باختيار (datasnap sever)

6- لتظهر نافذة جديدة

7- نقوم باختيار النافذة الوسطى التي تاخذ اسم ServerMethodsUnit1

post-112245-12712624650973_thumb.jpg

في هذه النافذة نضع مكون AdoConnction و مكون AdoTable

نقوم بربط Adotable بالمكون AdoConnction في الخاصية connction

كما جرت العادة ونربط Adoconnction بأي جدول من الجداول المتوفرة لديك بالشكل العادي كما ألفنا التعامل معها

ثم نغير function أولا نقوم بتعريفها في القسم public

كما يلي

public
{ Public declarations }
function fotchall( ): TDataSet;

ثم fonction التي تقوم بإرجاع Dataset

نقوم بتفعيل AdoTable

وستكون النتيجة إرجاع َ AdoTable كما ي الكود الأتي

function TServerMethods1.fotchall(): TDataSet;
begin
ADOTable1. Open;
Result := ADOTable1;
end;

هنا نكون قد انهينا التطبيق زبون وكما اشرنا اليه في السابق يجب حفظ المشروع في المجلد DataServer

وننفذ في الوضع الامن (Run with out débouguer) كما اسلفنا في الموضوع السابق

اما الان سننتقل الى الزبون (client)

نضيف الان تطبيق جديد الى مشروعنا يمثل الطبقة الثانية

من نوع Application vcl عادية

نضع على الفورم الكائنات التالية

1-SQLConnection تجده في الصفحة DBexpress

2-ClientDataSet1 تجده في الصفحة Data access

3-DataSource تجده في الصفحة Data access

4- DataSetProvider تجده في الصفحة Data access ايضا

5-SqlServerMethod تجده في الصفحة DBexpress

6- DBGrid تجده في الصفحة Data controles

لتبدو كما في الصورة التالية

post-112245-1271262449946_thumb.jpg

نقوم بتغيير الخصائص التالية للمكون SQLConnection

1 - driver الى datasnap لتظهر علامة (+) نقوم بالضغط عليها لتظهر خيار اخرى

2- HostName الى localhost

3- loginprompt ال false

الان نشرع في ربط هذه المكونات مع بعضها لنصل الى الناتج

1- نربط DBGrid مع DataSource فس الخاصية DataSource ل DBGrid

2- نربط ClientDataSet مع DataSetProvider في الخاصية Provider Name ل ClientDataSet

3- نربط DataSetProvider مع SqlServerMethod في الخاصية DataSet ل DataSetProvider

4_نقوم باختيار Method المناسبة وهنا ستكون TServerMethods1.fotchall في الخاصية ServerMethodName

هنا ستظهر لديك التسجيلات في DBgrid وهنا نكون قد انهينا درسنا ارجو من الله ان اكون قد وفقت في ايصال المعلومة الصحيحة

وفقنا الله واياكم لما يحبه ويرضاه

تم تعديل بواسطه علي .ع
0

شارك هذا الرد


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

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

انت قمت لحد الان بعمل 2 tier اي طبقتين الاولة هي السرفر و بها نجد الاتصال عن طريق ado و كل الاجراءات الاخرى ... و الطبقة الثانية هي الزبون او بما تسمى طيقة العرض اين قمت بعرض البيانات .

كنت احب ان تكمل درس 3 tier و نفصل المعاجات عن البيانات . شكرا ان لم يكن لديك مانع ساتدخل لمساعدتك في ذلك خصوصا اني وجدت طريقة ارسال ابجكة من السرفر الى الكلين مثلا TPERSO في موضوعي السابق .

تم تعديل بواسطه علي .ع
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي علي ارجوا ان لا تطيل علينا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اظن ان اخي علي اعتزل الدلفي و اصبح 100% .net

من لديه الشجاعة لاكما ل الدرس و استعمال 3- طبقات و لزين من المعلومات

http://www.andreanolanusse.com/blogen/datasnap-2010-sending-and-receiving-objects/

في هذه الرابطة جواب للاخ امين الذي يبحث عن تمرر ابجكت بن الطبقات

شكرا و انتضر الرد

اتوقع مشاركة الاخ امين او أبو محمـد Icon

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .