C# .NET WebService IPC-是否应尽可能减少一些昂贵的操作?

C# .NET WebService IPC-是否应尽可能减少一些昂贵的操作?,c#,.net,performance,web-services,ipc,C#,.net,Performance,Web Services,Ipc,我正在研究解决问题的几种不同方法:客户端请求工作,完成一些工作,然后返回一个结果(确定/错误) 一个.NETWeb服务看起来绝对是一个不错的选择,我唯一的问题是“东西”将涉及为每个请求建立和中断一个会话。将“东西”抽象到一个应用程序中(这将保持单个会话处于活动状态,并处理来自web服务的请求)似乎是正确的方法吗?(若有,沟通方式如何) 工作时间可以忽略不计,我担心的是,如果我为每个作业创建/删除一个会话,可能会对相关事务服务器造成冲击 某种形式的IPC或基于套接字的通信在这里是可行的解决方案吗

我正在研究解决问题的几种不同方法:客户端请求工作,完成一些工作,然后返回一个结果(确定/错误)

一个.NETWeb服务看起来绝对是一个不错的选择,我唯一的问题是“东西”将涉及为每个请求建立和中断一个会话。将“东西”抽象到一个应用程序中(这将保持单个会话处于活动状态,并处理来自web服务的请求)似乎是正确的方法吗?(若有,沟通方式如何)

工作时间可以忽略不计,我担心的是,如果我为每个作业创建/删除一个会话,可能会对相关事务服务器造成冲击

某种形式的IPC或基于套接字的通信在这里是可行的解决方案吗

非常感谢您的想法/评论/经历

编辑: 经过进一步研究,似乎在Windows服务中托管WCF服务可能是一种更好的方式…

好了,我们开始:

  • 不要为每个请求设置新的通信通道。客户端/服务器端使用WCF实现,并确保客户端不会每次调用都获得新的procxy;)尤其是HTTPS通道设置非常昂贵

  • 不要调用服务;)就这么简单-尽可能少打电话。使粗糙的接口优化为不进行多次调用。允许对结果进行批处理。例如,“GetInvoice”可以是“GetDocuments”-不仅返回发票,而且使用多个ID返回多个文档。30张发票的列表从30个电话变成1个电话。否则消息传递总线方法可能会起作用——我使用这样的方法,每次调用最多传输1024条消息

  • 如果您有大量负载,请尽量不要使用web服务。使用WCF和NetTcp绑定(它是二进制的,不使用HTTP,所以它不是web服务)。HTTP的开销是巨大的——看看谷歌,有人做了一个测试,我们说网络tcp有时要快900倍。特别是如果您很少工作,并且失去了大量用户,这可能会增加可伸缩性。负面-您在客户端只兼容WCF,不再使用“Web服务”


这几乎是你所能做的。不同的损失,但这就是如何提高性能;)如果您谈到纯IPC,考虑使用命名管道,甚至NET.TCP命名管道非常有效(在进程之间使用共享内存),但限于.NET实现中的同一台机器。

谢谢ToToM,非常感谢。