• 0
زكيري عبد العالي

درس Web Services في الدلفي و بريزم

سؤال

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

**************************************************************

ملاحظ : انا لم اقم الا بجمع وتنقية الدروس من عدة مواقع بها معومات متبعثرة راجيا من الله ان يستفيد منها اخواننا المسلمين

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

**************************************************************

Web Services مقدمة

مبدئياً خدمات ويب أو ما يطلق عليها اسم Web Service هي عبارة عن برا مج دلفي عاديةولكنها ليس لها واجهة المقصود هنا بالواجهة هي واجهة الاستخدام

طريقة العمل

تتلخص وظيفة استخدام ال web services بإمكانية الاستفادة من ال Methods الموجودة بال web server داخل برنامج الزبون وباستخدام برتوكول ال SOAP وهو اختصار ل Simple Object Access Protocol يتم نقل ال Result من ال web Services server إلى ال Client بعد تحويلها إلى ال XML - extensible Markup Language حيث تنقل عبر برتوكول ال HTTP إلى جهاز الزبون والهدف من استخدامه هو تسهيل وصول ال Data من ال web server إلى ال Client من خلال ال firewalls والبيئات المختلفة إذ أن جميع بيئات الشبكات تدعم برتوكول ال HTTP والذي يعمل على البورت 80 . ولا تختلف لغة ال XML عن ال HTML إذ تستخدم نفس القواعد في ال HTML وهي مجموعة من الElements وال Attributes مثل ال </> <> لكن تتميز بمرونة اكبر .

اييستطيع المستخدمون الوصول الى هذه المعلومات بواسطة Interface معين ، حيث يتلق أمر أو طلب Request ثم يستجيب لها عن طريق http protocol اعتماداً على معايير ْXML والتي تؤمن بالتالي أن يفهمها أو تفهمها ملايين البرامج والأجهزة ومواقع الإنترنت ببساطة تامة .

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

وكما أسلفنا فخدمات ويب تعتمد على XML كمعيار لتمثيل البيانات ، ما يعني أن جميع البرامج في جميع الأماكن قادرة على التعامل معها وفهمها بغض النظر عن نظام التشغيل أو لغة البرمجة.

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

خادم الويب و الدلفي

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

  • شبكة TCP/IP
  • خادم HTTP له القدرة على فهم طريقة عمل خادم الويب
  • محرك CGI او ISAPI و الذي يقوم بمعالجه المعلومات الصادرة من خادم الويب
  • تطبيق او منضومة تعتبر الزبون الذي يسال خادم الويب ثم يعرض النتائج

كما نعلم ان كل انضم التشغيل تحتوي على شبكة TCP-IP

اما عن خادم HTTP فمكننا استعمال احد المكونات في الدلفي لتكن مثلا مكونات البروتكول SOAP

SOAP= HTTP + XML=Simple Object Access Protocol

post-1034-1245507273_thumb.png

post-1034-1245507533_thumb.png

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

شارك هذا الرد


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

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

  • 0

اعمال تطبيقية

1-المثال الاول

كتابه خدمة وبب ترسل الكلمة

HelloWorld

اول ما نبدأ له هو انشار مجلد خيالي على مسوى خادم المويب IIS

1-Creating a virtual directory

Fig01_WindowsComponentWizard.PNG

بعد تثبية ننشأ iis المجلد Delphi2009WS كمايلي

Fig02_NewVirtualDirectory.PNG

Fig03_VirtualDirName.PNG

ننشا مجلد حقيقي في المسار

Delphi2009WS

C:\Inetpub\wwwroot

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

Fig04_PhysicalDirName.PNG

ودائما على مستوى IIS

نفعل الخاصية Execute (such as ISAPI applications or CGI)

Fig05_Permissions.PNG

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

شارك هذا الرد


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

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

2-برمجة خدمه الويب

اذا نفتح مشروع جديد في الدلفي نختار Other ثم من القائمه تختار

