題外話:C# 調用 Java 的幾種方法
1.將Java端的接口通過WebService方式發布,C#可以方便的調用
2.先使用C++ 通過 JNI 調用 Java,C# 調用C++的接口
3.使用開源的庫直接使用C#調用Java ,詳細信息請點擊
4.使用IKVM實現C#調用Java,
之所以說這些,是因為自己這邊客戶端要調用HBase接口(Java實現),剛開始我是使用WS方式實現調用,這種方式很簡單,而且通用性好。之後一段時間發現了上面所說的第三種方式,並成功調用,但是寫這個庫的哥們,好像沒有維護自己寫的這個庫,裡面有幾個很明顯的BUG,而且在循環調用的時間,會報內存錯誤,由於對JNI不太熟悉,也就放棄了這種方式,如果對這種方式感興趣的童鞋可以給他完善一下,再提個醒,這個開源庫依賴jvm.dll,只有32位的JavaJDK才行。至於第二種和第四種方式沒有深入研究,在這也就不說了。
最終我並沒有采用上面的任何一種方式,而我采用的是Thrift方式,雖然比Java API 慢一點,但也在可接受的范圍之內。接下來就要進入正題了:
准備階段:
生成Thrfit接口類:
1. 從HBase包中,得到HBase.Thrift文件。(..\hbase-0.94.6.1\src\main\resources\org\apache\hadoop\hbase\thrift 在此目錄下)
2. 將Thrift-0.9.0.exe 與 HBase.Thrift文件放到同意目錄下(當然也可以不在同一目錄)
3. 進入命令行, Thrift-0.9.0.exe -gen CSharp HBase.Thrift此目錄下就成了名為gen-csharp的文件夾
構建解決方案
該准備的項目代碼都已完成,新建VS Project , 將Thrift 的源代碼項目與剛剛生成的接口接口類引入。
開始集群的Thrift服務
hbase-daemon.sh start thrift 端口號默認9090
編寫測試代碼