NHibernate: อะไรคือความแตกต่างระหว่าง ThreadStaticSessionContext และ WcfOperationSessionContext

อย่างที่คุณเห็น จะเกิดอะไรขึ้นหากฉันใช้ WcfOperationSessionContext ในสถานการณ์ที่ ไม่ใช่ WCF

คำตอบใด ๆ จะเป็นประโยชน์! ขอบคุณ!


person Lyon Gu    schedule 29.01.2013    source แหล่งที่มา


คำตอบ (1)


ในกรณีนี้ ชื่อที่ สื่อความหมาย WcfOperationSessionContext ไม่สามารถบอกคุณได้มากกว่านี้ การใช้งานบริบทของเซสชันนี้มีไว้สำหรับสถานการณ์ WCF เท่านั้น

หากคุณต้องการข้อมูลเพิ่มเติม โปรดดูการใช้งานที่นี่:

สรุปชั้นเรียน:

/// <summary>
/// Provides a <see cref="ISessionFactory.GetCurrentSession()">current session</see>
/// for the current OperationContext in WCF. 
/// Works only during the lifetime of a WCF operation.
/// </summary>
public class WcfOperationSessionContext : MapBasedSessionContext
...

ลองดูรายการอื่นๆ เพื่อทำความเข้าใจเพิ่มเติมว่าอะไรที่เหมาะกับคุณในสภาพแวดล้อมแบบมัลติเธรด:

บริบทเซสชันเธรดอย่างใดอย่างหนึ่งจะเป็นตัวเลือกที่ดีกว่า

แต่อย่างที่คุณสามารถอ่านได้ใน เอกสารประกอบ 2.3 เซสชันตามบริบท ขึ้นอยู่กับคุณเสมอที่จะผูกและเลิกผูก ISession อินสแตนซ์:

  • NHibernate.Context.ThreadStaticSessionContext (...) คุณมีหน้าที่รับผิดชอบในการผูกและเลิกผูกอินสแตนซ์ ISession ด้วยวิธีการคงที่ของคลาส CurrentSessionContext

  • NHibernate.Context.WcfOperationSessionContext (...) คุณมีหน้าที่รับผิดชอบในการผูกและเลิกผูกอินสแตนซ์ ISession ด้วยวิธีการคงที่ของคลาส CurrentSessionContext

person Radim Köhler    schedule 29.01.2013
comment
ขอบคุณ ขออภัยสำหรับคำอธิบายที่งี่เง่าของฉัน จริงๆ แล้ว ฉันต้องการทราบในสภาพแวดล้อมแบบหลายเธรด **ThreadStaticSessionContext** อาจส่งผลให้ หลายเธรดมีเซสชันเดียวกัน และ WcfOperationSessionContext จะส่งผลให้ เกินไป< /ข>? - person Lyon Gu; 29.01.2013
comment
หากคุณได้รับเซสชันเดียวกันสำหรับหลายเธรด แสดงว่าคุณกำลังทำอะไรผิด บริบทจะจัดเซสชัน แต่คุณยังคงมีหน้าที่รับผิดชอบในการผูกและเลิกผูกเซสชันอย่างถูกต้อง - person Oskar Berggren; 29.01.2013
comment
Lyon Gu: ไม่ สาระสำคัญของบริบทเซสชัน ThreadStatic ก็คือ ทุกเธรดจะเก็บอินสแตนซ์เซสชันไว้ เฉพาะเธรดนั้นเท่านั้นที่ใช้งานได้ แต่คุณยังต้องจัดการการดำเนินการผูกและเลิกผูก อ่านข้อมูลเพิ่มเติมเกี่ยวกับstackoverflow.com/a/855602/1679310 - person Radim Köhler; 29.01.2013
comment
@ Radim Köhler: ขอบคุณ ฉันมีความเข้าใจผิดเกี่ยวกับบริบทเซสชันของ ThreadStatic และลิงก์ก็มีประโยชน์มากเช่นกัน :) - person Lyon Gu; 30.01.2013
comment
@Oskar Berggren: ขอบคุณฉันทำผิดไปแล้ว ... มีประโยชน์มาก :) - person Lyon Gu; 30.01.2013