NHibernate: Apa perbedaan antara ThreadStaticSessionContext dan WcfOperationSessionContext?

Seperti yang Anda lihat, apa yang akan terjadi jika saya menggunakan WcfOperationSessionContext dalam skenario non-WCF?

Jawaban apa pun akan sangat membantu! Terima kasih!


person Lyon Gu    schedule 29.01.2013    source sumber


Jawaban (1)


Dalam hal ini, nama deskriptif diri WcfOperationSessionContext tidak dapat memberi tahu Anda lebih banyak. Implementasi konteks sesi ini hanya untuk skenario WCF.

Jika Anda membutuhkan lebih banyak, lihat implementasinya di sini:

Ringkasan kelas:

/// <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
...

Lihatlah yang lain untuk lebih memahami apa yang cocok untuk Anda di lingkungan multi-thread Anda:

Salah satu konteks sesi thread akan menjadi pilihan yang lebih baik

Namun seperti yang dapat Anda baca di dokumentasi 2.3. Sesi Kontekstual, terserah Anda untuk mengikat dan melepas ikatan ISession contoh:

  • NHibernate.Context.ThreadStaticSessionContext (...) Anda bertanggung jawab untuk mengikat dan melepaskan ikatan instance ISession dengan metode statis kelas CurrentSessionContext.

  • NHibernate.Context.WcfOperationSessionContext (...) Anda bertanggung jawab untuk mengikat dan melepaskan ikatan instance ISession dengan metode statis kelas CurrentSessionContext.

person Radim Köhler    schedule 29.01.2013
comment
Terima kasih.Maaf atas Deskripsi bodoh saya. Sebenarnya, saya ingin tahu di lingkungan multi-thread,**ThreadStaticSessionContext** mungkin menghasilkan beberapa thread memiliki sesi yang sama dan WcfOperationSessionContext akan menghasilkan juga< /b>? - person Lyon Gu; 29.01.2013
comment
Jika Anda mendapatkan sesi yang sama untuk beberapa thread, maka Anda melakukan sesuatu yang salah. Context akan menyelenggarakan sesi tersebut, namun Anda tetap bertanggung jawab untuk mengikat dan melepaskannya dengan benar. - person Oskar Berggren; 29.01.2013
comment
Lyon Gu: TIDAK, inti dari konteks sesi ThreadStatic adalah, setiap thread menyimpan instance Sesinya. Hanya utas itu yang berfungsi dengannya. Namun Anda tetap harus mengelola operasi pengikatan dan pelepasan ikatannya. Baca ini untuk mengetahui lebih lanjut stackoverflow.com/a/855602/1679310. - person Radim Köhler; 29.01.2013
comment
@Radim Köhler: Terima kasih. Saya memiliki beberapa kesalahpahaman tentang konteks sesi ThreadStatic. Dan tautannya juga sangat membantu :) - person Lyon Gu; 30.01.2013
comment
@Oskar Berggren: Terima kasih. Saya telah melakukan hal yang salah...Sangat membantu. :) - person Lyon Gu; 30.01.2013