首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从.net核心调用服务结构

从.net核心调用服务结构
EN

Stack Overflow用户
提问于 2017-04-05 18:29:27
回答 1查看 1.1K关注 0票数 1

我正在探索Azure的服务结构微服务功能,并且非常喜欢它。我在那里托管了一些简单的WCF服务,我可以使用.NET类从WcfClientCommunicationFactory框架客户端调用这些服务。一切都很好。

现在我想从一个.NET核心控制台应用程序中调用我的微服务。这些关键字的搜索结果倾向于使用.NET核心来实现实际的服务,但我想为客户端使用.NET核心。

.NET核心应用程序可以与服务架构微服务对话了吗?如果是这样的话,.NET的核心等价于WcfClientCommunicationFactory是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-04-13 17:46:20

工厂的正确名称是WcfCommunicationClientFactory,它位于来自NuGet包Microsoft.ServiceFabric.Services.Communication.Wcf.Client名称空间中。但目前它与.Net Core不兼容,因为整个WCF方法和服务结构并不兼容。

Service最终是一个REST服务,因此您有三种方法来托管它(来自MSDN):

  • :如果您没有特定的通信框架选择,但是您想要快速启动和运行一些东西,那么您理想的选择是服务遥距,它允许强类型的远程过程需要可靠的服务和可靠的代理。这是开始服务通信的最简单和最快的方法。服务远程处理处理服务地址、连接、重试和错误处理的解析。这对于C#和Java应用程序都是可用的。
  • HTTP :对于与语言无关的通信,HTTP提供了一个行业标准的选择,提供了多种不同语言中可用的工具和HTTP服务器,所有这些都得到了Service的支持。服务可以使用任何可用的HTTP堆栈,包括ASP.NET网络API用于C#应用程序。用C#编写的客户端可以利用ICommunicationClientServicePartitionClient类,而对于Java来说,对于服务解析、HTTP连接和重试循环则使用CommunicationClient和FabricServicePartitionClient类。
  • WCF :如果您的现有代码使用WCF作为您的通信框架,那么您可以在服务器端使用WcfCommunicationListener,对于客户机可以使用WcfCommunicationClient和ServicePartitionClient类。但是,这仅适用于基于Windows的集群上的C#应用程序。有关基于WCF的通信栈实现的详细信息,请参阅本文。

Note:你需要用于Visual 2017的ASP.NET核心工具。Visual 2015的.NET核心工具不再更新。

备注2:虽然ASP.NET核心应用程序可以在.NET核心上或在完整的.NET框架上运行,但是Service服务目前只能在完整的.NET框架上运行。这意味着在构建ASP.NET核心服务结构服务时,仍然必须针对整个.NET框架。因此,没有一个服务结构中的NuGet包是针对完整的.NET框架的。

ASP.NET核心应用程序可以作为客户可执行文件托管在Service上,没有任何代码更改,但推荐的方法是使用Kestrel (NuGet包)或WebListener (NuGet包)托管可靠服务中的ASP.NET核心

在Service中发布服务器之后,您可以使用HTTP协议从任何地方连接到它-- Web前端角SPA扎马林或简单的C# HttpClient,这样客户端就不需要被定位到完整的.NET Framework,但是服务器是。

一些示例代码:

代码语言:javascript
复制
static HttpClient client = new HttpClient();

client.BaseAddress = new Uri(MICRO_SERVICE_URI);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = await client.GetAsync(path);
if (response.IsSuccessStatusCode)
{
    // deserialize the result from JSON
    var result = await response.Content.ReadAsAsync<DtoClass>();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43238974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档