سلام به عزیزان دنبال کننده تاپیک... 
در پست قبلی کامپوننت TSQLConnection رو معرفی کردم. این کامپوننت در گروه dbExpress قرار داره اما کاربردش خیلی بیشتر از یک دیتابیس کانکشن ساده هست. کاربرد اصلی این کامپوننت برای کار با DataSnap در سمت کلاینت بوده و یکی از مهمترین و ضروری ترین کامپوننتهای خانواده DataSnap به شمار میره.
این کامپوننت میتونه کلاسهای سمت سرور رو برای کلاینت ایجاد کنه تا کلاینت با استفاده از توابع ایجاد شده در یک یونیت مربوط به خودش بتونه همون توابع رو در سرور صدا بزنه...
برای اینکه با اهمیت این مساله آشنا بشین یک برنامه ساده رو مثال میزنم.
البته برخی قسمت ها رو فعلا توضیح نمیدم تا از مسیر اصلی منحرف نشیم و در جای خودش آموزش میدم. فعلا فقط میخوایم روی TSQLConnection تمرکز کنیم
میخواهیم یک برنامه ماشین حساب سرور داشته باشیم که چهار عمل اصلی ریاضی ( + - * / ) رو سمت سرور انجام بده و نتیجه رو به کلاینت برگردونه...
نرم افزار سرور رو اینطور شروع میکنیم:
1- در دلفی مسیر منوی File->New->Other رو استفاده کنید.
2- دنبال شاخه DataSnap بگردید و مثل شکل زیر گزینه DataSnap Server رو انتخاب کنید (اون دو گزینه دیگه رو بعدا آموزش میدم که چی هست) و تایید رو بزنید.
1.jpg
3- فعلا میخوایم با ساده ترین حالت ممکن شروع کنیم. پس در این مرحله گزینه Console Application رو انتخاب کنید و برید مرحله بعد.
2.jpg
4- همونطور که در شکل زیر میبینید به مرحله انتخاب تکنولوژیهای مورد نیاز رسیدیم. فعلا کاری با این نداریم و با همون حالت پیشفرض (یعنی tcp/ip) و بدون استفاده از سایر امکانات کار میکنیم (این پنجره نیاز به آموزش بیشتری داره که بعدا تک تک موارد رو مفصل توضیح میدم)
3.jpg
5- پورت TCP/IP رو اینجا مشخص میکنیم. یعنی پورتی که کلاینت ها بتونن با سرور ارتباط بگیرن. پیشفرض رو همون 211 میزاریم و میریم مرحله بعد.
4.jpg
6- در مرحله بعد 3 تا گزینه مشاهده میکنیم. اینجا برای اینکه بتونیم استاندارد ترین حالت رو داشته باشیم و خودمون رو هم تو زحمت کدنویسی های اضافه نندازیم گزینه سوم TDSServerModule رو انتخاب
میکنیم و پایان رو میزنیم تا فرم ها و یونیت های لازم ایجاد بشن.
5.jpg
پروژه ای رو که ایجاد شده یک جایی ذخیره کنید. من پروژه رو به اسم CalcServer ذخیره کردم.
چهار تا فایل برای شما ایجاد میشه. باید بریم سراغ یونیت ServerMethodsUnit1 و داخلش رو ببینیم:
unit ServerMethodsUnit1;
interface
uses System.SysUtils, System.Classes, System.Json,
DataSnap.DSProviderDataModuleAdapter,
Datasnap.DSServer, Datasnap.DSAuth;
type
TServerMethods1 = class(TDSServerModule)
private
{ Private declarations }
public
{ Public declarations }
function EchoString(Value: string): string;
function ReverseString(Value: string): string;
end;
implementation
{$R *.dfm}
uses System.StrUtils;
function TServerMethods1.EchoString(Value: string): string;
begin
Result := Value;
end;
function TServerMethods1.ReverseString(Value: string): string;
begin
Result := System.StrUtils.ReverseString(Value);
end;
end.
همونطور که میبینید در این یونیت 2 تا متد بصورت نمونه و اتوماتیک ایجاد شده: ReverseString و EchoString
ما میخوایم متد Calc رو برای مثال خودمون اضافه کنیم. قبلش برای ساده شدن کدها این متد های نمونه رو حذف میکنم.
unit ServerMethodsUnit1;
interface
uses System.SysUtils, System.Classes, System.Json,
DataSnap.DSProviderDataModuleAdapter, DataSnap.DSServer, DataSnap.DSAuth;
type
TServerMethods1 = class(TDSServerModule)
private
{ Private declarations }
public
{ Public declarations }
function Calc(Num1, Num2: Double; Oprt: Integer): Double;
end;
implementation
{$R *.dfm}
uses System.StrUtils;
function TServerMethods1.Calc(Num1, Num2: Double; Oprt: Integer): Double;
begin
Result := 0;
case Oprt of
0:
Result := Num1 + Num2;
1:
Result := Num1 - Num2;
2:
Result := Num1 * Num2;
3:
if Num2 <> 0 then
Result := Num1 / Num2;
end;
end;
end.
برنامه سمت سرور به همین راحتی انجام شد... اجراش میکنیم و میزاریم فعلا همینجوری باز بمونه
6.jpg