تصميم المواقع باستخدام بالدلفي بريسم + ASP.net
#1
السلام عليكم
باذن الله سنتعلم اليوم كيف ننشا موقع بالدلفي بطريقة سهلة ليس مثل التقنيات السابقة للدلفي التي كان معقدة .

1- الادوات المستعملة
نعلم انه تم صدور الدلفي برزم الذي يشتغل على منصة دوت نت و يمكن تحميله من هنا
https://downloads.embarcadero.com/free/delphi_prism

2- ربما احسن طريقة في نضري لتقديم الدروس هي من الامثلة لذلك ساقدم لكم مثال لانشاء موقع بالاسبي نت و البريسم
خطوات العمل :
- انشاء مشروع لاحظ الصورة 1 :
بعد الضغط على اكي نتحسل على السيلوشن و التي تحتوي بدورها على مشروعك و الذي يحتوي على مايلي
Default.aspx هي الصفحة الرئيسية للموقع وكما تلاحض الكود عبار عن مجومعة من الاوسمة html
كود :
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>

وتلاحض انه مباشرا تهتا نجد ملفين الاول كما هو واضح من اسمه يكون فيه التعريف بالمكونات الموجودة على الصفحة اما Default.aspx فهو يحتوي على الكود اي اين سنكتب تعليماتنا و فئلتنا بلغة الدلفي وكما تلاحضون في الكود سورس هنا
_Default = public partial class(System.Web.UI.Page)
اي ان هذه الفئت ترث من الفئت Page وهذا ما سيعرف للخادم انها صفحة واب فيستطيع عرض مكوناتها و.. .

ب‌- Web.config هو ملف من نوع اكسمل يحتوي على اعدادات الموقع كتابت ثوابت لمسارات ملفات او مسار القاعدةconnectionStrings

Global.asax وهو ايضا ملف اعدادات لكن نتركه لاحقا

تابع مع زكيري .....


الملفات المرفقة
.jpg   PRISM-ASP-1.jpg (الحجم : 26.6 KB / التحميلات : 200)
الرد
#2
بما اننا تحصلنا على الصفحة الرئيسة للموقع يمكننا تنفيذها بعد ان نضيف بعض المكونات على الواجهة ...

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

1- المثال الاول
اهم شئ في البرامج الاكثر طلبا هي قواعد البيانات لذي سكون مثالنا الاول
نريد ان نتصل بقاعدة بيانات للاسف لم اثبت اي قاعدة في جهازي لحد الان لاني فرمتها منذو فترة فقط .
المهم سنكمل مع اتصال بملف اكسل على انه قاعدة بها جدول و هي الصفحة الاولى في المستند.
طريقة الربط
كود :
http://www.bloghotel.org/uploads/zekiriabd_PrismXLS.jpg
الامر سهل اليس كذلك .

ماذا ,؟...؟؟
تقول انك تريد برمجه كل ما يتعلق يقواعد البيانات بالدلفي العادي و الواجهات تكود بالاسبي نت
حسنا
نعم تستطيع بفضل تقنية DCOM و التي شرحتها في الدرس http://www.delphi4arab.net/forum/showthr...p?tid=5583
حيث تقوم بانشاء كلاسات او ملفات اكسمل و ترسلها على شكل string و ستسطيع استقبالها بالدلفي يريسم و ان كنت تريد المزيد عن الطريقة اكتب ردك في الدرس السابق ذكرة و ستجدني مجبا ان شاء الله .

ماذا تريد طريقة جديد لان DCOM قديم
نعم فكرة امباركاديرو في الامر و وفرت طريقة جيد و حديثة و اضافتها الى 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
كود :
http://docwiki.embarcadero.com/images/RADStudio/e/8/80/DataSnapArch.png
في مثالنا هذا سنقوم ببرمجة تدعلى البرمجة ثنائية الطبقات الى فصل الواجهات على المعلاجات و بالطبع ستكون في قسم الدلفي مشروع جديد منفصل حيث سنتصل بقاعدة بيانات و العرض يكون في مشروع الواب الذي نقوم به
1- برمجة طبقة المعالجات (الاتصال بالقاعدة )
نفتح مشروع جديد في الدلفي
كود :
http://www.arabteam2000-forum.com/uploads/monthly_04_2010/post-112245-12706556795868.jpg
- ملف (File)
2- جديد (new)
3-خيارات اخرى (Other )
كود :
http://www.arabteam2000-forum.com/uploads/monthly_04_2010/post-112245-12706664534601.jpg
1- نختار من القائمة الجانبية (datasnap server)
2- نقوم باختيار (datasnap sever)
لتظهر نافذة جديدة كما في الصورة التالية
كود :
http://www.arabteam2000-forum.com/uploads/monthly_04_2010/post-112245-12706557216237.jpg

