WCF线程安全性问题有所解决

开发 开发工具
WCF线程的安全性一直都是开发人员所担心的问题。不过在技术不断创新的背景下,这一问题也有所解决。在这里我们将会做一个详细介绍。

WCF开发工具在开发领域中占据着一个比较重要的地位。它的出现可以帮助开发人员打造一款跨平台的企业级解决方案。在这里我们将会通过对WCF线程的了解来更加深入的对这一工具有一个了解。#t#

虽然有许多人对WCF线程表示怀疑,但在年复一年的不断发展中,他的安全性也在不断提高。保障WCF线程正常运行是完全有可能的,但前提是要深入理解到底什么是WCF线程,及他是怎么运作的。

对于这些操作,任意创建一个新的线程来执行都是等效的。但是有些情况下,有些操作却只能在固定的线程下执行。比如,在GUI应用下,对控件的访问就需要在创建该控件的线程下执行;

或者我们在某个固定的线程中通过TLS(Thread Local Storage)设置了一些Context信息,供具体的操作使用,我们把操作和某个固定的线程的依赖称为线程关联性(Thread Affinity)。

对应WCF来说,无论是host一个service,还是在调用service时制定callback,在默认的情况下,service和callback的操作将自动和当前的SynchonizationContext进行关联(如何有的话)。

也就是说,如过我们的service被host到Windows Form application下,那么service的操作将在UI 线程下执行;同理,如何我们在一个Windows Forms UI线程下调用duplex service并制定callback,那么callback的最终执行将在UI线程。

关于WCF线程关联性的控制,可以通过ServiceBehavior或者CallbackBehavior的UseSynchronizationContext属性进行设定,该属性默认为true,这正式WCF默认具有线程关联性的原因。

现在我们来实现我们的第二套方案:让Callback的执行不必绑定到UI线程。为此我们只需要加上如何的CallbackBehavior attribute就可以了

 

  1. namespace Artech.ThreadAffinity.Clients   
  2. {   
  3. [CallbackBehavior(UseSynchronizationContext = false)]   
  4. public class CalculateCallback : ICalculateCallback   
  5. {   
  6. public static TextBox ResultPanel;   
  7. #region ICalculateCallback Members   
  8. public void DisplayResult(double result)   
  9. {   
  10. ResultPanel.Text = result.ToString();   
  11. }   
  12. #endregion   
  13. }   
  14. }  

以上就是对WCF线程的相关介绍。

责任编辑:曹凯 来源: qqread.com
相关推荐

2015-04-21 10:21:49

2021-10-12 16:11:19

区块链安全比特币

2013-04-10 10:54:13

Hadoop大数据大数据安全

2011-01-10 10:45:09

2023-09-28 08:51:58

Java数据

2009-07-21 08:45:57

Google操作系统Chrome系统安全性

2009-11-06 11:10:01

2012-09-29 10:22:36

2018-02-27 10:49:53

5G迁移安全

2009-07-21 10:17:06

Chrome操作系统安全性

2018-07-16 15:31:15

2010-03-11 15:03:47

2012-10-25 13:57:46

2021-03-18 14:47:42

Jenkins git submodu代码

2012-04-12 11:28:04

2009-12-07 16:48:33

WCF 安全性

2009-12-22 18:52:06

WCF安全性

2009-09-23 09:19:23

2010-01-13 11:27:06

C++安全性

2010-03-19 15:32:01

点赞
收藏

51CTO技术栈公众号