正在探索Azure的Service Fabric Microservices功能并且非常喜欢它。我在那里托管了一些简单的WCF服务,我可以使用WcfClientCommunicationFactory
类从.NET Framework客户端调用这些服务。一切顺利。
现在我想从.NET Core控制台应用程序调用我的微服务。这些关键字的搜索结果倾向于使用.NET Core来实现实际服务,但我想为客户端使用.NET Core。
.NET Core应用程序可以与Service Fabric微服务进行通信吗?如果是这样,那么.NET Core等同于WcfClientCommunicationFactory
?
答案 0 :(得分:1)
工厂的正确名称为WcfCommunicationClientFactory
,位于Microsoft.ServiceFabric.Services.Communication.Wcf.Client
的Microsoft.ServiceFabric.Services.Wcf
NuGet package命名空间中。但它现在与.Net Core
不兼容,因为整个WCF
方法和服务架构都没有。
Service Fabric Microservices最终是一个REST服务,因此您有三种方法来托管它(from MSDN):
- 没有特定的协议:如果您没有特定的通信框架选择,但想要快速获得并运行,那么理想的选择就是服务{{ 3}},允许对Reliable Services和Reliable Actors进行强类型远程过程调用。这是开始进行服务通信的最简单,最快捷的方式。服务远程处理处理服务地址,连接,重试和错误处理的解析。这适用于C#和Java应用程序。
- HTTP :对于与语言无关的通信,HTTP提供了行业标准选择,其中包含许多不同语言的工具和HTTP服务器,所有这些都由Service Fabric支持。服务可以使用任何可用的HTTP堆栈,包括用于C#应用程序的remoting。使用C#编写的客户端可以使用
ICommunicationClient
和ServicePartitionClient
类,而对于Java,使用Communication ASP.NET Web API的CommunicationClient和FabricServicePartitionClient类。- WCF :如果现有代码使用WCF作为通信框架,则可以将WcfCommunicationListener用于服务器端,将WcfCommunicationClient和ServicePartitionClient类用于客户端。但是,这仅适用于基于Windows的群集上的C#应用程序。有关详细信息,请参阅有关service resolution, HTTP connections, and retry loops。
的文章
注意:您需要WCF-based implementation of the communication stack。用于Visual Studio 2015的.NET Core工具不再更新。
注意#2 :虽然ASP.NET核心应用程序可以在.NET Core或完整的.NET Framework上运行,但Service Fabric服务目前只能在完整的.NET Framework上运行。这意味着在构建ASP.NET Core Service Fabric服务时,仍必须以完整的.NET Framework为目标。因此,ASP.NET Core tools for Visual Studio 2017都没有针对完整的.NET Framework。
ASP.NET Core应用程序可以作为Service Fabric上的guest虚拟机可执行文件托管,无需更改代码,但推荐的方法是使用Kestrel
托管NuGet packages from Service Fabric(ASP.NET Core in a Reliable Service )或WebListener
(NuGet package):
在Service Fabric中发布服务器后,您可以随时随地使用HTTP
协议连接到该服务器 - ,Web Frontend,Angular SPA或简单{{1} } Xamarin,所以客户端不需要定位到完整的.NET Framework ,但服务器是。
一些示例代码:
C#