1- اذا قمت بتفعيل هذا الخيار فسينشا لك مشروع vcl اي نافذة ويندوز المعروفة ومكونات vcl
2- اذا قمت بتفعيل هذا الخيار فان المشروع يفذ على شاشة الدوس
3 - اذا قمت بتفعيل هذا الخيار فان المشروع سيكون خدمة
4- هذا الخيار يمثل مشروع يطبق على شبكة محلية
5- المشروع المنشا يعمل على شبكة الانترنت
نترك الخيارات كما هي ونضغط على ok
سوف يظهر المشروع ثلاث نوافذ كما يلي
كود :
http://www.arabteam2000-forum.com/uploads/monthly_04_2010/post-112245-12706557463819.jpg
كود :
http://www.arabteam2000-forum.com/uploads/monthly_04_2010/post-112245-1270655805205.jpg
كود :
http://www.arabteam2000-forum.com/uploads/monthly_04_2010/post-112245-12706557706785.jpg
خير النافذة التي سنقوم باستخدمها في هذا التطبيق وستاخذ الاسم الافتراضي ServerMethodsUnit1
كما هو ظاهر من خلال اسمها سوف نضع كل Methods و functions
نضع مكون Ttable من BDE و نربطه بالطريقة العدية مع الملف animals.dbf مثلا . لا نفتح الاتصال سيكون ذلك بالكود
ننشاء وظيفة او تابع جديد و نكتب
كود :
function TServerMethods1.FillDataSet(): TDataSet;
begin
  Table1. Open;
  Result := Table1;
end;

فقط
نعم اتهينا من الاتصال عن طريق الدلفي و الان سنترك البريسم يتكلم مع الدلفي كيف
ان تطبيق الدلفي سواء كان EXE او DLL ISAPI .. هو عبارة عن سرفر نثبته مع الموقع في جهاز واحد او جهاز اخر المهم انه يشتغل داما مثل IIS للموقع .

في مشروعنا نقوم بفتح اتصال جديد بالقاعدة كما قمنا سابقا .
لا حظ الصورة
كود :
http://www.bloghotel.org/uploads/zekiriabd_prismdatasnap.jpg
الان سنربط مكون GridView2 و القاعدة
نقوم بالطريقة السابفة لاكن نختار من القاءمة localhost....
و عندما نصل الشاشة نختار Procédure Stockée
كود :
http://www.bloghotel.org/uploads/zekiriabd_prismdatasnap2.jpg
بسيطة اليس كذلك
الرد
#4
طيب مادام الامو هذا موافق لتعلم البريسم و الاسب نت لكن كيف ابني الواجهو و خاصة صفحة الدخول حيث هناك كوكيز و سيشن و ِCSS و javascript ..
نعم الامور كذلك لك واحدة واحدة ففي الدرس القادم نتعلم شيء مهم هي الصفحة الام و صفحات التي تفتح بداخها مثل ما نفعله في الدلفي مع MDI فورم .
تابعوا اخوكم و لا تنسو الدعاء .
الرد
#5
نسية ارفاق المثال
1- المشروع الاول بالدلفي ويحتوي على مكونات دتاسنب و مكون table للربط مع BDE
2- مشروع بريزم لعرض محتوى الجدول في صفحة ويب


الملفات المرفقة
.rar   Datasnap.rar (الحجم : 90.74 KB / التحميلات : 158)
.rar   GestCompt.rar (الحجم : 20.29 KB / التحميلات : 85)
الرد
#6
في الصورة التالية اوضح كيف تنشا مشروع ويب جديد مع مثال قابل للتنفيذ و التغيير اذا سنقوم ببعض التغييرات في هذا المثال الذي يفره لنا VS بمجرد النقر على زر ok
كود :
http://www.bloghotel.org/uploads/zekiriabd_Aspprism2.jpg
نقاط للتوضيح
- في الصفحة الام
*- نلاحظ وجود الوسام <html head body..... الخ اي انها تشبه صفحة الاشتمل العادية .
*- الربط مع ملف الانماط الوجود في مجلد Styles
كود :
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
فمهما كانت الصفحة الابن نستطيع استعمال االنماط الموجودة في هذا الملف التعريف يكود في الصفحة الام فقط او في ملف الاعدادات .
*- تعريف منطقة الرءسية للصفحة يكون في الصفحة الام و الطلب يكون في باقي الصفحات
- التعريف مثلا كتبنا
كود :
<asp:ContentPlaceHolder ID="HeadContent" runat="server"/>
- في الطلب كما نلاحض في الصفحة Default.aspx كان بالشكل
كود :
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"></asp:Content>
*- تعريف منطقة العمل يكون في الصفحة الام كذلك اي اين ستدرج محتويات الصفحات الاخرة
كود :
<div class="main"><asp:ContentPlaceHolder ID="MainContent" runat="server"/></div>
وهي محضورة بين ديف مع نمط معين اما الطلب نجده معرف كمايلي
كود :
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <%--محتوي الصفحة --%>
</asp:Content>
ملاحضة
هذه الاكواد تكتب اليا بمجرد اختيار الصفحة الابن و ربطها مع الام عن طريق chekbox
لأاحض الصورة 2
كود :
http://www.bloghotel.org/uploads/zekiriabd_Aspprism3.jpg
الرد
#7
صفحات اﻷنماط اﻹنسيابية
هناك درس راءع في هذه الرابط لتعلم css
http://www.dahsha.com/uploads/learn-css.pdf
اما كيفية اضافة ملف css في البريزم لاحض الصورة
كود :
http://www.bloghotel.org/uploads/zekiriabd_Aspprism4.jpg
الرد
#8
مثال Datasnap server with prism client
1- انشاء برنامج datasnap server with wizard delphi xe or delphixe2
2- run program server
3- create WebApplication1 with prism
4- (with dataconnection and open connection - run with right click mouse ) create ClientProxy1
5- avr
SQLConnection := Borland.Data.TAdoDbxDatasnapProviderFactory.Instance.CreateConnection() as Borland.Data.TAdoDbxConnection;
SQLConnection.ConnectionString := 'communicationprotocol=http;hostname=localhost;port=8080';
or // full
// SQLConnection.ConnectionString := 'communicationprotocol=http;hostname=localhost;port=80;serverconnection=TServerMethods_ha.GetConnection';
الرد
#9
مثال اله حاسبة بسيط جمع وطرح
datasnap server delphi xe with prism 2.5
كود :
prism client web
//------------------------
namespace WebApplication1;

