作者:Tsahi Levent-Levi(原文链接)

翻译:刘通

原标题:Why Developing With WebRTC is Different than VoIP Development?

让我从此处开始说起:

但是在最重要的几个方面上WebRTC与VoIP有着区别:

1. 企业用它来实现点子的方式上

2. 开发者用它来做应用的方式上

为什么呢?

因为WebRTC适合在两个非常不同的领域中应用,而且都是在互联网上运行:网页和VoIP。

而且这两个领域的相交部分并不大。除了他们都是在IP上运行的,但是他们并没有很多的相似之处。

如果你之前在VoIP方面进行过任何开发,那么你就会知道通话是如何连接的。你的工作主要是响铃以及那些组成第五类软交换机的那些特性。事实上,这些知识在你进行WebRTC开发的时候经常会成为你的绊脚石。

下面是WebRTC开发和VoIP开发之间的10个主要区别:

#1你不再有控制权

VoIP开发中,事情都很简单。所有解决方案都是你的。服务器,客户都是。当有什么东西不工作的时候,你只要过去,分析,修复相关的软件就可以了。

但是WebRTC不一样。你有的只有一个费心的东西,叫做“浏览器”。它们有4种。

并且它们会经常更新,经常发生改变。

下图展示了去年Chrome和Firefox的版本更新时间。

每个版本会持续6到8周。

这些版本更迭它们都有可能会改变那些会牵扯到WebRTC表现的东西。这些改变很有可能会导致你的服务出现一些不法预料的错误。

这些改变意味着:

1. 你对运行你服务的软件不具备完全的控制权

2. 你无法控制你的一部分部署进行更新(浏览器更不更新可不会听你的)

VoIP可不是这样。你进行开发,整合,部署,然后由你自己决定是什么时候更新或者进行改变。在开发WebRTC的时候就不行了。

你必须针对未来的浏览器版本不断的进行测试。你需要能够方便快捷的更新你的产品服务,而且要做好经常进行这套工作的准备。

#2 JavaScript是王道

我之前是一个VoIP开发人员。我之前进行过开发,项目管理,产品管理,然后还做了CTO,我们做的产品是在多种通信产品中使用的VoIP软件SDK。

说真的,我是一个很棒的开发人员。至少是在C语言编程上。VoIP就是用C/C++和Java进行开发的。

JavaScript呢,我只是了解,但是根本达不到一般开发者的地步。我猜很多VoIP工程师的背景都和我差不多。

WebRTC完全是JavaScript的天下。

是的。WebRTC有一个JavaScript API。但这并不是全部。很多为了使用WebRTC所写的后端系统到最后都会使用Node.js,而它用的是JavaScript。

WebRTC并不止仅限于JavaScript。有很多系统是用C,Java,Python,C#,Erlang,Dart,甚至PHP所写。也有.Net的系统。在移动端,原生软件在其客户端WebRTC SDK实现中使用的是Objective-C,Swift或者Java。

但是最主要的是JavaScript。

我认为用JavaScript的原因主要有三:

1. 潮流。Node.js十分新潮。WebRTC也是个新兴的技术,所以它们很般配。

2. 异步。WebRTC中的信令需要是交互式的。它需要有一个后端,以可以很好的适用于它的异步交互模型。Node.js提供了这个功能,而且可以同时在前端和后端进行信令更简化一点。这也带来了第三个,有可能是最重要的一个原因—

3. JavaScript。你在前端和后端都要使用JavaScript。对于开发人员来说,在两端都能使用同样一种语言会方便很多。如果需要的话,想要把代码的一部分从一端移到另一端也会变的更简单。

#3一个大岛

VoIP主要是关于互联互通性。如果你从一个供应商那里买了一个手机,那么你就“应该”可以给通过另一个供应商的PBX给第三个供应商的手机打电话。确实可以做到,至少是有时可以做到。而且需要在互通性下很大的功夫来进行测试和调试。一个很大的工程。

VoIP以及互通性对于岛的概念深恶痛绝。不同的通信服务之间无法进行连接。

WebRTC则不同。你不再需要为了与其他供应商的VoIP设备进行通信而搭建一个VoIP产品或者设备。你要搭建整个事情。

WebRTC也是一个岛,只不过非常大而已。在这个“岛”上,你可以通过所有浏览器,操作系统,以及移动设备来提供权限。

你不再需要考虑与其他提供商的互通性—只需要考虑你的设备与你所依赖的浏览器之间的互通性。在某种方面简化了事情。

#4云

看起来VoIP总是要在本地部署上运行。虽然有全球部署的例子,但是不是很多。通常需要考虑地理问题。

这可能是与VoIP的本质捆绑在一起的—因为VoIP就是你之前所用的电话网的替代品/电子版。这与现在世界比过去“更大”了也有关系—云这个概念在过去并不存在。

WebRTC有更大的挑战以及更多的要求。

对于绝大部分,以及大多数WebRTC部署,有三件事情是显而易见的:

