我試圖在c#中找到inproc和outproc之間的區別。如果我有一個DLL在服務器上運行,我的問題是它會在inproc和outproc中運行嗎?在性能方面哪個流程更好?inproc和outproc之間的區別
回答
一個inproc服務器運行在與調用應用程序相同的進程中。它接近於一個DLL上的正常函數調用。調用outproc服務器時,數據需要在整個進程邊界進行編組,這是一項昂貴的操作。 inproc服務器速度很快,但它可能會降低您的應用程序。
「打倒你的應用程序」是什麼意思?你可以說得更詳細點嗎?我們正在談論會議還是記錄?我沒有看到OP指定的位置。如果日誌記錄,那麼我假設你的意思是,如果日誌操作失敗,那麼它可能會崩潰整個應用程序,但與out proc有什麼不同呢? – Sinaesthetic
我認爲他意味着類似於如果outproc服務器內存不足,它會崩潰,但程序本身將保持活着並可以重新啓動。例如,std :: vector速度很快,但使用容器進程的堆棧/堆,如果內存不足,則整個程序崩潰,但如果將其包裝在outproc服務器中,則容器程序將保持活動狀態。 – Dmitry
從MSDN
ASP.NET會話狀態支持會話數據幾種不同的存儲選項。每個選項都由SessionStateMode枚舉中的值標識。以下列表描述了可用的會話狀態模式:
InProc模式,它將會話狀態存儲在Web服務器的內存中。這是默認設置。
StateServer模式/ OutProc,它將會話狀態存儲在稱爲ASP.NET狀態服務的單獨進程中。這可確保在重新啓動Web應用程序時保留會話狀態,並使Web會話中的多個Web服務器可以使用會話狀態。
SQLServer模式將會話狀態存儲在SQL Server數據庫中。這可確保在重新啓動Web應用程序時保留會話狀態,並使Web會話中的多個Web服務器可以使用會話狀態。
定製模式,它使您能夠指定自定義存儲提供程序。 關閉模式,禁用會話狀態。
我*想*他正在談論COM,而不是ASP.Net會話狀態。 – tzerb
- 1. Inproc和Outproc會話狀態模式
- 2. ASP.NET中的SessionState中的「InProc」和「stateServer」模式之間的區別
- 3. 之間的〜/和的區別../
- 4. '#','%'和'$'之間的區別
- 5. {!!之間的區別!!}和{{}}
- 6. '+ ='和'= +'之間的區別?
- 7. 「。+」和「。+?」之間的區別
- 8. .eq之間的區別。和==
- 9. #。/和#之間的區別。 ./
- 10. !=和!之間的區別==
- 11. 「%〜dp0」和「。\」之間的區別?
- 12. | =和^ = css之間的區別
- 13. 之間的區別。和#
- 14. ==和case之間的區別?
- 15. 「**/* /」和「** /」之間的區別?
- 16. jQuery - '。'之間的區別和「#」
- 17. 「?1」和「?」之間的區別
- 18. `%in%`和`==`之間的區別
- 19. fmod和%之間的區別
- 20. 之間的區別:+和:+
- 21. 類區域和堆之間的區別
- 22. SPFile和PublishingPage類別之間的區別
- 23. 子類和類別之間的區別?
- 24. System.Timers.Timer Enabled = true和.Start()之間的區別Enabled = true和.Start()之間的區別
- 25. isForeground()和onExposed和onObscured之間的區別
- 26. $ .ajax()和$ .get()和$ .load()之間的區別
- 27. 和intent和setcontentview之間的區別
- 28. Java和C#和.NET之間的區別
- 29. NSthread和NStimer和NSNotifcation之間的區別?
- 30. sys.log()和console.log()和console.error()之間的區別?
哇,這是一個非常廣泛的話題,有很多「取決於」。一個重要的區別是,運行in-proc的代碼可以在相同的地址空間中調用其他方法。如果它是out-proc,則需要對參數進行編組以及跨越進程空間邊界,這會花費時間和cpu。 – Richard