เซิร์ฟเวอร์ SOAP และแอปพลิเคชันไคลเอนต์ VCL + indy สาธิตสำหรับ Delphi XE?


151

Delphi เคยรวมโฟลเดอร์สาธิตสำหรับบริการบนเว็บ แต่ดูเหมือนจะไม่รวมสิ่งนี้อีกต่อไป

ฉันเพิ่งลองโครงการตัวอย่าง Delphi 7 ( SOAPDMServerWADเซิร์ฟเวอร์ที่ไม่มี UI เกือบทั้งหมดและSOAPDMClient) และไม่สามารถทำให้มันทำงานได้แม้ใน Delphi 7

หากใครเคยสาธิตการทำงานที่คล้ายกันใน Delphi XE หรือ Delphi 2010 เหมือนกับการSOAPDMServerWAD+SoapDMClientสาธิตเก่าทำงานใน Delphi XE และอย่างน้อย UI ขั้นต่ำที่มาจากตัวช่วยสร้างแอปพลิเคชันเซิร์ฟเวอร์ Delphi SOAP นั้นจะสมบูรณ์แบบ

อัปเดต:การสาธิตจะปรากฏขึ้นจนถึง Delphi 2010 แต่ใช้ WAD ที่ล้าสมัยแล้วในตอนนี้ (web-app-debugger) ฉันพยายามที่จะย้ายพอร์ตไปยัง Indy ใหม่runtime/web-app-development-harnessing-codeแต่ฉันดูเหมือนจะใช้งานไม่ได้ การสาธิตทำงาน แต่เซิร์ฟเวอร์ไม่มีส่วนต่อประสานกับผู้ใช้และดูเหมือนจะไม่เรียกใช้เซิร์ฟเวอร์ HTTP ใด ๆ (ทดสอบโดยใช้เว็บเบราว์เซอร์ทั่วไปผ่านhttp://localhost:port/URL โดยวิธีลอง googling สำหรับการสาธิตและ URL นี้จะปรากฏขึ้นและ ฉันถามน้อยกว่าหนึ่งชั่วโมงที่ผ่านมาน่ากลัว google

Update2ดูคำตอบของฉันเองด้านล่างนี้ลิงค์กำลังจะมาพร้อมกับรหัสการทำงาน


3
[offtopic] ฉันต้องสร้าง SOAP ไคลเอนต์ที่เรียบง่ายใน Delphi เมื่อสองสามเดือนที่ผ่านมาพิสูจน์แล้วว่าค่อนข้างปวดหัวและสิ้นเปลืองงานผลิตฉันขอแนะนำให้หาทางเลือกอื่นในขณะเดียวกัน
ComputerSaysNo

13
@Dorin - การใช้ผู้นำเข้า WSDL นั้นง่ายมากในการสร้างไคลเอ็นต์ SOAP
Robert Love

8
@ Robert มันไม่ใช่ส่วนที่ทำให้ปวดหัวมันเป็นเอกสารและการขาดการสาธิต ฯลฯ ฉันต้องเรียนรู้มากเกินไปเกี่ยวกับ SOAP สำหรับลูกค้าแบบง่าย ๆ ซึ่งไม่ได้ให้บริการฉันมากเกินไปจากสิ่งที่ฉันเข้าใจ Java เป็นวิธีที่ง่ายขึ้น แต่ยังไม่ได้ลองเลย => ฉันเป็นผู้ใช้เดลฟายที่แข็ง
ComputerSaysNo

5
สบู่ที่ง่ายที่สุดคือ. สุทธิ wcf
ซ่อน

5
มีวิดีโอสอนที่เป็นedn.embarcadero.com/article/40973 ความเกี่ยวข้องหรือไม่
อเล็กซ์

คำตอบ:


39

ผมได้โพสต์ชุดที่สมบูรณ์ของการสาธิตสบู่ในCodeCentral เป็นรายการ 28789

สิ่งเหล่านี้มีการสาธิต SOAP ยุค Delphi 2007 ทุกครั้งจากWebServicesโฟลเดอร์ซึ่งได้รับการอัพเดตสำหรับ Delphi XE และ XE2 รวมถึงการแปลงเซิร์ฟเวอร์ WAD เก่าให้เป็นเซิร์ฟเวอร์ INDY VCL ใหม่ คุณคิดว่ามันน่าประทับใจยกเว้นมันไม่ใช่ มันง่ายมาก เพียงใช้ตัวช่วยสร้างเพื่อสร้างโครงการใหม่จากนั้นเพิ่มส่วนต่อประสานบริการบนเว็บและหน่วยการนำไปใช้งานและหน่วยอื่น ๆ ที่อยู่ในการสาธิตเก่าให้กับโครงการ เมื่อพวกเขาถูกเพิ่มเข้าไปในโครงการพวกเขาก็ทำงาน SOAP Servers พื้นฐานนั้นง่ายต่อการสร้างใน Delphi เมื่อคุณมีตัวอย่างที่ใช้งานได้คุณจะพบว่ามันง่ายที่จะแก้ไขและขยาย

ตัวอย่างที่ดีที่สุดตอบคำถามที่ฉันถามข้างต้นอยู่ในSOAPDataModuleโฟลเดอร์ย่อย

ปัญหาพื้นฐานของการสาธิตจากยุค 2007 นั้นมีสองประการ:

  1. WAD (ดีบักแอปพลิเคชันเว็บ) หายไป คุณต้องสร้างเซิร์ฟเวอร์ใหม่โดยใช้เซิร์ฟเวอร์ Indy เพื่อการสาธิตที่ดีที่สุดประหยัดคุณจากการใช้ WAD (ซึ่งหายไปแล้ว) หรือตั้งค่าสภาพแวดล้อม ISAPI ภายใต้ IIS ซึ่งแทบจะไม่เหมาะสำหรับการสาธิต โครงการสาธิตใหม่ผมทำเรียกว่าSoapDMServerINDYและมันประกอบด้วยโมดูลข้อมูล (datamod_u.pas) ซึ่งเป็นรูปแบบ VCL User Interface หน่วย ( IndyServerVCLFormUnit.pas) และเว็บโมดูล Indy IndyServerWebModule.pasเซิร์ฟเวอร์ที่เรียกว่า

  2. การสาธิต Delphi 2007 เกิดขึ้นเนื่องจากการฝึกหัดใหม่ของการมีโฟลเดอร์ย่อย Debug / Win32 ซึ่งการสาธิตการปฏิบัติการอยู่ในขณะนี้คุณจำเป็นต้องเพิ่มขึ้นอีก ฉันแก้ไขเซิร์ฟเวอร์สาธิตเพื่อเตือนคุณด้วยข้อความแสดงข้อผิดพลาดหากไม่พบไฟล์ข้อมูลช่วยให้คุณประหยัดจากข้อผิดพลาด "การแยกวิเคราะห์ XML" ที่ลึกลับ ฉันได้เพิ่มการตรวจสอบข้อผิดพลาดบางอย่างในเดโมบางอย่างเพื่อที่จะบอกคุณว่าคุณต้องติดตั้งอินเตอร์เบสสำหรับการสาธิตนี้เพื่อให้ทำงานได้เนื่องจากเดโมบางตัวจำเป็นต้องติดตั้งและรัน Interbase และหนึ่งต้องการนามแฝงที่เรียกว่า IBLOCAL และโดยเฉพาะอย่างยิ่งตารางที่เรียกว่าEMPLOYEEมีอยู่

ป้อนคำอธิบายรูปภาพที่นี่

องค์ประกอบของการสาธิตนี้เป็นเซิร์ฟเวอร์ ( SoapDMServerINDYตามรหัสจาก SOAPDMServerWAD) และลูกค้าSOAPDMClientที่เชื่อมต่อกับการสาธิตและมีสองหน้าหนึ่งหน้าจะแสดงการเข้าถึงข้อมูลขั้นพื้นฐานผ่านชุดข้อมูล DBGrid + ชุดที่สอง หน้าแสดงวิธีเรียกใช้เมธอด SOAP แบบกำหนดเอง

ในการใช้การสาธิต: คุณต้องเริ่มเซิร์ฟเวอร์คลิกปุ่มเริ่มแล้วเริ่มไคลเอนต์และคลิกเชื่อมต่อ

ป้อนคำอธิบายรูปภาพที่นี่


1
ไชโยสำหรับความพยายาม! หากคุณไม่สามารถโพสต์การสาธิตคงที่อาจจะเป็น diff / patch
Chris Thornton

8
มันเป็นหลักการเก่าแก่ของชุมชนโอเพนซอร์ซ เกาคันของคุณเองและแบ่งปันผลและหวังว่ามันจะไม่เพียง แต่เป็นประโยชน์ต่อทุกคน แต่สร้างชุมชนเมื่อเวลาผ่านไปที่สามารถทำสิ่งต่าง ๆ ร่วมกันที่เราไม่สามารถทำคนเดียว ดังนั้นโปรดส่งรายงานข้อผิดพลาดถึงฉันหากคุณพบปัญหา
Warren P
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.