ฉันมีไฟล์ WSDL เก่าและต้องการสร้างเซิร์ฟเวอร์โดยใช้ไฟล์ WSDL นี้
WSDL ถูกสร้างขึ้นจาก ASMX (ฉันคิดว่า แต่ฉันไม่แน่ใจ)
ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?
คำถามเดิมที่ OP คิดว่าเขาจำเป็นต้องสร้างไคลเอนต์โดยใช้ WSDL
ฉันมีไฟล์ WSDL เก่าและต้องการสร้างเซิร์ฟเวอร์โดยใช้ไฟล์ WSDL นี้
WSDL ถูกสร้างขึ้นจาก ASMX (ฉันคิดว่า แต่ฉันไม่แน่ใจ)
ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?
คำถามเดิมที่ OP คิดว่าเขาจำเป็นต้องสร้างไคลเอนต์โดยใช้ WSDL
คำตอบ:
เมื่อใช้ svcutil คุณสามารถสร้างอินเทอร์เฟซและคลาส (สัญญาข้อมูล) จาก WSDL
svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)
สิ่งนี้จะสร้างไฟล์ชื่อ "your.cs" ใน C # (หรือ "your.vb" ใน VB.NET) ซึ่งมีรายการที่จำเป็นทั้งหมด
ตอนนี้คุณต้องสร้างคลาส "MyService" ซึ่งจะใช้อินเทอร์เฟซบริการ (IServiceInterface) - หรืออินเทอร์เฟซบริการต่างๆ - และนี่คืออินสแตนซ์เซิร์ฟเวอร์ของคุณ
ตอนนี้ชั้นเรียนด้วยตัวเองยังช่วยไม่ได้จริงๆคุณจะต้องจัดบริการที่ไหนสักแห่ง คุณต้องสร้างอินสแตนซ์ ServiceHost ของคุณเองซึ่งโฮสต์บริการกำหนดค่าจุดสิ้นสุดและอื่น ๆ - หรือคุณสามารถโฮสต์บริการของคุณภายใน IIS
มีแหล่งข้อมูลที่ดีหากคุณรู้ว่าจะค้นหาอะไร ลองใช้ "Contract First" และ WCF หรือ "WSDL First" และ WCF
นี่คือตัวเลือก:
ReplyAction="*"
จดความคิดเห็นที่พูดคุยเกี่ยวกับ ดูเหมือนว่าคุณต้องกำจัดสิ่งนั้น มีคำอธิบายจากความคิดเห็นนั้นที่ให้เหตุผล แต่ฉันยังไม่ได้อ่าน
ใช้ svcutil.exe กับ/sc
สวิตช์เพื่อสร้างสัญญา WCF สิ่งนี้จะสร้างไฟล์โค้ดที่คุณสามารถเพิ่มลงในโปรเจ็กต์ของคุณ จะมีอินเทอร์เฟซและประเภทข้อมูลทั้งหมดที่คุณต้องการเพื่อสร้างบริการของคุณ เปลี่ยนตำแหน่งเอาต์พุตโดยใช้/o
สวิตช์หรือคุณสามารถค้นหาไฟล์ในโฟลเดอร์ที่คุณรัน svcutil.exe ภาษาเริ่มต้นคือ C # แต่ฉันคิดว่า (ผมไม่เคยพยายามมัน) /l:vb
คุณควรจะสามารถที่จะเปลี่ยนแปลงนี้ใช้
svcutil /sc "WSDL file path"
หาก WSDL ของคุณมีไฟล์ XSD ที่รองรับให้ส่งไฟล์เหล่านั้นเป็นอาร์กิวเมนต์หลัง WSDL
svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"
จากนั้นสร้างคลาสใหม่ที่เป็นบริการของคุณและใช้อินเทอร์เฟซสัญญาที่คุณเพิ่งสร้างขึ้น
คุณสามารถใช้ svcutil.exe เพื่อสร้างรหัสไคลเอนต์ ซึ่งจะรวมถึงคำจำกัดความของสัญญาบริการและสัญญาข้อมูลและสัญญาข้อผิดพลาดที่จำเป็น
จากนั้นเพียงแค่ลบรหัสไคลเอนต์: คลาสที่ใช้สัญญาบริการ จากนั้นคุณจะต้องติดตั้งด้วยตัวคุณเองในบริการของคุณ
เมื่อใช้เครื่องมือ "เพิ่มการอ้างอิงบริการ" ใน Visual Studio คุณสามารถแทรกที่อยู่เป็น:
ไฟล์: ///path/to/wsdl/file.wsdl
และจะโหลดอย่างถูกต้อง