ใช้ IExtensibleDataObject บนคลาส Base

ขณะนี้เรามีบริการ WCF หลายอย่างที่เปิดเผยโมเดลโดเมนของเราโดยตรงผ่านสาย กล่าวอีกนัยหนึ่ง เราไม่มีเลเยอร์ของ DTO ที่จะแมประหว่างโดเมนและเลเยอร์บริการของเรา ฉันไม่มีทางเลือกนอกจากตกแต่งออบเจ็กต์โดเมนของเราโดยตรงด้วย [DataContract] และ [DataMember] ฉันต้องการใช้ IExtensibleDataObject กับออบเจ็กต์โดเมนทั้งหมดของเราที่เปิดเผยบนเส้นลวด ไม่มีใครเห็นสิ่งผิดปกติในการใช้ IExtensibleDataObject บนคลาสพื้นฐานหรือไม่ ดังนั้นฉันจะมี:

[DataContract]
public EntityBase:IExtensibleDataObject{///IExtensibleDataObject Impl}

[DataContract] 
public Person:EntityBase{}

[DataContract]
public Employee:Person{}

ขอบคุณล่วงหน้า


person WcfDev    schedule 11.01.2010    source แหล่งที่มา
comment
รหัสของคุณควรใช้งานได้ดี ที่จริงแล้ว หากคุณดูโค้ดที่สร้างโดย svcutil คุณจะเห็นโค้ดที่ดูเหมือนโค้ดของคุณ โปรดดูข้อมูลเพิ่มเติมที่ลิงก์นี้: msdn.microsoft com/en-us/library/   -  person Kwal    schedule 12.01.2010


คำตอบ (1)


ขอบคุณแมตต์ ฉันเดาว่าฉันรู้ว่ามันใช้งานได้ดี แต่คำถามของฉันเกี่ยวข้องกับการออกแบบ SOA มากกว่า ฉันรู้ว่าในโลก OO สิ่งนี้เป็นเรื่องปกติ แต่เนื่องจากอ็อบเจ็กต์โดเมนของฉันยังทำหน้าที่เป็น DTO ฉันจึงกังวลว่าการเพิ่มสายโซ่การสืบทอดนี้จะนำไปสู่ปัญหาที่ตามมา มีใครใช้ IExtensibleDataObject บ้างไหม หากเป็นเช่นนั้น คุณกำลังใช้งาน IExtensibleDataObject กับสัญญาข้อมูลทั้งหมดของคุณหรือบนคลาสพื้นฐานหรือไม่

person Community    schedule 12.01.2010
comment
ฉันขอโทษที่ฉันเข้าใจผิดสิ่งที่คุณถาม จากมุมมองของ SOA ล้วนๆ ไม่พึงปรารถนาที่จะมีกลไกเช่น IExtensibleDataObject เนื่องจากสามารถปกปิดสิ่งต่าง ๆ จากมุมมองของสัญญาได้ ที่ถูกกล่าวว่าฉันคิดว่าความคิดนี้เป็นหนึ่งในความสะดวกสบาย นี่เป็นโพสต์ที่ดีที่มีทั้งข้อดี (ตัวโพสต์เอง) และข้อเสีย (ความคิดเห็นแรก): bloggingabout.net/blogs/vagif/archive/2009/03/29/ - person Kwal; 15.01.2010