interface

uses

  System.Web,
  System.Web.UI, Borland, ClientProxy1;

// ,RemObjects.Oxygene,System,RemObjects;System.Collections,//System.DataSnap Data Provider for .NET
type
  _Default = public partial class(System.Web.UI.Page)
    protected method Button1_Click(sender: System.Object; e: System.EventArgs);
method Button3_Click(sender: System.Object; e: System.EventArgs);
method Button2_Click(sender: System.Object; e: System.EventArgs);

end;

implementation

method _Default.Button1_Click(sender: System.Object; e: System.EventArgs);

var
  a, b, s: Double;
  calc: ClientProxy1.TServerMethods_haClient;
SQLConnection := Borland.Data.TAdoDbxDatasnapProviderFactory.Instance.CreateConnection() as Borland.Data.TAdoDbxConnection;
begin

  TextBox_R.Text := 'WELCOME MR HASSAN';
  SQLConnection.ConnectionString := 'communicationprotocol=http;hostname=172.17.177.189;port=8080';
  // SQLConnection.ConnectionString := 'communicationprotocol=http;hostname=localhost;port=80;serverconnection=TServerMethods_ha.GetConnection';
  SQLConnection.Open;
  // TextBox_R.Text:='conn good ';
  try
    // a:=36;b:=4;
    a := Convert.ToDouble(TextBox_a.Text);
    b := Convert.ToDouble(TextBox_b.Text);

    TextBox_R.Text := 'WELCOME MR HASSAN';
    calc := ClientProxy1.TServerMethods_haClient.Create(SQLConnection);
    s := calc.Subtract(a, b);
    TextBox_R.Text := s.ToString;
  finally
    SQLConnection.Close;
  end;
end;

method _Default.Button2_Click(sender: System.Object; e: System.EventArgs);

var
  a, b, s: Double;
  calc: ClientProxy1.TServerMethods_haClient;
SQLConnection := Borland.Data.TAdoDbxDatasnapProviderFactory.Instance.
  CreateConnection() as Borland.Data.TAdoDbxConnection;
begin

  TextBox_R.Text := 'WELCOME MR HASSAN';
  // SQLConnection.ConnectionString := 'communicationprotocol=http;hostname=172.17.177.189;port=8080;serverconnection=TServerMethods_ha.GetConnection';
  SQLConnection.ConnectionString :=
    'communicationprotocol=http;hostname=172.17.177.189;port=8080';
  // SQLConnection.ConnectionString := 'communicationprotocol=http;hostname=172.16.0.190;port=8080;serverconnection=TServerMethods_ha.GetConnection';
  // SQLConnection.ConnectionString := 'communicationprotocol=http;hostname=localhost;port=8080;serverconnection=TServerMethods_ha.GetConnection';
  SQLConnection.Open;
  TextBox_R.Text := 'conn good ';
  try
    // a:=36;b:=4;
    a := Convert.ToDouble(TextBox_a.Text);
    b := Convert.ToDouble(TextBox_b.Text);
    calc := ClientProxy1.TServerMethods_haClient.Create(SQLConnection);
    s := calc.Sum(a, b);
    TextBox_R.Text := s.ToString;
  finally
    SQLConnection.Close;
  end;
end;

method _Default.Button3_Click(sender: System.Object; e: System.EventArgs);
begin
  response.Redirect(" WebForm1.aspx ")
end;

end.
الرد
#10
كود :
add function to datasnap function ServerMethods
//----------------------------------------------------------
function TServerMethods_ha.Sum(a, b: Double): Double;
begin
  Result := a + b;
end;
الرد


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


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف