voip和rtc_为什么开发WebRTC与VoIP开发不一样?(上)
作者:Tsahi Levent-Levi(原文鏈接)
翻譯:劉通
原標(biāo)題:Why Developing With WebRTC is Different than VoIP Development?
讓我從此處開始說起:
但是在最重要的幾個方面上WebRTC與VoIP有著區(qū)別:
1. 企業(yè)用它來實現(xiàn)點子的方式上
2. 開發(fā)者用它來做應(yīng)用的方式上
為什么呢?
因為WebRTC適合在兩個非常不同的領(lǐng)域中應(yīng)用,而且都是在互聯(lián)網(wǎng)上運行:網(wǎng)頁和VoIP。
而且這兩個領(lǐng)域的相交部分并不大。除了他們都是在IP上運行的,但是他們并沒有很多的相似之處。
如果你之前在VoIP方面進行過任何開發(fā),那么你就會知道通話是如何連接的。你的工作主要是響鈴以及那些組成第五類軟交換機的那些特性。事實上,這些知識在你進行WebRTC開發(fā)的時候經(jīng)常會成為你的絆腳石。
下面是WebRTC開發(fā)和VoIP開發(fā)之間的10個主要區(qū)別:
#1你不再有控制權(quán)
VoIP開發(fā)中,事情都很簡單。所有解決方案都是你的。服務(wù)器,客戶都是。當(dāng)有什么東西不工作的時候,你只要過去,分析,修復(fù)相關(guān)的軟件就可以了。
但是WebRTC不一樣。你有的只有一個費心的東西,叫做“瀏覽器”。它們有4種。
并且它們會經(jīng)常更新,經(jīng)常發(fā)生改變。
下圖展示了去年Chrome和Firefox的版本更新時間。
每個版本會持續(xù)6到8周。
這些版本更迭它們都有可能會改變那些會牽扯到WebRTC表現(xiàn)的東西。這些改變很有可能會導(dǎo)致你的服務(wù)出現(xiàn)一些不法預(yù)料的錯誤。
這些改變意味著:
1. 你對運行你服務(wù)的軟件不具備完全的控制權(quán)
2. 你無法控制你的一部分部署進行更新(瀏覽器更不更新可不會聽你的)
VoIP可不是這樣。你進行開發(fā),整合,部署,然后由你自己決定是什么時候更新或者進行改變。在開發(fā)WebRTC的時候就不行了。
你必須針對未來的瀏覽器版本不斷的進行測試。你需要能夠方便快捷的更新你的產(chǎn)品服務(wù),而且要做好經(jīng)常進行這套工作的準(zhǔn)備。
#2 JavaScript是王道
我之前是一個VoIP開發(fā)人員。我之前進行過開發(fā),項目管理,產(chǎn)品管理,然后還做了CTO,我們做的產(chǎn)品是在多種通信產(chǎn)品中使用的VoIP軟件SDK。
說真的,我是一個很棒的開發(fā)人員。至少是在C語言編程上。VoIP就是用C/C++和Java進行開發(fā)的。
JavaScript呢,我只是了解,但是根本達不到一般開發(fā)者的地步。我猜很多VoIP工程師的背景都和我差不多。
WebRTC完全是JavaScript的天下。
是的。WebRTC有一個JavaScript API。但這并不是全部。很多為了使用WebRTC所寫的后端系統(tǒng)到最后都會使用Node.js,而它用的是JavaScript。
WebRTC并不止僅限于JavaScript。有很多系統(tǒng)是用C,Java,Python,C#,Erlang,Dart,甚至PHP所寫。也有.Net的系統(tǒng)。在移動端,原生軟件在其客戶端WebRTC SDK實現(xiàn)中使用的是Objective-C,Swift或者Java。
但是最主要的是JavaScript。
我認為用JavaScript的原因主要有三:
1. 潮流。Node.js十分新潮。WebRTC也是個新興的技術(shù),所以它們很般配。
2. 異步。WebRTC中的信令需要是交互式的。它需要有一個后端,以可以很好的適用于它的異步交互模型。Node.js提供了這個功能,而且可以同時在前端和后端進行信令更簡化一點。這也帶來了第三個,有可能是最重要的一個原因—
3. JavaScript。你在前端和后端都要使用JavaScript。對于開發(fā)人員來說,在兩端都能使用同樣一種語言會方便很多。如果需要的話,想要把代碼的一部分從一端移到另一端也會變的更簡單。
#3一個大島
VoIP主要是關(guān)于互聯(lián)互通性。如果你從一個供應(yīng)商那里買了一個手機,那么你就“應(yīng)該”可以給通過另一個供應(yīng)商的PBX給第三個供應(yīng)商的手機打電話。確實可以做到,至少是有時可以做到。而且需要在互通性下很大的功夫來進行測試和調(diào)試。一個很大的工程。
VoIP以及互通性對于島的概念深惡痛絕。不同的通信服務(wù)之間無法進行連接。
WebRTC則不同。你不再需要為了與其他供應(yīng)商的VoIP設(shè)備進行通信而搭建一個VoIP產(chǎn)品或者設(shè)備。你要搭建整個事情。
WebRTC也是一個島,只不過非常大而已。在這個“島”上,你可以通過所有瀏覽器,操作系統(tǒng),以及移動設(shè)備來提供權(quán)限。
你不再需要考慮與其他提供商的互通性—只需要考慮你的設(shè)備與你所依賴的瀏覽器之間的互通性。在某種方面簡化了事情。
#4云
看起來VoIP總是要在本地部署上運行。雖然有全球部署的例子,但是不是很多。通常需要考慮地理問題。
這可能是與VoIP的本質(zhì)捆綁在一起的—因為VoIP就是你之前所用的電話網(wǎng)的替代品/電子版。這與現(xiàn)在世界比過去“更大”了也有關(guān)系—云這個概念在過去并不存在。
WebRTC有更大的挑戰(zhàn)以及更多的要求。
對于絕大部分,以及大多數(shù)WebRTC部署,有三件事情是顯而易見的:
1. 部署是全球性的。你永遠都不知道用戶會從哪里加入會話。
2. 網(wǎng)絡(luò)是不可管理的。與上面一點很相似。你對于網(wǎng)絡(luò)沒有任何控制能力,但是你的用戶還是會對通話質(zhì)量產(chǎn)生抱怨。
3. 我們在AWS上部署他們、所有時間運行、在虛擬機上、在Docker容器中、一層層的抽取。對于實時服務(wù)來說,看起來是可行的。
總結(jié)
以上是生活随笔為你收集整理的voip和rtc_为什么开发WebRTC与VoIP开发不一样?(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python添加环境变量_windows
- 下一篇: 解决微信小程序 [Component]