Warensoft Unity3D 通信庫項目簡介


Warensoft Unity3D 通信庫項目簡介

項目下載地址:http://wucl.codeplex.com

該類庫是專門為Unity3D編寫的一個高性能通信庫,其中包括了若干十分易於使用的Http通信類以及Socket通信類.另外最特別之處在於,它引入了一個全新的,基於Http協議的數據庫訪問組件,可以輕松訪問MS SQL SERVER2005+. 

Warensoft Unity3D通信庫特點:

1.符合微軟命名規范

作為一個C#開發人員,您會發現Unity3d中的命名規范與其他的C#例程中的命名規范大不相同,如字段公有化等.但是在該類庫中,所有能夠看到的內容(包括字段,屬性,方法,事件)全部符合微軟命名規范.

2.基於HTTP協議的通信

Unity3D,開發人員只能使用WWW類來處理Http的請求和響應,原有的在DotNet Framework中的WebRequest類和WebClient,Unity3D中是無法使用的.對於初學者來講,WWW類的使用方法有點奇怪(當然,3D引擎中,你必須這樣做), 事實上,WWW類的使用方式與微軟的編程風格完全不同. 當然,最令人頭疼的是當你釋放WWW類所占用的內存資源時,會出現較為明顯的內存泄漏, 另外,過多使用WWW類會產生多線程並發問題,當開發人員同時建立多個WWW類的實例來並發訪問多個Web資源時,經常會出現Too Many Threads(線程太多)的異常,然后整個系統就崩潰了.

Warensoft Unity3D通信庫為您引入了一個全新代替方案:UnityHttpClient.使用UnityHttpClient類發送Http請求以及獲取響應將變的極為簡單,另外,該類在自動在后台控制並發的線程數量.請對比以下兩段代碼,第一段是使用WWW類實現的,第二段代碼是使用HttpClient類來實現的.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///With WWW Class

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

   

public class WWWTest:MonoBehaviour

{

    WWW www;

    void Start()

    {}

    private int initStep=0;

    void Update()

    {

        switch (this.initStep) {

        case 0:

            this.www=new WWW ("http://www.abc.com/default.aspx");

            this.initStep=1;

            break;

        case 1:

            if (this.WWW.isDone)//waite until the http response is finished

            {

                print(this.www.text);

            }

            break;

        default:

        break;

        }

    }

}

 

   

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//With HttpClient class

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

   

public class HttpClientTest:MonoBehaviour

{

    HttpClient client;

void Start(){}

    private int initStep=0;

    void Update()

    {

if(this.initStep==0)

{

        //create an instance

         this.client=UnityCommunicationManager.CreateInstance().GetHttpClient();

        this.client.BeginGetHttpContent("http://www.abc.com/default.aspx",new Action<string>((result)=>

        {

            print(result);

        }));

        this.initStep=1;

}

    }

}

正像你看到的一個,使用HttpClient類是如此的簡單!

3.基於TCP協議的通信

使用Http方式進行遠程通信,固然可以解決絕大多數問題,但是有些時候你可能需要更快的通信,並且需要服務器可以將實時數據直接推送到客戶端(不需要客戶端定時查詢).例如,在同一個場景中可能有很多人物在走動,這些人物不是NPC,而且它們都是由計算機前面的人來控制的.因此,你需要一個更快速的方法去同步這些人模的坐標信息.

最有效的解決方法就是基於TCP協議之上制定一系列的自定義協議.但不幸的是,關於Unity3D內置的network view 組件,官方並沒有提供太多的,易於閱讀和理解的文檔.或者,你可以使用.NET Framework中的Socket類取而代之.Socket類可以說是一個萬能的通信類,沒有它搞不定的,但同時Socket類也是最低層的一個類,並且十分難以控制.

Warensoft Unity 通信庫引入了一個用於替代的SocketClient,一個使用簡單,控制極為容易的類.

4.通過Warensoft數據訪問服務訪問MS SQL SERVER2005+數據庫

出於安全角度考慮,Unity3DWebPlayer,是不可以訪問MS SQL SERVER(ADO.NET不可用).SilverlightFlash一樣,通常情況下富客戶端應用一般都是不能訪問數據庫的(這是一點是默認的安全策略).WebPlayer的環境下,最佳的實踐方式就是使用代理模式(Proxy Pattern),或者干脆就在Web服務器上提供一個簡單的Web服務接口(可以基於HTTP方式的服務,也可以是一個SOAPWeb服務等).

為此,我們為您提供了一個名為Warensoft數據服務的代理數據訪問技術,並且在Warensoft Unity 通信庫中提供了一組客戶端代理類,僅僅需要幾步,您就可以輕松的實現SQL SERVER數據庫訪問


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM