สำหรับบทความที่จะนำเสนอต่อไปนี้ จะเป็นการเขียนโปรแกรมสร้างเป็น
Service หรือเรียกได้อีกอย่างว่า เป็นการสร้างโปรแกรม ที่ให้บริการไว้บน
Server เพื่อให้ฝั่ง Client (ผู้ใช้บริการ) เข้ามาเรียกใช้บริการต่างๆที่มี
ตัวอย่างของ Service ต่างๆบน Server จะมีอยู่หลากหลาย แต่ที่คุ้นๆ สำหรับเราๆท่านๆ
ได้แก่ Web,FTP,Email ซึ่งอาจจะมีบางท่าน อาจจะสงสัยขึ้นมาว่า Web,FTP,Email
มันเป็น Application ไม่ใช่หรือ? คำตอบคือใช่ ครับ แต่เป็น Application ที่ทำงานร่วมกับ
Service ที่มีอยู่บน Server
Service Application จะมีการทำงานในลักษณะที่เป็น
Background คือจะมีการเริ่มการทำงานบนระบบปฏิบัติการ (ฝั่ง Server ) ทันทีโดยที่
ผู้ใช้ไม่รู้ และจะทำงานไปเรื่อยๆ เพื่อรอรับการเรียกใช้จาก Client ดังตัวอย่างโปรแกรมที่ผมจะนำเสนอต่อไปนี้
Service Application ที่จะสร้างกันครั้งนี้ จะมีหลังการทำงานคือ รอรับการร้องขอจาก
Client ที่ Port 81 แล้วทำการบันทึกการร้องขอนั้นไว้ในไฟล์ที่ชื่อ Weblogxxxx.log
ครับ
กล่าวนำกันมาก็พอสมควรแล้ว คราวนี้ก็จะมาถึงขั้นตอนของการสร้างโปรแกรมตัวอย่างกันแล้วนะครับ
สำหรับโปรแกรมที่ได้ จำเป็นที่จะต้องติดตั้งใช้งานได้กับ Windows NT/2000/XP
เท่านั้น เอาละครับเริ่มกันเลยดีกว่า โดยเริ่มจากการเปิดโปรแกรม Delphi แล้วทำตามขั้นตอนดังนี้
1. เลือกสร้าง Service Application
จากเมนู File->News->Other... แล้วทำการเลือก Service Application
จาก แท็ป New ดังแสดงในรูปด้านล่าง
2. ทำการเพิ่ม Control ที่ชื่อ ServerSocket
ซึ่งอยู่ในหมวด Internet Component Parllet ดังรูป
3. ในส่วนของโค้ดให้ทำการ เพิ่มการประกาศตัวแปรดังรูป
4. ทำการเลือก Control ServerSocket1
ที่ได้ทำการเพิ่มเข้ามาในขั้นตอนที่ 2 แล้วให้ทำการป้อนโค้ดต่อไปนี้ลงใน
ส่วนของ Event OnClientRead
procedure TService1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
Buffer: PChar;
begin
Buffer := nil;
while Socket.ReceiveLength > 0 do begin
Buffer := AllocMem(Socket.ReceiveLength);
try
Socket.ReceiveBuf(Buffer^, Socket.ReceiveLength);
Stream.Write(Buffer^, StrLen(Buffer));
finally
FreeMem(Buffer);
end;
Stream.Seek(0, soFromBeginning);
Stream.SaveToFile('c:\Weblog' + IntToStr(ServiceThread.ThreadID) + '.log');
end;
end;
|
5. สุดท้ายให้คุณเลือกที่ Control
Service1 แล้วทำการเพิ่มโค้ดต่อไปนี้ลงในส่วนของ Event OnExecute
procedure TService1.ServiceExecute(Sender: TService);
begin
Stream := TMemoryStream.Create;
try
ServerSocket1.Port := 81;
ServerSocket1.Active := True;
while not Terminated do begin
ServiceThread.ProcessRequests(True);
end;
ServerSocket1.Active := False;
finally
Stream.Free;
end;
end;
|
6. เอาละครับเมื่อผ่านมาถึงขั้นตอนนี้กันแล้ว
ก็ให้ตรวจสอบว่าพิมพ์โค้ดถูกต้องหรือไม่ ต่อจากนั้นให้ทำการบันทึกไฟล์ Project
เป็นชื่อ DelphiService แล้วทำการCompile โปรแกรม โดยการกดปุ่ม F9
7. หลังจากการ Compile แล้วเราจะได้ไฟล์
DelphiService.exe มาแล้วครับ ขั้นตอนต่อไป ก็จะเป็นการติดตั้ง Service Application
ให้กับ Server ซึ่งสามารถทำได้โดย เรียกใช้โปรแกรม โดยผ่านทาง Command Prompt
เช่น DelphiService /install (สำหรับการติดตั้ง) หรือ DelphiService /uninstall
(สำหรับการถอดถอนโปรแกรม) ดังรูป
8. ต่อไปจะเป็นขั้นตอนของการเรียกใช้
Service ที่เราได้สร้างขึ้น โดยเลือกได้จาก Control Panel->Administrative
Tools->Services จะปรากฏหน้าต่างที่แสดง Service ทั้งหมดที่อยู่บน Server
รวมทั้ง Service ที่เราได้เขียนขึ้นมาเองที่ชื่อ Server1 ดังรูป
9. ให้ทำการคลิก Start เพื่อให้ Service
เริ่มทำงาน หลังจากนั้นก็ให้ทำการเปิด WebBrowser พิมพ์ URL =http://127.0.0.1:81
เพื่อเรียกใช้บริการที่เราเขียนขึ้น (127.0.0.1 คือ IP Loop Back ,81 คือ
หมายเลข Port ที่ให้บริการ) ดังรูป
10. หลังจากคุณได้ทำการเปิด URL ดังกล่าวแล้ว
ให้คุณเปิดหาไฟล์ที่ชื่อ Weblogxxxx.log (xxxx=หมายเลขใดๆ) ที่อยู่ใน C:\
ซึ่งเป็นไฟล์ที่ Service Program ที่เราได้เขียนขึ้น สร้างขึ้นมาให้ เมื่อมี
Client เรียกใช้ Service โดยไฟล์ดังกล่าวจะเก็บข้อมูลที่ Client ส่งมาให้
ดังแสดงในรูป
คุณจะเห็นได้ว่าภายในไฟล์ Weblogxxxx.log
นั้น จะเก็บข้อมูลที่ WebBrowser ของ Client ส่งมา ยัง Server เพื่อขอข้อมูล
ทิ้งทาย
หากคุณๆต้องการนำไปดัดแปลงใช้ในงานอะไร
ก็เชิญตามสะดวกกันนะครับ หากมีข้อแนะนำ,จ้างเขียนโปรแกรม หรือข้อสงสัยใด
เมล์ติดต่อกันมาได้ครับ แล้วพบกันใหม่กับ 9'M :-P |