关于app和web的混合服务器

c++/c++11 同时被 3 个专栏收录
31 篇文章 0 订阅
4 篇文章 0 订阅

关于app和web的混合服务器

 

等下载机器实在有些慢,无聊之下继续写篇短文发点感慨。前段时间,为让客户端界面更容易表达一点,将客户端需要展现数据的地方全用html实现了,后端自然要用html格式化信息,通用匹配模式自然是要安排一个web服务器,非http信息走app服务器,两者之间再交互数据,一般的设计可能就是这样了,但我这边需要表现的数据有很多是实时的,每秒都在变化,如果让app和web交互也会很复杂,要设计交互协议,要处理同步,还要考虑不同的语言(app用c++,web用asp.net等?),思量之下还是果断做了个决定,直接在app进程里面增web模块,弄了一个混合服务器,当然从0开始写个web服务器还是有些耗时的,因此找了一个代码修改了一下,花了两天时间,基本上做了一个能跑的混合服务器,还能定义虚拟host,虚拟host之下可定义虚拟dir,根据不同vdir注册不同的处理函数,再根据参数做不同处理,格式化页面返回,写这种vdir的扩展有做cgi的感觉。作为一个基本完备的web服务器,还支持proxy转向功能,计划还要实现fastcgi功能的,以便接php等,但这个暂时还没完全实现。从最近半个月的使用来看效果很不错,速度快捷,免去同步,反正在混合app+web的服务器上层实现负载均衡,因此这种混合服务器不存在瓶颈问题。

当初在群内讨论过这种实现,有表示支持的也有表示反对的,还扯到用这种模式来做webgame肯定非常方便,webgame的appserver和webserver之间肯定也有很多交互,混合方式肯定也是个可选的方案之一,昨天从网上下到一个webgame的源代码,粗看了一下,server果然是混合方案,一部分java(较少),大部分是asp.net,没有细看java部分处理什么,我估计如果用混合方案,一部分实时需要的东西用混合服务器可能会更方便,当然实时性要求不高的用普通web服务器可能写起来更方便更容易维护一些,发挥各自所长。

这种混合方案很早就有人在用,但用的人依然不多,无非实现上增加了一些复杂性,对server不熟悉的人一般不敢随便触碰,另外可能很多人对webserver感到很神秘,以为webserver很庞大,其实webserver比浏览器简单太多,跟一般的server相比,webserver也不是太难,只要对http协议有些了解,对server编程较熟悉,写一个webserver其实不是太难的事情,如果参考一个成熟的实现,那就更容易了,其实我当初参考的那个server代码写得不算太好,参考移植过程中还顺便修改了几个错误,改写了一些低效的写法,总共就花了2天时间。

我知道现在有很多人用脚本语言写webserver,如py等,但国内用c++写webserver的似乎不多,基本上就是用用nginx等,配置一下就用了,或者apache,有很多大公司扩展这些服务器,改个servername,增个模块就叫二次开发了,其实如果有时间练练手,还真不如写个webserver来得直接,当然如果要追求效率和稳定性,对功力是有相当考验的,特别是要保证server长期稳定运行的话,期待有同行一起交流这个问题。

 

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

oldworm

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值