Ⅰ ACE和ICE是什麼區別
ACE是對c++基礎開發介面和功能的封裝,提高了程序的可移植性,並且提供了很好網路類;
ICE是分布式框架,提供了消息分發、對象定位、遠程調用等功能的實現。
Ⅱ webrtc哪些程序放在伺服器
一) sipdroid
1)架構
sip協議棧使用java實現,音頻Codec使用skype的silk(Silk編解碼是Skype向第三方開發人員和硬體製造商提供免版稅認證(RF)的Silk寬頻音頻編碼器)實現。NAT傳輸支持stun server.
2)優缺點:
NAT方面只支持STUN,無ICE框架,如需要完全實現P2P視頻通話需要實現符合ICE標準的客戶端,音頻方面沒看到AEC等技術,視頻方面還不是太完善,目前只看到調用的是系統自帶的MediaRecorder,並沒有自己的第三方音視頻編解碼庫。
3)實際測試:
基於sipdroid架構的話,我們要做的工作會比較多,(ICE支持,添加迴音消除,NetEQ等gips音頻技術,添加視頻硬體編解碼codec.),所以就不做測試了。
二) imsdroid
1)架構:
基於doubango(Doubango 是一個基於3GPP IMS/RCS 並能用於嵌入式和桌面系統的開源框架。該框架使用ANSCI-C編寫,具有很好的可移植性。並且已經被設計成非常輕便且能有效的工作在低內存和低處理能力的嵌入式系統上。蘋果系統上的idoubs功能就是基於此框架編寫) .音視頻編碼格式大部分都支持(H264(video),VP8(video),iLBC(audio),PCMA,PCMU,G722,G729)。NAT支持ICE(stun+turn)
2)效果實測
測試環境:公司區域網內兩台機器互通,伺服器走外網sip2sip
音頻質量可以,但是AEC打開了還是有點迴音(應該可以修復)。視頻馬賽克比較嚴重,延遲1秒左右。
3)優缺點
imsdroid目前來說還是算比較全面的,包括音視頻編解碼,傳輸(RTSP,ICE),音頻處理技術等都有涉獵。doubango使用了webrtc的AEC技術,但是其調用webrtc部分沒有開源,是用的編譯出來的webrtc的庫。如果要改善音頻的話不太方便,Demo的音頻效果可以,視頻效果還是不太理想。
三)csipsimple
1)sip協議棧用的是pjsip,音視頻編解碼用到的第三方庫有ffmpeg(video),silk(audio),webrtc.默認使用了webrtc的回聲演算法。支持ICE協議。
2)優缺點:
csipsimple架構比較清晰,sip協議由C實現,java通過JNI調用,SIP協議這一塊會比較高效。其VOIP各個功能也都具備,包括NAT傳輸,音視頻編解碼。並且該項目跟進新技術比較快,官方活躍程度也比較高。如果做二次開發可以推薦這個。
3)實測效果
測試環境:公司區域網內兩台機器互通,伺服器走外網sip2sip
音頻質量可以,無明顯迴音,視頻需要下插件,馬賽克比imsdroid更嚴重。
四)Linphone
這個是老牌的sip,支持平台廣泛 windows, mac,ios,android,linux,技術會比較成熟。但是據玩過的同事說linphone在Android上的bug有點多,由於其代碼實在龐大,所以我暫時放棄考慮Linphone.不過如果誰有跨平台的需要,可以考慮Linphone或者imsdroid和下面的webrtc.。。。好像現在開源軟體都跨平台了。。。
五) webrtc
imsdroid,csipsimple,linphone都想法設法調用webrtc的音頻技術,本人也測試過Android端的webrtc內網視頻通話,效果比較滿意。但是要把webrtc做成一個移動端的IM軟體的話還有一些路要走,不過webrtc基本技術都已經有了,包括p2p傳輸,音視頻codec,音頻處理技術。不過其因為目前僅支持VP8的視頻編碼格式(QQ也是)想做高清視頻通話的要注意了。VP8在移動端的硬體編解碼支持的平台沒幾個(RK可以支持VP8硬體編解碼)。不過webrtc代碼里看到可以使用外部codec,這個還是有希望調到H264的。
總結:sipdroid比較輕量級,著重基於java開發(音頻codec除外),由於其音視頻編碼以及P2P傳輸這一塊略顯不足,不太好做定製化開發和優化。imsdroid,遺憾就是直接調用webrtc的庫,而最近webrtc更新的比較頻繁,開發比較活躍。如果要自己在imsdroid上更新webrtc擔心兼容性問題,希望imsdroid可以直接把需要的webrtc相關源碼包進去。csipsimple的話,都是圍繞pjsip的,webrtc等都是以pjsip插件形式擴充的,類似gstreamer. webrtc如果有技術實力的開發公司個人還是覺得可以選擇這個來做,一個是google的原因,一個是其視頻通話相關關鍵技術都比較成熟的原因。個人覺得如果能做出來,效果會不錯的。
Ⅲ 用ice實現java和c++的通信,代理類型返回為空是什麼原因
有區別, ICE 在基本上的相同的,但很多都是基於slice上的。 換句話來講只能是在slice上通用。
實際ICE是根據slice生成不同的原生語言(java,c++,php,c#)等,所以在語言上是等同於使用原生語言開發。 在數據上幾乎是一樣的,不過在顯示中文的時需要注意字元集問題。
返回代理類型為空一般都是,ICE的配置屬性是於相符, 代理是不是找不到。
Ⅳ WebRTC中的Signaling Server是不是起到了一個ICEServer的作用
我認為不是 兩個peer要會話就需要把各自的sdp發送到對方,如果兩者都在區域網(nat)之後,怎麼發送?這時候就需要一個在公網上的能直接訪問的中間者來傳遞消息,在這之前兩者都是tcp連接在中間伺服器上的。這個中間伺服器除了轉發sdp,還會傳遞candidate,它包含stun之後的信息,有了這個peer之間就能直接傳media數據了。peer通過ice組件向stun伺服器協商後獲得了candidate,所以這個信令伺服器並不是ICE server,用google 文檔上的話說,這個信令伺服器可以是普通的socketserver,也可以sip/xmpp/Websocket伺服器
Ⅳ ice,thrift性能哪個高
兩個框架的:
1。跨語言
兩個框架都很好的做到了這一點,主流的開發語言C++,Java,Python,Ruby等等都能支持。
2。代碼生成
兩個框架都有自己的IDL,(Interface Define Lanaguage),在ICE裡面叫slice文件,Thrift裡面就叫Thrift文件,用來描述將要實現的服務介面,然後通過工具程序自動生成骨架代碼,比如client和server端的stub代碼.Thrift生成的代碼都在一個文件里,ICE則細致的多,能很好的區分那部分是server端,那部分是client端用的。
3。網路傳輸的編碼和解碼
對象在傳輸過程時,發送端發送時需要將Object編碼成位元組流,接收端接收後則將這些位元組流解碼成對應的Object,從兩個框架的實現來看,ICE的編碼要比Thrift要緊湊和經濟的多,Thrift在編碼Object時,連同Object的Field的類型和編號(Thrift定義的每個Object的field都會分配一個編號)以及每個函數的參數類型和編號都給編碼進去了,ICE則經濟的多,只編碼了Field的value。
4。框架本身
Thrift整個框架代碼非常簡潔,相比ICE來說,ICE要比Thrift完善和成熟的多。這個主要體現在服務的高可用性和可擴展性方面。
ICE提供的服務可以是分布式的,框架有完善,成熟的運行環境來運行服務,這些環境提供了很多很好的機制,來保證服務的可擴展和高可用性,比如
Register機制,通過Register,讓client再連接服務時多了一層定址的機制,如同DNS一樣,可以方便的將某個服務切換到其他機器上,和DNS作IP輪詢一樣,ICE可以通過Register來給服務做負載均衡
也因為ICE提供的這些環境可以使的ICE編寫的服務能方便的部署和發布。
Ⅵ 基於ICE的PHP與java間的通信
PHP與JAVA融合的開發環境
一.系統環境
1.初始安裝
防火牆開放介面:21,22,80,2401,8009,10000,eth0
Redhat Linux 9.0
Development Tools
Network Servers
VSFtp
CVS-1.11.2-10
MySQL 3.23.54
2.包安裝
JDK 1.5
下載地址:http://www.netshine.com.cn/linux/j2sdk-1_4_2_04-linux-i586.rpm
Tomcat 5.0.19
下載地址:http://www.netshine.com.cn/linux/jakarta-tomcat-5.0.19.tar.gz
3.腳本安裝
Webmin 1.110
下載地址:http://www.netshine.com.cn/linux/webmin-1.110.tar.gz
ZendOptimizer 2.5.1
下載地址:http://www.netshine.com.cn/linux/ZendOptimizer-2.5.1-Linux_glibc21-i386.tar.gz
4.手工編譯
Apache 2.0.49
下載地址:http://www.netshine.com.cn/linux/httpd-2.0.49.tar.gz
PHP 4.3.5
下載地址:http://www.netshine.com.cn/linux/php-4.3.5.tar.gz
JK 2-2.0.4
下載地址:http://www.netshine.com.cn/linux/jakarta-tomcat-connectors-jk2-src-current.tar.gz
5.客戶機環境
Windows XP Professional
Absolute Telnet 3.0
Zend Encoder
Macromedia Dreamweaver MX 2004
Borland JBuilder 9 Enterprise
WinCVS 1.3
下載地址:http://www.netshine.com.cn/linux/WinCvs13b17.zip
二.系統安裝
啟動Linux安裝光碟,安裝基本系統:FTP、開發工具和MySQL3.23.54。如果你是手工編譯安裝MySQL,要記得以後在編譯PHP等程序時要指明MySQL的具體路徑,否則會因找不到路徑而導致編譯出錯。
三.安裝webmin1.110
用Webmin來配置系統,傻瓜化,可以節省不少力氣,所以一般我都先安裝它。安裝過程很簡單,執行setup.sh腳本後照提示一步一步來就可以了。
# cd webmin*
# ./setup.sh
四.安裝JDK1.5
1.編輯如下三個文件,沒有指明全路徑的放在你自己的home目錄就可以。
/etc/profile
JAVA_HOME=/usr/java/j2sdk1.4.2_04
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
CVSROOT=/usr/local/cvsroot
PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH CVSROOT PATH
/etc/ld.so.conf
/usr/java/j2sdk1.4.2_04/jre/lib/i386
/usr/java/j2sdk1.4.2_04/jre/lib/i386/server
HelloWorld.java
class HelloWorld
{
public static void main(String[] args)
{
//本文件測試Java環境是否安裝成功。
System.out.println("Hello World!");
}
}
2.執行以下命令:
# rpm -ivh j2sdk*.rpm //安裝JDK包。
# source /etc/profile //重載profile環境。
# ldconfig //創建動態鏈接庫緩存文件。
# javac -d . HelloWorld.java //編譯測試文件。
# java HelloWorld //運行程序測試安裝是否成功。
五.安裝Apache
# tar xvzf httpd* //解壓源碼包。
# cd httpd* //進入安裝目錄。
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite
# make;make install //編譯並安裝。
說明:
--enable-so選項:讓Apache可以支持DSO模式,注意,我們在這里採用的是Apache2.0的語法。如果你的Apache是1.3版本,應改為--enable-mole=so。
--enable-mods-shared=most選項:告訴編譯器將所有標准模塊都編譯為DSO模塊。你要是用的是Apache1.3,改為--enable-shared=max就可以。
--enable-rewrite選項:支持地址重寫功能,使用1.3版本的朋友請將它改為--enable-mole=rewrite。
六.編譯安裝PHP
1.執行命令
#tar xvzf php* //解壓源碼包
#cd php* //進入PHP安裝命令
#./configure --prefix=/usr/local/php --with-mysql --with-apxs2=/usr/local
/apache/bin/apxs --with-java=/usr/java/j2sdk1.4.2_04
#make;make install //編譯並安裝
#cp php.ini-dist /usr/local/php/lib/php.ini //復制php配置文件
#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 //extensions目錄
#ln -s java.so libphp_java.so //建立連接,忘記了會出錯哦
#cd Zend* //進入ZendOptimizer目錄
#./install //安裝PHP加速器
說明:
--with-apxs2=/usr/local/apache/bin/apxs是Apache2的語法,1.3版本的用戶請使用--with-apxs=/usr/local/apache/bin/apxs。
2.編輯下面三個文件
/usr/local/apache/conf/httpd.conf
LoadMole php4_mole moles/libphp4.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddDefaultCharset gb2312
/usr/local/apache/htdocs/test.php
<?php
//本程序測試PHP的JAVA環境是否可用,
代碼是從http://www.php.net/manual/en/ref.java.php摘錄下來的。
// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');
// demonstrate property access
echo 'Java version=' . $system->getProperty('java.version') . '<br />';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
echo 'OS=' . $system->getProperty('os.name') . ' ' .
$system->getProperty('os.version') . ' on ' .
$system->getProperty('os.arch') . ' <br />';
// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
echo $formatter->format(new Java('java.util.Date'));
?>
/usr/local/php/lib/php.ini
register_globals=On
[Java]
java.class.path=/usr/local/php/lib/php/php_java.jar:/home/jim/myclass
java.home=/usr/java/j2sdk1.4.2_04
java.library=/usr/java/j2sdk1.4.2_04/jre/lib/i386/libjava.so
java.library.path=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension=libphp_java.so
注意:
(1).如果你剛剛從以前老版本的PHP轉換到新版本,可能會發現你的PHP程序很多都不能用了。別緊張!把register_globals打開就一切正常啦!這是因為老版本的PHP,它的register_globals默認是開著的,而新版本,卻把它關了的緣故。
(2)./home/jim/myclass是我存放JAVA組件的路徑,你可以根據實際情況修改,但是為了安全起見,可不要放在web目錄下哦。
Ⅶ java項目中有哪些層我知道有、service、util,還有什麼作用都是什麼
MVC 三層架構
Model 模型 就是和資料庫表名
VIEW 視圖jsp
controller 控制 action servlet 這些
service 是新出來的一個層 為了讓controller簡單一點,內 所以把一些方法獨立出容來 成為了service層
util類裡面一般都是操作類 增刪改查 什麼的都寫在這里 然後在controller裡面調用這些service