从.net核心调用Service Fabric

时间:2017-04-05 18:29:28

标签: wcf azure .net-core azure-service-fabric

正在探索Azure的Service Fabric Microservices功能并且非常喜欢它。我在那里托管了一些简单的WCF服务,我可以使用WcfClientCommunicationFactory类从.NET Framework客户端调用这些服务。一切顺利。

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

.NET Core应用程序可以与Service Fabric微服务进行通信吗?如果是这样,那么.NET Core等同于WcfClientCommunicationFactory

1 个答案:

答案 0 :(得分:1)

工厂的正确名称为WcfCommunicationClientFactory,位于Microsoft.ServiceFabric.Services.Communication.Wcf.ClientMicrosoft.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#编写的客户端可以使用ICommunicationClientServicePartitionClient类,而对于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 FabricASP.NET Core in a Reliable Service )或WebListenerNuGet package):

NuGet package

在Service Fabric中发布服务器后,您可以随时随地使用HTTP协议连接到该服务器 - enter image description hereWeb FrontendAngular SPA或简单{{1} } Xamarin,所以客户端不需要定位到完整的.NET Framework ,但服务器是。

一些示例代码:

C#