Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在WCF C#应用程序中模拟并发或多线程_C#_Wcf - Fatal编程技术网

在WCF C#应用程序中模拟并发或多线程

在WCF C#应用程序中模拟并发或多线程,c#,wcf,C#,Wcf,我正在使用WCF架构为酒店预订系统开发一个面向服务的应用程序。它有以下三个组成部分: 1.WCF服务,具有用于调用房间预订模块的服务和数据契约。 2.WCF主机,保存客户端的服务访问日志 3.具有酒店预订UI的WCF客户端 我正在寻找在具有以下特性的应用程序中实现并发的指导原则: 1.一次只能受理一项请求。 2.如果收到多个请求,则应使用锁/互斥锁/信号量同步这些请求 编码指南应该是有用的 我认为这是外部资源的分配问题,例如数据库访问、单个文件上的I/O。WCF支持事务并在客户端传输它。当其他客

我正在使用WCF架构为酒店预订系统开发一个面向服务的应用程序。它有以下三个组成部分: 1.WCF服务,具有用于调用房间预订模块的服务和数据契约。 2.WCF主机,保存客户端的服务访问日志 3.具有酒店预订UI的WCF客户端

我正在寻找在具有以下特性的应用程序中实现并发的指导原则: 1.一次只能受理一项请求。 2.如果收到多个请求,则应使用锁/互斥锁/信号量同步这些请求


编码指南应该是有用的

我认为这是外部资源的分配问题,例如数据库访问、单个文件上的I/O。WCF支持事务并在客户端传输它。当其他客户端试图访问数据库时,我们可以使用事务锁定对数据库的访问。

此外,我们还可以使用共享锁来锁定服务实例,占用所有资源,以免其他实例访问服务,请参考下面的代码

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
 ConcurrencyMode = ConcurrencyMode.Multiple)]
class MyService : IMyContract
{
 public void MyMethod()
 {
 lock(typeof(MyService))
 {
 ...
 MyResource.DoWork();
 ...
 }
 }
}
static class MyResource
{
 public static void DoWork()
 {
 lock(typeof(MyService))
 {
 ...
 }
 }
}
请参阅以下链接,第8章(并发管理),资源和服务,死锁避免。

下面是一个关于并发模式的官方文档,旨在解决多个用户的访问冲突。

使用该服务的客户是否希望直接得到答复?因为这将无法扩展,并且无法处理许多请求,如果它们花费足够长的时间,客户端在等待轮到它们时可能会遇到超时。使用某种排队方式可能会更好,但是,在单一模式下有允许多个客户端请求的并发控制选项。我更关心的是如何同步处理这些请求。据我所知,实现并发的范围非常有限,并且仅限于客户端的不同实例?