Web Service ->SOAP Server Application

post-1034-1245606611_thumb.jpg

0

شارك هذا الرد


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

و الان وبما اننا سننشأ تطبيق ويب لابد ان يكون اما ISAPI او CGI او .NET

وانا اخترت CGI وسيكون لنا درس عليها ان شاء الله في هذه الموسوعة

نحدد

CGI application كما يلي

Fig07_NewAppType.PNG

ثم yes لتاكيد عملية انشاء منضومة soap

Fig08_CreateInterface.PNG

و الان سيطلب منا ادخال اسم خدمة الويب اذا يجب وضع اسم مناسب لعمل هذه الخدمت

وفي مثالنا نكتب

WebService1

post-1034-1245607253_thumb.jpg

0

شارك هذا الرد


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

نغير اسم المشروع الى Delphi2009WS_1.dproj

،حفضه في المجلد

Source

post-1034-1245607702_thumb.jpg

0

شارك هذا الرد


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

service1Intf.pas

يعتبر هذا الملف الوحدة التي نجد فيها interface الخاصة بالمشروع و التي يجب ان نعرف او نصرح فيها عن جميع الوظائف المستعملة في المشروع

انسخ الكود
  1.  
  2. [color= #009900;]{[/color] [color= #000000; font-weight: bold;]Interface[/color] invocable Iservice1 [color= #009900;]}[/color]
  3. unit service1Intf[color= #339933;];[/color]
  4. [color= #000000; font-weight: bold;]interface[/color]
  5. uses InvokeRegistry[color= #339933;],[/color] Types[color= #339933;],[/color] XSBuiltIns[color= #339933;];[/color]
  6. type
  7.  
  8. [color= #009900;]{[/color] Les interfaces invocables doivent dériver de IInvokable [color= #009900;]}[/color]
  9. Iservice1 [color= #339933;]=[/color] [color= #000000; font-weight: bold;]interface[/color][color= #009900;]([/color]IInvokable[color= #009900;])[/color]
  10. [color= #009900;][[/color][color= #0000ff;]'{E4F6BF94-1745-4498-BBA2-9F6003FBED4E}'[/color][color= #009900;]][/color]
  11. [color= #000000; font-weight: bold;]function[/color] ShwoHelloWorld[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]:[/color]string[color= #339933;];[/color] stdcall[color= #339933;];[/color]
  12. [color= #009900;]{[/color] Les méthodes de l[color= #0000ff;]'interface invocable ne doivent pas utiliser la }[/color]
  13. [color= #0000ff;] { convention d'[/color]appel par défaut [color= #339933;];[/color] stdcall est conseillé [color= #009900;]}[/color]
  14. [color= #990000;]end[/color][color= #339933;];[/color]
  15. implementation
  16. initialization
  17. [color= #009900;]{[/color] Les interfaces invocables doivent être recensées [color= #009900;]}[/color]
  18. InvRegistry[color= #339933;].[/color]RegisterInterface[color= #009900;]([/color]TypeInfo[color= #009900;]([/color]Iservice1[color= #009900;])[/color][color= #009900;])[/color][color= #339933;];[/color]
  19. [color= #990000;]end[/color][color= #339933;].[/color]
  20.  

service1Impl.pas

هي الوحدة التي نكتب فيها اكواد الوظائف .

,في نقوم بimplementation للواجهة service1Intf

انسخ الكود
  1.  
  2. [color= #009900;]{[/color] Fichier d[color= #0000ff;]'implémentation invocable pour Tservice1 implémentant Iservice1 }[/color]
  3. [color= #0000ff;]unit service1Impl;[/color]
  4. [color= #0000ff;]interface[/color]
  5. [color= #0000ff;]uses InvokeRegistry, Types, XSBuiltIns, service1Intf;[/color]
  6. [color= #0000ff;]type[/color]
  7. [color= #0000ff;] { Tservice1 }[/color]
  8. [color= #0000ff;] Tservice1 = class(TInvokableClass, Iservice1)[/color]
  9. [color= #0000ff;] public[/color]
  10. [color= #0000ff;] function ShwoHelloWorld():string; stdcall;[/color]
  11. [color= #0000ff;] end;[/color]
  12. [color= #0000ff;]implementation[/color]
  13. [color= #0000ff;] function Tservice1.ShwoHelloWorld():string;[/color]
  14. [color= #0000ff;] begin[/color]
  15. [color= #0000ff;] Result:= '[/color]Hello World[color= #0000ff;]';[/color]
  16. [color= #0000ff;] end;[/color]
  17. [color= #0000ff;]initialization[/color]
  18. [color= #0000ff;]{ les classes invocables doivent être recensées }[/color]
  19. [color= #0000ff;] InvRegistry.RegisterInvokableClass(Tservice1);[/color]
  20. [color= #0000ff;]end.[/color]
  21.  
  22.  

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

شارك هذا الرد


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

تجربة المثال الاول

ننقل الملف الناتج

الى Delphi2009WS_1.exe

C:\Inetpub\wwwroot\Delphi2009WS

نكتب في IE

http://localhost/Delphi2009WS/Delphi2009WS_1.exe

و الان اصبحت الخدمت جاهزة

لم يبقي الا كيف الاستفادة من هذه الخدمة .

post-1034-1245609241_thumb.jpg

0

شارك هذا الرد


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

4-برمجة الزبون

ان تطبيق الزبون اما ان يكون تطيب ويب او وندوزعادي ويتم استغلال مجوموعة الميتود او الوظافة التي كتبناها في خدمه الويب باتباع الخطوات التالية

أ*-ننشأ تطبيق جدبد VCL به نافذة واحدة

*-نضيف الكلاسات او الوحدات التالي بواسطتها نتصل بالخادم

Fig18_NewItems_WSDLImporter.PNG

بعد الموافقة سممكننا الدلفي من انشاء WSDL Importer wizard والتي يجب اعطاءها رابطة الخدمة التي انشئناها ولتكن

http://localhost/Delphi2009WS/Delphi2009WS_1.exe

هذا مسار الملف التنفيذي لتطبق الخدمة لكن نحن بحاجة الى الملف الناتج من هذه التعلمة الذي قام بانشائه SOAP اذن نظيف الى الرابطة

http://localhost:8080/Delphi2009WS/Delphi2009WS_1.exe/wsdl/Iservice1

حيث ان Iservice1 هو اسم الخدم التي انشاناها سايقا

Fig19_WSDLImporter_URL.PNG

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

post-1034-1245696057_thumb.jpg

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

شارك هذا الرد


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

و في الاخير نكتب الكود التالي الذي سيستدعي الوظيفة في زر نضعه على الفورم

انسخ الكود
  1.  
  2. unit Unit3[color= #339933;];[/color]
  3. [color= #000000; font-weight: bold;]interface[/color]
  4. uses
  5. Windows[color= #339933;],[/color] Messages[color= #339933;],[/color] SysUtils[color= #339933;],[/color] Variants[color= #339933;],[/color] Classes[color= #339933;],[/color] Graphics[color= #339933;],[/color] Controls[color= #339933;],[/color] Forms[color= #339933;],[/color] Dialogs[color= #339933;],[/color] StdCtrls
    [color= #339933;];[/color]
  6. type
  7. TForm3 [color= #339933;]=[/color] [color= #000000; font-weight: bold;]class[/color][color= #009900;]([/color]TForm[color= #009900;])[/color]
  8. Button1[color= #339933;]:[/color] TButton[color= #339933;];[/color]
  9. Edit1[color= #339933;]:[/color] TEdit[color= #339933;];[/color]
  10. procedure Button1Click[color= #009900;]([/color]Sender[color= #339933;]:[/color] TObject[color= #009900;])[/color][color= #339933;];[/color]
  11. [color= #000000; font-weight: bold;]private[/color]
  12. [color= #009900;]{[/color] Déclarations privées [color= #009900;]}[/color]
  13. [color= #000000; font-weight: bold;]public[/color]
  14. [color= #009900;]{[/color] Déclarations publiques [color= #009900;]}[/color]
  15. [color= #990000;]end[/color][color= #339933;];[/color]
  16. [color= #000000; font-weight: bold;]var[/color]
  17. Form3[color= #339933;]:[/color] TForm3[color= #339933;];[/color]
  18. implementation[color= #009900;]{[/color][color= #000033;]$R[/color] [color= #339933;]*.[/color]dfm[color= #009900;]}[/color]
  19. uses Iservice11[color= #339933;];[/color]
  20.  
  21. procedure TForm3[color= #339933;].[/color]Button1Click[color= #009900;]([/color]Sender[color= #339933;]:[/color] TObject[color= #009900;])[/color][color= #339933;];[/color]
  22. begin
  23. edit1[color= #339933;].[/color]Text[color= #339933;]:=[/color]GetIservice1[color= #339933;].[/color]ShwoHelloWorld[color= #009900;]([/color][color= #009900;])[/color][color= #339933;];[/color]
  24. [color= #990000;]end[/color][color= #339933;];[/color]
  25.  
  26. [color= #990000;]end[/color][color= #339933;].[/color]
  27.  

هنا بحول الله قد اكمالنا اول مثال على خدمه الويب في الدلفي win32

يمكن ان نعمل على ISAPI كما ذكرة سابقا وهي بنفس الكريقة الا ان المتحصل عليه هو ملف dll

ولكن بالدلفي بريسم هي اسهل و اسرع لانه يعتمد على .NET

post-1034-1245696637_thumb.jpg

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

شارك هذا الرد


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

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

ب) - نفس المثال السابق مع بريزم

اولا نعدل في خصائص iis كي نستطيع العمل على مشروعنا خارج VS2008

اذا لا بد من تفعيل asp.net في iis

لاحظ الصورة 1

ثم نقوم بعمليه تسجيل asp.net باكتابة تعليمة دوس كالتالي

%Windir%/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe -i

post-1034-1245917559_thumb.jpg

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

شارك هذا الرد


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

انشاء خدمت الويب

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

post-1034-1245918541_thumb.jpg

0

شارك هذا الرد


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

وكما تلاحظون ان vs2008 انشا البا الكود سورس مع مثال وهذا المثال هو نفسه الذي نحن بصدد انشاءه .

ولتجرية الصفحة وعرض نتيجه الميتود او الوضيفة HelloWorld

ننقر بالزر الايمن على الملف Service.asmx وننفذ التعليمة

عرض على المتصفح

post-1034-1245918928_thumb.jpg

post-1034-1245919100_thumb.jpg

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

شارك هذا الرد


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

3-برمجة الزبون

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

post-1034-1245919523_thumb.jpg

0

شارك هذا الرد


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

نظع زر و تكست بوكس وننقر مرتين على الزر لنصل الى الحدث Click

في هذا الحدث سنقوم باستدعاء الميتود التي انشاءناها في الخدمت وهي HelloWorld

لكن السؤال هو كيف سنصل اليها وهي في مشروع اخر و في جهاز اخر او في خدمت ويب لا نعرف الا url فقط

---------------------------------------------------------------------

انسى انك انت من انشاءة الخدمت

---------------------------------------------------------------------

اذ ماهو url الخاص بالخدمت انه في الصورة السابقة

http://localhost/service1/Service.asmx

لكن ماهذا اليست صفحه واب

الجواب لا لان F .net هو من حول الخدمت الى صفحة واب يراها الجميع

الا انه في الحقيقة هي ملف XML يحتوي على متود و ليس له واجهة كما ذكرنا سابقا

--------------------------------------------------------------------

نعم عرفنا مسار موقع الخدمت لكن كيف سنعرفها الى مشروعنا

مثل ما نعرف ملف dll لكن سنعرف خدمت فقط

التعليمتين متشابهتين

référencesبالنقر بالزر الايمن على

انضر

post-1034-1245920665_thumb.jpg

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

شارك هذا الرد


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

الان نريد عرض ما ترجعه المتيتود في محتوي

textboxو ذلك بالضغط على الزر

نكتب

انسخ الكود
  1.  
  2. method MainForm[color= #339933;].[/color]button1_Click[color= #009900;]([/color]sender[color= #339933;]:[/color] [color= #990000;]System[/color][color= #339933;].[/color]Object[color= #339933;];[/color] e[color= #339933;]:[/color] [color= #990000;]System[/color][color= #339933;].[/color]EventArgs[color= #009900;])[/color][color= #339933;];[/color]
  3. begin
  4. [color= #000000; font-weight: bold;]var[/color] o_service1 [color= #339933;]:=[/color] [color= #000000; font-weight: bold;]new[/color] Client_ws[color= #339933;].[/color]U_service1[color= #339933;].[/color]Service[color= #339933;];[/color]
  5. textBox1[color= #339933;].[/color]Text[color= #339933;]:=[/color] o_service1[color= #339933;].[/color]HelloWorld[color= #009900;]([/color][color= #009900;])[/color][color= #339933;];[/color]
  6. [color= #990000;]end[/color][color= #339933;];[/color]
  7.  

كما تلاحظ اني عرفة الكائن او الشيء o_service1 و انشأته في ان واحد وذلك من الكلاس

U_service1 و الموجوده في مشروعنا هذا اذ

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

و بالتالي نتحص في الاخير على الميتود HelloWorld الموجودة في الخدمت .

post-1034-1245940109_thumb.jpg

0

شارك هذا الرد


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

من المثال السابق تستنج ان الشكل العام للبنية خدت الويب هي

post-1034-1246137212_thumb.jpg

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

شارك هذا الرد


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

قاءمة الروابط

http://www.laboiteaprog.com/article-36-1-delphi_web_service

http://www.jcolibri.com/articles/web/services_web/delphi_web_services/delphi_web_services.html

http://vb4arab.com/vb/showthread.php?t=420

http://blogs.embarcadero.com/pawelglowacki/2008/12/18/38624

المثال الثاني

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

ساترك الرد هكذا لحين اجد ما اكتبه

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

شارك هذا الرد


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

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

في هذه الطريقة لا تعتبر خدمت الواب حسب الشرح السابق لكل من SAOP بكن بما انها تستعمل ملفات اكسمل + http فيمكن ان نحكم عنها بانها خدمت ويب كيف ذللك

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

يطلب منك كمبرمج ان تعرض ما يقوم به التطبيق الثاني في التطبق الاول

كيف تعمل

الحل

نضع ملف او جدول ثم استرحع المعلومات من واجهة التطبيق 2 و في التطبيق 2 اضع timer تعرض محتوى الجدول

نعم صحيح ولكن عندي افضل لاني استعمل الذاكرة و لا اخش تلف الملف او فقذ معلومة ما

اضيف خدمت الى التطبيق 2 ومن التطبق 1 اعرض نتيجتها

كيف ذلك

المثال الثالث

post-1034-1246186368_thumb.jpg

indy.rar

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

شارك هذا الرد


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

برمجة الخدمة و الخادم

في هذا المثال سننشأ خادم ويب جديد ليس له علاقة ب iis او الاباش وليكن على المنفذ8081

العنوان هو

http://localhost:8081/

بعد وضع المكونات كما في الصورة الخاصة بالخادم ولال ننسا كتابى المنفد 8081 في الخاصية

[b]
[/b]defaultport :8081 للمكون IdHTTPServer1

  1. الهدف من هذا الكود هو قراءة الرقم الممر في url
  2. البحث في القاعدة
  3. ارسالة النتيجة في شكل اكسمل

انسخ الكود
  1.  
  2. procedure TForm3[color= #339933;].[/color]IdHTTPServer1CommandGet[color= #009900;]([/color]AContext[color= #339933;]:[/color] TIdContext[color= #339933;];[/color]ARequestInfo[color= #339933;]:[/color] TIdHTTPRequestInfo
    [color= #339933;];[/color] AResponseInfo[color= #339933;]:[/color] TIdHTTPResponseInfo[color= #009900;])[/color][color= #339933;];[/color]
  3. [color= #000000; font-weight: bold;]var[/color]
  4. vid[color= #339933;],[/color]str [color= #339933;]:[/color] string[color= #339933;];[/color]
  5. vQuery [color= #339933;]:[/color]TADOQuery[color= #339933;];[/color]
  6. begin
  7. str[color= #339933;]:=[/color][color= #0000ff;]''[/color][color= #339933;];[/color]
  8. [color= #b1b100;]if[/color] ARequestInfo[color= #339933;].[/color]Params[color= #339933;].[/color][color= #990000;]Count[/color] [color= #339933;]>[/color][color= #cc66cc;]0[/color] then
  9. vid[color= #339933;]:=[/color]ARequestInfo[color= #339933;].[/color]Params[color= #339933;].[/color]Values[color= #009900;][[/color][color= #0000ff;]'id'[/color][color= #009900;]][/color][color= #339933;];[/color]
  10. TRY
  11. vQuery [color= #339933;]:=[/color] TADOQuery[color= #339933;].[/color]Create[color= #009900;]([/color]nil[color= #009900;])[/color][color= #339933;];[/color]
  12. vQuery[color= #339933;].[/color]Connection[color= #339933;]:=[/color]ADOConnection1[color= #339933;];[/color]
  13. vQuery[color= #339933;].[/color]SQL[color= #339933;].[/color]Text [color= #339933;]:=[/color] FORMAT[color= #009900;]([/color][color= #0000ff;]'SELECT * FROM [table] WHERE id = %S'[/color][color= #339933;],[/color][color= #009900;][[/color]vid[color= #009900;]][/color][color= #009900;])[/color][color= #339933;];[/color]
  14. TRY
  15. vQuery[color= #339933;].[/color]Open[color= #339933;];[/color]
  16. str[color= #339933;]:=[/color] [color= #0000ff;]' <?xml version="1.0" standalone="yes"?>'[/color][color= #339933;]+[/color]
  17. [color= #0000ff;]' <DATAPACKET Version="2.0">'[/color][color= #339933;]+[/color]
  18. [color= #0000ff;]' <METADATA>'[/color][color= #339933;]+[/color]
  19. [color= #0000ff;]' <FIELDS>'[/color][color= #339933;]+[/color]
  20. [color= #0000ff;]' <FIELD attrname="id" fieldtype="string" WIDTH="15"/> '[/color][color= #339933;]+[/color]
  21. [color= #0000ff;]' <FIELD attrname="name" fieldtype="string" WIDTH="15"/> '[/color][color= #339933;]+[/color]
  22. [color= #0000ff;]' <FIELD attrname="not" fieldtype="string" WIDTH="15"/> '[/color][color= #339933;]+[/color]
  23. [color= #0000ff;]' </FIELDS>'[/color][color= #339933;]+[/color]
  24. [color= #0000ff;]' </METADATA>'[/color][color= #339933;]+[/color]
  25. [color= #0000ff;]' <ROWDATA>'[/color][color= #339933;];[/color]
  26. [color= #b1b100;]while[/color] not vQuery[color= #339933;].[/color]Eof [color= #b1b100;]do[/color]
  27. begin
  28. str[color= #339933;]:=[/color] str [color= #339933;]+[/color] FORMAT[color= #009900;]([/color]
  29. [color= #0000ff;]' <ROW RowState="4"'[/color][color= #339933;]+[/color]
  30. [color= #0000ff;]' id="%S"'[/color] [color= #339933;]+[/color]
  31. [color= #0000ff;]' name="%S"'[/color] [color= #339933;]+[/color]
  32. [color= #0000ff;]' not="%S"'[/color] [color= #339933;]+[/color]
  33. [color= #0000ff;]' />'[/color][color= #339933;],[/color][color= #009900;][[/color]vQuery[color= #339933;].[/color]FieldByName[color= #009900;]([/color][color= #0000ff;]'id'[/color][color= #009900;])[/color][color= #339933;].[/color]AsString[color= #339933;],[/color]
  34. vQuery[color= #339933;].[/color]FieldByName[color= #009900;]([/color][color= #0000ff;]'name'[/color][color= #009900;])[/color][color= #339933;].[/color]AsString[color= #339933;],[/color]
  35. vQuery[color= #339933;].[/color]FieldByName[color= #009900;]([/color][color= #0000ff;]'not'[/color][color= #009900;])[/color][color= #339933;].[/color]AsString
  36. [color= #009900;]][/color]
  37. [color= #009900;])[/color][color= #339933;];[/color]
  38. vQuery[color= #339933;].[/color][color= #990000;]Next[/color][color= #339933;];[/color]
  39. [color= #990000;]end[/color][color= #339933;];[/color]
  40. str[color= #339933;]:=[/color] str [color= #339933;]+[/color][color= #0000ff;]' </ROWDATA></DATAPACKET>'[/color][color= #339933;];[/color]
  41. EXCEPT ON E[color= #339933;]:[/color]Exception [color= #b1b100;]DO[/color]
  42. ShowMessage[color= #009900;]([/color]e[color= #339933;].[/color]Message[color= #009900;])[/color][color= #339933;];[/color]
  43. [color= #990000;]END[/color][color= #339933;];[/color]
  44. FINALLY
  45. AResponseInfo[color= #339933;].[/color]ContentText[color= #339933;]:=[/color]str[color= #339933;];[/color]
  46. vQuery[color= #339933;].[/color]close[color= #339933;];[/color]
  47. vQuery[color= #339933;].[/color]Free[color= #339933;];[/color]
  48. [color= #990000;]END[/color][color= #339933;];[/color]
  49. [color= #990000;]end[/color][color= #339933;];[/color]
  50.  

بهذا انتهينا من برمجة الخادم و الخدمت

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

0

شارك هذا الرد


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

برمجة الزبون

بعدوضع المكونات التي في الصور نقوم بوضع الكود التالي على الزر

الهدف

  1. قراءة الرقم المحرر من طرف المستخدم
  2. ارساله الى خادم الويب
  3. استقبال النتيجة الممثلة في شكل xml
  4. وضعها في memo
  5. وضعها فيclientdataset

انسخ الكود
  1.  
  2. procedure TForm3[color= #339933;].[/color]Button1Click[color= #009900;]([/color]Sender[color= #339933;]:[/color] TObject[color= #009900;])[/color][color= #339933;];[/color]
  3. [color= #000000; font-weight: bold;]var[/color]
  4. s [color= #339933;]:[/color] TMemoryStream[color= #339933;];[/color]
  5. AStream [color= #339933;]:[/color] TFileStream[color= #339933;];[/color]
  6. begin
  7. s[color= #339933;]:=[/color]TMemoryStream[color= #339933;].[/color]Create[color= #339933;];[/color]
  8. TRY
  9. TRY
  10. idHTTP1[color= #339933;].[/color]Get[color= #009900;]([/color][color= #0000ff;]'http://localhost:8081/?id='[/color][color= #339933;]+[/color]edit1[color= #339933;].[/color]Text[color= #339933;],[/color]s[color= #009900;])[/color][color= #339933;];[/color]
  11. EXCEPT ON E[color= #339933;]:[/color]Exception [color= #b1b100;]DO[/color]
  12. BEGIN
  13. showmessage[color= #009900;]([/color][color= #0000ff;]'Connexion au serveur impossible!'[/color] [color= #339933;]+[/color][color= #666666; font-style: italic;]#13+E.message);[/color]
  14. [color= #990000;]exit[/color][color= #339933;];[/color]
  15. [color= #990000;]END[/color][color= #339933;];[/color]
  16. [color= #990000;]END[/color][color= #339933;];[/color]
  17.  
  18. s[color= #339933;].[/color]Seek[color= #009900;]([/color][color= #cc66cc;]0[/color][color= #339933;],[/color] soFromBeginning[color= #009900;])[/color][color= #339933;];[/color][color= #666666; font-style: italic;]//S.position:=0;[/color]
  19. Memo1[color= #339933;].[/color]Lines[color= #339933;].[/color]LoadFromStream[color= #009900;]([/color]s[color= #009900;])[/color][color= #339933;];[/color]
  20. ClientDataSet1[color= #339933;].[/color]Close[color= #339933;];[/color]
  21. ClientDataSet1[color= #339933;].[/color]LoadFromStream[color= #009900;]([/color]s[color= #009900;])[/color][color= #339933;];[/color]
  22. TRY
  23. ClientDataSet1[color= #339933;].[/color]Open[color= #339933;];[/color]
  24. EXCEPT ON E[color= #339933;]:[/color]Exception [color= #b1b100;]DO[/color]
  25. [color= #990000;]exit[/color][color= #339933;];[/color]
  26. [color= #990000;]END[/color][color= #339933;];[/color]
  27. FINALLY
  28. s[color= #339933;].[/color]Free[color= #339933;];[/color]
  29. [color= #990000;]end[/color][color= #339933;];[/color]
  30. [color= #990000;]end[/color][color= #339933;];[/color]
  31.  

هكذا انتهينا من webservice قراء ممتعة مع الموسوعة العربية للدلفي

0

شارك هذا الرد


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

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

اردت اكمال الموضوع قبل الغياب

http://en.wikipedia.org/wiki/Representational_State_Transfer

اريد معلومات عن REST مع الدلفي من ينفعنا لرابط امثلة لاني في الحقيقة لم اتعامل معها من قبل

شكرا

0

شارك هذا الرد


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

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

إن شاء الله سنكمل الدرس وذلك بمثال عن استخدام خدمت مايكروسوفتmappoint

معلومات مفيدة

http://www.mp2kmag.com/a65--delphi.example.mappoint.html

فيديوا مهم

http://video.codegear.com/CodeRage2007Arch...runeauBabet.zip

كود سورس جاهز

اذا كل الامكانيات لدينا لتجربة

ملاحطة

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

24534_bruneau_babet_s_web_services_demo_applications.ZIP

0

شارك هذا الرد


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

http://www.arabteam2000-forum.com/index.ph...20&start=20

شكرا لك أخي على هذا المجهود

الآن أنا صممت خدمة ويب بسيطة باستخدام C# وهي تعمل بشكل جيد. لكن عند تشغيلها يعطيني مسج مفادها التالي :

you should choose a new namespace

http://tempuri.org

هل هذا يعني ان علي استخدام سيرفر آخر أو ماذا؟

وبعد أن صممت تطبيق ويب وقمت باستخدام خدمة الويب التي قمت بتصميمها. الحمد لله اشتغل التطبيق.

هل يعني الآن أن اي شخص يستطيع ان يستخدم هذه الخدمةوهل تعتبر الآن متاحة على الانترنت.؟

مع الشكر الجزيل

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

شارك هذا الرد


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

السلام عليكم

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

0

شارك هذا الرد


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

اهلا اخي مسعود من زمان يارجل لم تكتب في arabteam

لم افهم سؤلك كل الصور واضحة .

انا في skyp الليلة .ان شاء الله .

0

شارك هذا الرد


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

امثلة

1- معرفة العملات

2- التسديد عن طريق paypal

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

شارك هذا الرد


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

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

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