微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在.net核心中使用wcf服务,以使用services.AddSingleton或services.AddTransient

如何解决在.net核心中使用wcf服务,以使用services.AddSingleton或services.AddTransient

我正在.net核心API项目中使用WCF服务。我遵循的步骤如下
WCF服务中的绑定(用于测试)<add binding="basicHttpsBinding" scheme="https" />

  1. 使用https://docs.microsoft.com/en-us/dotnet/core/additional-tools/dotnet-svcutil-guide?tabs=dotnetsvcutil2x
  2. 创建了一个代理类
  3. 这创建了一个具有接口IService1并代理Service1Client的代理;
  4. 在启动类中,我曾经将接口与类服务绑定。AddSingleton();

WCF服务中的方法端点根据传递来使用WCF服务的参数从数据库获取数据。

我的问题是我不确定应该在哪个上使用services.AddSingleton或services.AddTransient,因为代理类正在使用什么来调用我不确定的方法

如果我创建一个实例,它将被锁定吗?

我用数据库中的1000行和csv中的1000行作为消耗API的参数进行了Jmeter测试,但是在3分钟内没有发现所有锁定都成功。

解决方法

您可以查看servicereference.cs文件,以了解wcf服务中的哪个方法由代理类调用。

enter image description here

然后,我们需要实例化代理类,并通过实例化的代理类调用WCF服务:

ServiceReference.Service1Client service1 = new Service1Client();

enter image description here

,

通过Web api中的此文档,应实例化单个httpclient: https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client#create-and-initialize-httpclient

当然,如果您具有多个具有不同端点的目标服务,则每个服务都需要一个HttpClient(您可以在HttpClient中设置基址)

在您的情况下,生成的客户端应在幕后使用HttpClient。如果可以确定整个生成的客户端是否是线程安全的,则可以将客户端作为Singleton注入,否则请添加为作用域

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。