多语言协同开发利器:Polyglot

多语言协同开发利器:Polyglot

Please note: Polyglot 是一个实验性的项目,目前并不完善,使用时需谨慎并自负风险!

Polyglot 是一个创新的开源框架,它允许程序员使用多种编程语言、库和环境共同开发单个Web应用。这意味着什么呢?

这意味着你可以结束那些编程语言之争,自由选择最适合任务的语言或用你最爱的语言编写不同部分的代码。此外,同一个Web应用的不同部分可以使用不同的库。因此,如果新功能需要一个更新版本的库,你可以直接使用,无需顾虑旧有部分。

这也意味着你的Web应用可以更灵活地扩展和演进,可以在不影响原有功能的情况下替换部分组件,甚至避免“大刀阔斧”式的升级方式,让平台升级更加平滑。

复杂而强大的Web框架

然而,这并非没有代价。

与Rails、Django或Express等简化开发的框架相比,Polyglot的存在是为了增加应用的复杂性。它将复杂度转移到部署和开发中,以换取以下优势:

  1. 性能可扩展性 —— Polyglot的响应器是分布式独立进程,可分布在任何网络连接的服务器上。
  2. 可扩展性 —— 通过在现有Web应用中创建一个接受器作为控制器,你可以通过Polyglot扩展应用的功能。
  3. 多语言,独立开发 —— Polyglot的响应器可以使用不同语言、库和环境独立开发。

Polyglot并不适合所有Web应用。只推荐用于需要高性能扩展或者需要使用多种语言逐步开发的Web应用。例如,如果你的应用从不需要超过一台服务器的规模,那么可能其他单一语言框架更适合。同样,一旦应用完成且未来无需添加新功能,Polyglot可能就不太适用了。

为何要使用多种编程语言来开发Web应用呢?有实际的理由:

  1. Web应用是会随时间变化的系统,可能由不同的团队维护。如果不受特定平台或语言限制,那么逐渐改进软件的可能性就会更高。
  2. 你可以更换掉表现不佳的响应器,用性能更高的替换。不同的响应器可以针对性能、开发速度、维护便捷性或快速开发有不同的优先级。在一个单一的编程语言中,你往往不得不做出妥协。而在多种语言中,你可以为每个特定响应器选择合适的平台和语言。
  3. 不同的响应器可以针对特定的性能提升或可维护性进行编写。

尽管增加了开发初期的复杂性,但随着应用的发展,Polyglot确实能简化扩展和演进的过程。

架构详解

Polyglot的基本架构由三个主要部分组成:

  1. 接受器(Acceptor) —— 接受HTTP请求,并返回HTTP响应。默认实现为Go语言。为了扩展现有Web应用,您也可以选择在应用中实现接受器作为控制器。
  2. 经纪人(Broker) —— 中介接收代表HTTP请求的消息,并转发给相应的响应器。
  3. 响应器(Responder) —— 独立的处理进程,使用任何语言编写,接收来自经纪人的消息并作出响应。类似于大多数Web框架中的控制器,但它们是真正独立的进程,理论上可以位于任何远程服务器上。这里存放着你的业务逻辑。

架构图

Polyglot的架构核心在于利用经纪人将处理单元(响应器)与通信单元(接受器)分离,使响应器可以用多种语言编写。

工作流程

  1. 客户端发送HTTP请求至接受器
  2. 接受器将请求转换成JSON,并发送给经纪人,然后等待响应
  3. 经纪人路由消息到对应的响应器
  4. 响应器处理请求消息
  5. 响应器向经纪人返回响应信息。响应消息是一个数组,包含四个元素:路线ID、HTTP状态码、头部映射和主体。
  6. 经纪人根据路线ID将响应发送回正确的接受器
  7. 接受器使用HTTP状态码、响应头和主体构建HTTP响应并发送给客户端。

安装与设置

我的开发环境是OS X Mavericks,但在大多数类Unix环境中应该都能正常工作。

首先,安装ZeroMQ 4.0.4

接下来,克隆本仓库到Go的工作空间中。默认接受器是用Go编写的。

对于接受器和响应器,请参考项目文件夹中的说明进行配置和启动。经纪人的安装和运行方式也类似,都是通过Go进行构建和启动。

现在,你已经对Polyglot有了全面了解。如果你想尝试一个多语言协作的Web开发新模式,不妨试试这个框架。它虽然带来了更多的复杂性,但也为大型、高性能应用的扩展和演变开辟了一条新路径。让我们一起探索这个框架的可能性,迎接Web开发的新挑战!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岑晔含Dora

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值