本發(fā)明涉及計算機通訊技術(shù)領(lǐng)域,具體涉及一種計算機語言的交互系統(tǒng)及交互方法。
背景技術(shù):
C#是一種最新的、面向?qū)ο蟮木幊陶Z言。它使得程序員可以快速地編寫各種基于Microsoft .NET平臺的應(yīng)用程序,Microsoft .NET提供了一系列的工具和服務(wù)來最大程度地開發(fā)利用計算與通訊領(lǐng)域。C#是微軟公司在2000年7月發(fā)布的一種全新且簡單、安全、面向?qū)ο蟮某绦蛟O(shè)計語言,是專門為.NET的應(yīng)用而開發(fā)的語言,它吸收了C++、Visual Basic、Delphi、Java等語言的優(yōu)點,體現(xiàn)了當(dāng)今最新的程序設(shè)計技術(shù)的功能和精華。C#繼承了C語言的語法風(fēng)格,同時又繼承了C++的面向?qū)ο筇匦?。不同的是,C#的對象模型已經(jīng)面向Internet進(jìn)行了重新設(shè)計,使用的是.NET框架的類庫;C#不再提供對指針類型的支持,使得程序不能隨便訪問內(nèi)存地址空間,從而更加健壯;C#不再支持多重繼承,避免了以往類層次結(jié)構(gòu)中由于多重繼承帶來的可怕后果。.NET框架為C#提供了一個強大的、易用的、邏輯結(jié)構(gòu)一致的程序設(shè)計環(huán)境。其特點有:語言簡潔、 保留了C++的強大功能、快速應(yīng)用開發(fā)功能、語言的自由性、強大的Web服務(wù)器控件、支持跨平臺以及與XML相融合。C++語言是一種使用非常廣泛的計算機編程語言。C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計語言。它支持過程化程序設(shè)計、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計、泛型程序設(shè)計等多種程序設(shè)計風(fēng)格。
C#與C++的區(qū)別主要體現(xiàn)在:1、編譯目標(biāo):C++代碼直接編譯為本地可執(zhí)行代碼,而C#默認(rèn)編譯為中間語言(IL)代碼,執(zhí)行時再通過Just-In-Time將需要的模塊臨時編譯成本地代碼。2、內(nèi)存管理:C++需要顯式地刪除動態(tài)分配給堆的內(nèi)存,而C#不需要這么做,C#采用垃圾回收機制自動在合適的時機回收不再使用的內(nèi)存。3、指針:C++中大量地使用指針,而C#使用對類實例的引用,如果確實想在C#中使用指針,必須聲明該內(nèi)容是非安全的。不過,一般情況下C#中沒有必要使用指針。4、字符串處理:在C#中,字符串是作為一種基本數(shù)據(jù)類型來對待的,因此比C++中對字符串的處理要簡單得多。5、庫:C++依賴于以繼承和模板為基礎(chǔ)的標(biāo)準(zhǔn)庫,C#則依賴于.NET基庫。6、C++允許類的多繼承,而C#只允許類的單繼承,而通過接口實現(xiàn)多繼承。7、C#亦應(yīng)用于網(wǎng)頁設(shè)計,如ASP與ASP.NET,而C++則無。
目前,在具體的開發(fā)模塊中,編輯器的主體業(yè)務(wù)邏輯使用C#編寫,利用C#高級語言的各種特性,提高開發(fā)效率與代碼質(zhì)量。在一些涉及到游戲場景繪制等對效率要求較高的模塊,則使用C++編寫,然后C#再對C++代碼進(jìn)行調(diào)用。但是在C#對C++進(jìn)行交互調(diào)用時,一般方法是通過手動編寫P/Invoke代碼聲明C++相關(guān)接口,提供給C#調(diào)用,這種調(diào)用方式每次都需要手動編寫相關(guān)接口,不僅影響開發(fā)效率,而且還容易出錯。因此,為了解決現(xiàn)有技術(shù)中存在的問題,研究一種高效率、準(zhǔn)確性高的計算機語言的交互系統(tǒng)及交互方法已經(jīng)成為一項重要任務(wù)。
技術(shù)實現(xiàn)要素:
本發(fā)明解決的技術(shù)問題是提供一種計算機語言的交互系統(tǒng)及交互方法,目的是通過業(yè)務(wù)邏輯模塊調(diào)用接口模塊自動生成的接口來實現(xiàn)與功能模塊之間的交互。
本發(fā)明的技術(shù)方案為:
為了解決上述技術(shù)問題,本發(fā)明提供了一種計算機語言的交互系統(tǒng),包括采用計算機語言編譯具體功能的功能模塊、調(diào)用不同功能模塊實現(xiàn)完整業(yè)務(wù)邏輯的業(yè)務(wù)邏輯模塊,還包括實現(xiàn)功能模塊與業(yè)務(wù)邏輯模塊之間具體功能交互的接口模塊,所述接口模塊根據(jù)功能模塊實現(xiàn)的具體功能自動生成相應(yīng)的接口,所述業(yè)務(wù)邏輯模塊通過調(diào)用自動生成的接口實現(xiàn)與功能模塊之間具體功能的交互。
進(jìn)一步的,所述功能模塊、接口模塊、以及業(yè)務(wù)邏輯模塊均可采用多種不同的計算機語言來實現(xiàn),例如C語言、C++、JAVA、C#、Visual Basic或Delphi等多種不同的計算機語言,選優(yōu)的采用C語言、C++、JAVA、C#來實現(xiàn)。
進(jìn)一步的,所述功能模塊與業(yè)務(wù)邏輯模塊采用的計算機語言不相同。
進(jìn)一步的,所述接口模塊自動生成的接口為通過開放性源代碼swig的個性化編譯而自動形成的接口。
本發(fā)明還提供了一種計算機語言交互方法,接口模塊根據(jù)功能模塊實現(xiàn)的具體功能自動生成相應(yīng)的接口,業(yè)務(wù)邏輯模塊通過調(diào)用自動生成的接口實現(xiàn)與功能模塊之間的交互。
首先是功能模塊采用一種計算機語言來編譯具體功能,完成對功能模塊的開發(fā);其次,接口模塊根據(jù)功能模塊所實現(xiàn)的具體功能并通過開放性源代碼swig的個性化技術(shù)自動編譯與功能模塊相匹配的接口;最后,業(yè)務(wù)邏輯模塊通過調(diào)用自動生成的接口以實現(xiàn)與功能模塊之間的交互。
進(jìn)一步的,所述自動生成的接口的生成方法具體包括以下步驟:
步驟1、定義生成的程序集名字;
步驟2、完成自定義控件的默認(rèn)配置;
步驟3、導(dǎo)入步驟2中的默認(rèn)配置,輔助swig解析;
步驟4、添加頭文件聲明;
步驟5、添加導(dǎo)出控件類型聲明,指定類型的全名;
步驟6、添加導(dǎo)出的類型。
進(jìn)一步的,所述功能模塊采用C++作為開發(fā)語言來編譯實現(xiàn)具體的功能,例如游戲場景繪制。
進(jìn)一步的,所述接口模塊根據(jù)C++所實現(xiàn)的具體功能在開放性源代碼swig的基礎(chǔ)上進(jìn)行個性化編譯而自動生成與C++相匹配的接口。
進(jìn)一步的,所述業(yè)務(wù)邏輯模塊采用C#作為開發(fā)語言來編寫編輯器的主體業(yè)務(wù)邏輯,并通過接口模塊自動生成的與C++相匹配的接口調(diào)用不同的功能模塊來實現(xiàn)完整的業(yè)務(wù)邏輯。
本發(fā)明的技術(shù)效果為:
本發(fā)明提供了一種計算機語言的交互系統(tǒng)及交互方法,接口模塊根據(jù)功能模塊實現(xiàn)的具體功能自動生成相應(yīng)的接口,業(yè)務(wù)邏輯模塊通過調(diào)用自動生成的接口實現(xiàn)與功能模塊之間的交互。本發(fā)明不需要手動編寫相關(guān)接口,而是自動生成相應(yīng)的接口,來實現(xiàn)業(yè)務(wù)邏輯模塊對功能模塊的調(diào)用,從而實現(xiàn)兩種不同計算機語言之間的交互,這樣不僅可以提高開發(fā)者的開發(fā)效率,而且還不容易出錯。
附圖說明
圖1為本發(fā)明計算機語言的交互系統(tǒng)結(jié)構(gòu)示意圖。
圖2為本發(fā)明計算機語言的交互方法流程圖。
圖3為本發(fā)明自動生成的接口的生成方法流程圖。
具體實施方式
下面結(jié)合附圖說明本發(fā)明的具體實施方式:
如圖1所示,本發(fā)明提供了一種計算機語言的交互系統(tǒng),包括采用計算機語言編譯具體功能的功能模塊、調(diào)用不同功能模塊實現(xiàn)完整業(yè)務(wù)邏輯的業(yè)務(wù)邏輯模塊,還包括實現(xiàn)功能模塊與業(yè)務(wù)邏輯模塊之間具體功能交互的接口模塊,所述接口模塊根據(jù)功能模塊實現(xiàn)的具體功能自動生成相應(yīng)的接口,所述業(yè)務(wù)邏輯模塊通過調(diào)用自動生成的接口實現(xiàn)與功能模塊之間具體功能的交互。功能模塊是指使用一種計算機語言來編譯具體功能的模塊;業(yè)務(wù)邏輯模塊是指通過調(diào)用不同的功能模塊來實現(xiàn)完成的業(yè)務(wù)邏輯的模塊;接口模塊為功能模塊和業(yè)務(wù)邏輯模塊提供交互的工具,接口模塊自動生成的接口為通過開放性源代碼swig的個性化編譯而自動形成的接口。功能模塊、接口模塊、以及業(yè)務(wù)邏輯模塊均可采用多種不同的計算機語言來實現(xiàn),選優(yōu)的采用C語言、C++、JAVA、C#來實現(xiàn)。功能模塊與業(yè)務(wù)邏輯模塊采用的計算機語言不相同。
如圖2-圖3所示,本發(fā)明提供了一種計算機語言交互方法,接口模塊根據(jù)功能模塊實現(xiàn)的具體功能自動生成相應(yīng)的接口,業(yè)務(wù)邏輯模塊通過調(diào)用自動生成的接口實現(xiàn)與功能模塊之間的交互。首先是功能模塊采用一種計算機語言來編譯具體功能,完成對功能模塊的開發(fā);其次,接口模塊根據(jù)功能模塊所實現(xiàn)的具體功能并通過開放性源代碼swig的個性化技術(shù)自動編譯與功能模塊相匹配的接口;最后,業(yè)務(wù)邏輯模塊通過調(diào)用自動生成的接口以實現(xiàn)與功能模塊之間的交互。在本實施例中,功能模塊采用C++作為開發(fā)語言來編譯實現(xiàn)具體的功能,例如游戲場景繪制;業(yè)務(wù)邏輯模塊采用C#作為開發(fā)語言來編寫編輯器的主體業(yè)務(wù)邏輯,用來實現(xiàn)各個功能模塊的調(diào)用,從而形成完整有邏輯的業(yè)務(wù)邏輯模塊。因為功能模塊與業(yè)務(wù)邏輯模塊采用的計算機語言不相同,當(dāng)C#調(diào)用C++的時候,需要有一個與C++相對應(yīng)的接口,來供C#調(diào)用。在本發(fā)明中,為了提高開發(fā)者的開發(fā)效率,避免出錯。本發(fā)明接口模塊根據(jù)C++所實現(xiàn)的具體功能在開放性源代碼swig的基礎(chǔ)上進(jìn)行個性化編譯而自動生成與C++相匹配的接口,來方便C#的調(diào)用。
從C++接口自動生成C#接口的生成方法具體包括以下步驟:
步驟1、定義生成的C++程序集名字;%module CSCustomButton;以導(dǎo)出一個 CSCustomButton 為例,假設(shè) CSCustomButton 位于工程 CustomButtonProject 中,工程生成的程序集名稱也為 CustomButton,此時在 Windows 中會導(dǎo)致生成一個名字為 CustomButton.dll 的文件;定義生成的程序集名字就是這個包含 CSCustomButton 的程序集 CustomButton 的名字,也就是 CustomButton;
步驟2、完成自定義控件的默認(rèn)配置;例如CSCustomButton 中使用了文本控件,那么就需要將使用的文本控件添加到默認(rèn)配置中,除此之外,用來完整描述 CSCustomButton 的控件類型都要添加到默認(rèn)配置中;
步驟3、導(dǎo)入步驟2中的默認(rèn)配置,以輔助swig解析;%import “..\CocosStudio.EngineAdapter\SwigCocosStudioEngineAdapter.i” ;
步驟4、編寫CSCustomButton.h擴展,添加自定義控件的頭文件聲明;所添加的自定義控件的頭文件聲明不限于一個還是多個,每個占用一行,寫入#include“CSCustomButton.h”來實現(xiàn);
步驟5、添加導(dǎo)出控件類型聲明,指定類型的全名;指定類型的全名也就是包含命名空間的類名;%typemap(csattributes)CocoStudio::EngineAdapter::CSCustomButton“[CSUIExportAttribute(true)]”;
步驟6、添加導(dǎo)出的類型;寫入%include“CSCustomButton.h”。
最后說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。