我們的程式都是用vc6.0寫的c++程式。目前需要對接A機構的系統,A機構只有對外的java介面。我們的C++系統無法對接他們的系統。對方不會提供c++的介面,只能我們這邊做改動。之前對接過一個類似的B機構,我們的當時的解決方法是自己重寫網路協議和加密演算法。但考慮到以后還可能對接C機構,D機構。這樣作業量比較大。有什么方法可以更有效地解決這個問題么?
uj5u.com熱心網友回復:
不要做A語言代碼修改為B語言代碼的無用功。也不要做用A語言代碼直接呼叫B語言代碼庫這樣復雜、這樣容易出錯的傻事。
只需讓A、B語言代碼的輸入輸出重定向到文本檔案,或修改A、B語言代碼讓其通過文本檔案輸入輸出。
即可很方便地讓A、B兩種語言之間協調作業。
比如:
A將請求資料寫到檔案a.txt,寫完后改名為aa.txt
B發現aa.txt存在時,讀取其內容,呼叫相應功能,將結果寫到檔案b.txt,寫完后洗掉aa.txt,改名為bb.txt
A發現bb.txt存在時,讀取其內容,讀完后洗掉bb.txt
以上A可以替換為任何一種開發語言或開發環境,B可以替換為任何一種與A不同的開發語言或開發環境。
除非A或B不支持判斷檔案是否存在、檔案讀寫和檔案更名。
但是誰又能舉出不支持判斷檔案是否存在、檔案讀寫和檔案更名的開發語言或開發環境呢?
可以將臨時檔案放在RamDisk上提高效率減少磨損磁盤。
資料的結構很復雜的話,文本檔案的格式問題可參考json或xml
共享臨時文本檔案這種行程之間的通訊方法相比其它方法的優點有很多,下面僅列出我現在能想到的:
·行程之間松耦合
·行程可在同一臺機器上,也可跨機,跨作業系統,跨硬體平臺,甚至跨國。
·方便除錯和監視,只需讓第三方或人工查看該臨時文本檔案即可。
·方便在線開關服務,只需洗掉或創建該臨時文本檔案即可。
·方便實作分布式和負載均衡。
·方便佇列化提供服務,而且幾乎不可能發生佇列滿的情況(除非硬碟空間滿)
·……
“跨語言、跨機,跨作業系統,跨硬體平臺,跨國,跨*.*的”苦海無邊,
回頭是“使用共享純文本檔案進行資訊交流”的岸!
uj5u.com熱心網友回復:
不是同一臺機器上的兩個程式。是對方的交易系統,和我方的訂單系統對接。我方的訂單系統對外的資料互動是C++寫的,對方的資料互動系統是JAVA寫的,我方系統要與對方系統進行實時對接,進行網路通信和資料的互動。uj5u.com熱心網友回復:
會映射網路驅動器嗎?
uj5u.com熱心網友回復:
通過Socket 通訊
uj5u.com熱心網友回復:
沒有任何問題是不能通過增加一個中間層來解決的,如果有那就加兩個。類似的中間層如,webservice ? JNI?
uj5u.com熱心網友回復:
量子通信?
uj5u.com熱心網友回復:
之前我們對接A交易系統時就是自己用C++重新實作它的JAVA介面,自己寫的網路協議,和加密演算法。我們這次又要與B交易系統進對接,進行實時通信,而且以后還有C\D\E交易系統等待對接(有些系統有C++的介面,對接方便。有些是JAVA就很麻煩了)。自己重新實作成本太大,如果有辦法直接呼叫它們API函式,那開發效率的穩定性就大大提升了。
uj5u.com熱心網友回復:
JNI可以實作我的需求嗎?我去研究下。
uj5u.com熱心網友回復:
樓主如何解決的轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269208.html
標籤:模式及實現
上一篇:非常苦惱!無法讓GCC不優化程式,-O0 -g也不行,如何讓GCC不要優化程式?
下一篇:help
