使用 Asp.Net 的微服务
Posted
技术标签:
【中文标题】使用 Asp.Net 的微服务【英文标题】:Microservices using Asp.Net 【发布时间】:2017-06-04 09:33:44 【问题描述】:看了this great article之后,我想到了将我们的平台迁移到微服务架构。
我们的堆栈是服务器上的 Asp.Net Web API (Rest...)。 Angular 2 在前面。
我想进行一点概念验证,以检查我们是否应该继续沿着这条路走下去。
就我的理解而言,我需要从我们的网络应用程序中提取一些块并将其分割成微服务。至于开始,我想拿两个屏幕,“用户”和“购买历史”(每个都太大而不能成为微服务,但这只是为了 POC)并将它们中的每一个都创建为微服务.
我读到 UI 应该是微服务的一部分,所以我应该为它们中的每一个创建一个新的 Angular 2 应用程序吗?
如果是这样,我应该使用rest来调用呈现的html吗?
【问题讨论】:
【参考方案1】:前端和后端 API,两个服务(组件)——它已经是某种微服务架构。问题是你的组件有多大,它们有什么样的逻辑,如果你将一些逻辑拆分到不同的服务,你会有什么好处?
每个微服务架构,系统的每个服务(组件)都应该有一些专用的逻辑(域),解决一些相关的问题,将数据持久化到自己的数据存储中,可以单独开发和部署。在某些情况下,数据存储可以在服务之间共享。
因此,将逻辑拆分为不同服务的目的是让您的应用程序更易于开发、维护、支持和理解。太多的小服务会带来很多开销。创建服务需要花费额外的开发时间,服务也是部署项,服务之间的通信有网络开销。因此,您应该仔细考虑将逻辑拆分为服务的所有利弊。应该找到一些平衡点。
回到这个问题,如果“用户”和“购买历史”是完全不同的,它们没有共同的逻辑,可以存储在不同的数据库中并且都足够复杂,所以你可以将它们分成两个服务。 UI 部分也是如此。主要的是,拆分应该给你带来好处,而不是间接费用。
关于使用 rest - 由你决定,微服务架构不需要 rest 架构,但它们经常一起使用。休息是关于你的服务的设计,它们如何公开 API 等等。
【讨论】:
感谢您的好评。最后一件事,让我们以用户屏幕为例。 UI 是否应该成为微服务的一部分?在那种情况下,这个微服务是否需要包含一个完整的 Angular 2 应用程序? 我觉得最好把后端和前端分成不同的部分。在您的情况下,您可以拥有用户后端服务(rest API)和用户 UI 应用程序。 是的,就是这样。问题是我有一个用于 UI 的单体 angular 2 应用程序。所以问题是用户是否需要成为单独的 Angular 2 应用程序或单体应用程序的一部分? 从技术上讲,***.com/questions/18571301/… 是可能的,并且应用程序之间的通信也是可能的,但更难。做或不做——取决于这些屏幕有多少共同点。如果不查看代码和了解未来的项目需求,很难给出严格的建议。以上是关于使用 Asp.Net 的微服务的主要内容,如果未能解决你的问题,请参考以下文章
从 ASP.NET MVC 项目调用 .NET CORE 5 Web API 微服务时无法检索 BadRequest 错误
ASP.NET Core 搭载 Envoy 实现 gRPC 服务代理
ASP.NET Core 搭载 Envoy 实现 gRPC 服务代理
ASP.NET Core 搭载 Envoy 实现微服务身份认证(JWT)