我以前在StackOverflow上问过这个问题,但是不适合,有人建议我把它移到这里。
我正在考虑使用两种独立的后端语言来区分我的一个项目中的关注点。另一个原因是学习。
一个后端是在C#中使用特殊/专有接口的本地窗口服务,另一个后端是One服务器,它将UI交互转换为本地服务的适当格式。
显然,我可以用C#来写这两件事,这是完全可以做到的,但我在寻找一个学习Go的理由。但是,我最终会用不同的语言编写两个独立的服务,一个用于处理the服务器,另一个用于处理专有接口。本质上,这是两个小项目,最终与另一个项目互动。
我无法用Go编写本体服务,因为它使用的是已经用C#编写的框架,因此我必须重写上述框架。
为了学习,我认为这样做不会造成太多的问题,因为我把我的观点中的关注点分开了。
IMO,对the服务器的更改现在独立于专有的本地服务器,只要交互的格式没有改变。
很明显,这个问题有点主观,但是我没有经验去正确地回答,所以我来到这里。
我还有几个问题:
其思想是:使用两种不同的语言,其中一种语言足以完成任务,为了学习,但(某种程度上)也是为了分离关注点。
Go具有可读性和简单性的优点,使has服务器的开发更加容易。C#只是我所使用的本体框架中使用的语言,因此使用它编写内部服务更容易,因为我可以本机使用该框架。如果我只使用C#,我只需向项目添加一个webserver-服务,并与所有者进行对话。
下面是一个小小的图表:

发布于 2022-05-22 19:08:05
通常,我建议在与团队一起工作时,将解决方案中的语言数量保持在最低限度。主要是因为您最小化了介绍语言的人是唯一更新服务的人的可能性。不要误解我的意思,Go是一门很好的语言,我完全主张学习它。
我很难在开幕式上看到第二次发球的目的。在某种程度上,您仍然需要一种Go服务的方法来与C#服务通信,因此限制Go仅仅是webserver部分就会增加复杂性,而不会带来很大的好处。
现在,如果您要在Go中实现一个GraphQL层,它与您的C#服务交互,那么我可以看到一些您可以构建的东西.特别是在基于微型服务的基础设施中。GraphQL的设计目的是将您的数据作为一个图形对待,这样您就可以只查询所需的记录,并且只提取您想要显示的数据。它不仅仅是向内置的web服务中添加几个处理程序,在C#中只需很少的努力就可以得到这些处理程序。
如果这是一个个人项目,而且你有自己的理由去做,那就去做吧。但是,如果您正在与一个团队一起工作,请考虑添加新技术的成本,以包括长期维护。您的团队需要多少才能学会修复bug或添加特性?除非在您需要的语言平台中有一些固有的东西,否则服务之间的一致性将更容易维护。在这种情况下,由于您想集成的专有产品,所以您有一种语言依赖性,但通常情况下,由于机器学习或在该平台上成熟的自然语言处理功能,团队可能需要集成python服务。
https://softwareengineering.stackexchange.com/questions/438786
复制相似问题