1. 部署是全球性的。你永远都不知道用户会从哪里加入会话。

2. 网络是不可管理的。与上面一点很相似。你对于网络没有任何控制能力,但是你的用户还是会对通话质量产生抱怨。

3. 我们在AWS上部署他们、所有时间运行、在虚拟机上、在Docker容器中、一层层的抽取。对于实时服务来说,看起来是可行的。

voip和rtc_为什么开发WebRTC与VoIP开发不一样?(上)相关推荐

  1. QT开发pjsip的VOIP,A8平台运行

    QT开发pjsip的VOIP 开发环境 平台:A8 环境:Linux-3.0.8 实现功能:使用QT开发VOIP进行初始化.拨号.挂起 测试工具:minisipserver服务器 效果 界面: min ...

  2. android 软电话 开发包-JNI 封装 SIP 协议,可进行二次开发应用于VOIP

    android 软电话 开发包-JNI 封装 SIP 协议,可进行二次开发应用于VOIP 该开发包为android平台下的JNI开发包,符合标准SIP协议,支持G729语音编码. 下载地址:源代码地址 ...

  3. 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)

    随笔分类 - webrtc Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译者: ...

  4. Android IOS WebRTC 音视频开发

    转 自:http://www.cnblogs.com/lingyunhu/category/626157.html 作者:lingyunhu rtc.blacker@gmail.com 随笔分类 - ...

  5. Android WebRTC 音视频开发总结(一)

    2014-03-03 13:51 by Blacker, 5464 阅读, 7 评论, 收藏, 编辑 接触Android WebRTC有一段时间了,现在将研究过程中的一些经验和知识总结出来,希望大家有 ...

  6. Android IOS WebRTC 音视频开发总结(三八)-- tx help

    Android IOS WebRTC 音视频开发总结(三八)-- tx help 本文主要介绍帮一个程序员解决webrtc疑问的过程,文章来自博客园RTC.Blacker,支持原创,转载请说明出处(w ...

  7. Android IOS WebRTC 音视频开发总结(二三)-- hurtc使用说明

    Android IOS WebRTC 音视频开发总结(二三)-- hurtc使用说明 本文主要介绍如何测试基于浏览器和手机的视频通话程序,转载请说明出处,文章来自博客园RTC.Blacker,更多详见 ...

  8. Android IOS WebRTC 音视频开发总结(四二)-- webrtc开发者大会

    Android IOS WebRTC 音视频开发总结(四二)-- webrtc开发者大会 本文主要介绍11月要在北京举办的webrtc开发者全球大会,文章来自博客园RTC.Blacker,支持原创,转 ...

  9. Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析

    Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析 本文主要介绍WebRTC中丢包重传NACK的实现,作者:weizhenwei ,文章最早发表 ...

最新文章

  1. 什么是自然语言处理?自然语言处理可以分为四大类?有哪些具体任务?
  2. php和python区别-php与python的区别
  3. 近世代数--素理想--I是R的素理想↔R/I是整环
  4. python遍历文件内容_Python四种逐行读取文件内容的方法
  5. 4步win7下简单FTP服务器搭建(试验成功)
  6. Rolling The Polygon Gym - 102222B
  7. 为 Confluence 6 配置发送邮件消息
  8. mysql 表连接 on_MysQL中表连接中“using”和“on”之间的区别是什么?
  9. [Flink] The file LOG does not exist on the TaskExecutor
  10. clickhouse 新增列_Clickhouse入门
  11. plsql设置代码提示和自动补全
  12. openwrt php wifi 钓鱼,Openwrt自动扫描WiFi并连接中继
  13. 常用工具 [ubuntu 图像编辑软件]
  14. 麦澜德医疗科创板上市:年营收3.4亿市值44亿 深耕盆底康复
  15. (SEED-Lab)Buffer Overflow Vulnerability Lab缓冲区溢出实验
  16. android hal单元测试,用于HAL测试的参数化gtest
  17. found dwarf version #039;4#039; linux,开发一个Linux调试器(四):Elves和dwarves
  18. Python 将TXT格式转换为手机通讯录格式vcf
  19. QQ群裂变引流做CPA,日引500+流量
  20. ubuntu安装RYU过程问题记录

热门文章

  1. PyTorch框架学习十一——网络层权值初始化
  2. 利用caffe的python接口实现DeepImageSynthesis实例
  3. Struts2基础知识(三)
  4. ScrollView与TableView实现选择效果
  5. mysql按字段同步_MySQL同步(一) 基础知识
  6. JavaScript内部实现
  7. mysql联合索引数据库查询数据会变慢_如何定位并优化慢查询SQL以及联合索引和索引多的弊端...
  8. java io大文件_JavaIO流对大文件进行分割与合并
  9. linux卸载openjdk_Linux系列(七)——linux其他指令【rpm、yum、sudo】
  10. sqlsugar 批量删除guid类型主键_SAP使用MASS批量修改主数据