我正在探索Azure的服务结构微服务功能,并且非常喜欢它。我在那里托管了一些简单的WCF服务,我可以使用.NET类从WcfClientCommunicationFactory框架客户端调用这些服务。一切都很好。
现在我想从一个.NET核心控制台应用程序中调用我的微服务。这些关键字的搜索结果倾向于使用.NET核心来实现实际的服务,但我想为客户端使用.NET核心。
.NET核心应用程序可以与服务架构微服务对话了吗?如果是这样的话,.NET的核心等价于WcfClientCommunicationFactory是什么?
发布于 2017-04-13 17:46:20
工厂的正确名称是WcfCommunicationClientFactory,它位于来自NuGet包的Microsoft.ServiceFabric.Services.Communication.Wcf.Client名称空间中。但目前它与.Net Core不兼容,因为整个WCF方法和服务结构并不兼容。
Service最终是一个REST服务,因此您有三种方法来托管它(来自MSDN):
ICommunicationClient和ServicePartitionClient类,而对于Java来说,对于服务解析、HTTP连接和重试循环则使用CommunicationClient和FabricServicePartitionClient类。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,但是服务器是。
一些示例代码:
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>();
}https://stackoverflow.com/questions/43238974
复制相似问题