999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Node.js及MongoDb應用研究

2015-10-18 02:53:04
天津科技 2015年6期
關鍵詞:頁面界面數據庫

李 鵬

(1.英業達集團(天津)電子有限公司 天津 300193;2.天津科技大學電子信息與自動化學院 天津 300457)

目前,國內外市場上的客戶關系管理系統(CRM)多采用Java作為基礎語言進行設計開發,其安全性、穩定性、系統完善度、架構安全性等得到了很好的保證。但是其開發周期相對較長,人力需求較多,最重要的是Java在高并發的處理上存在一些弊端,很容易造成Server端阻塞 。而Node.js高效的異步事件調度機制和基于javascript的閉包模式較好地解決了這些弊端。

1 Node.js技術及應用概述

1.1 Node.js的定義、功能

Node.js是由 Ryan Dahl編寫的服務器端 javascript,其初衷是為了編寫更為高效的 Web服務器,它使用當前最快的谷歌V8 javascript引擎和單線程的模式。因為不需要考慮并發,因此也就不涉及鎖和阻塞的問題,大大簡化了編程。 它的事件回調模型均采用異步操作,如數據庫訪問都是通過事件來觸發的。

Node.js完全發揮了 javascript作為動態解釋語言的強大威力,開發人員可以自由使用 javascript的一切特性,如閉包(closure),并且不需要擔心跨瀏覽器支持(因為是服務端)。那么單線程如何處理多用戶請求呢?事實上,Ryan觀察到 Web訪問的一個事實:每次 Web請求服務周期最耗費時間的往往是 I/O 操作,包括讀寫文件、數據庫操作、開啟網絡等。真正Web 服務內部的運算只占很小的比例。例如瀏覽器訪問一個頁面,幾乎大部分時間都花在 I/O的讀寫上,從讀文件一直到向接口(socket)寫數據,花在頁面后端代碼的計算量則微乎其微。舉例來說,假設 Web Server是一個銀行,每個瀏覽器的訪問相當于客戶去窗口取一筆錢,客戶在某個窗口辦理業務相當于服務器從本地硬盤讀寫文件,這個操作會花很長時間,由于窗口數有限,所以需要一個排隊叫號系統,即Node.js線程。當窗口有空時,營業員就通知排號系統叫下一位,但是喇叭一次只播放一個叫號的聲音,所以所有通知都存放在了一個事件隊列中,排號系統報完一個號再處理下一個,直到隊列空為止,然后就處于空閑狀態。如果把叫號類比后端代碼執行,它的速度就會比處理銀行業務快得多,所以只需一個喇叭就足夠了。由于沒有多線程的切換消耗,所有運算都作用在實際的計算上,從而提高了處理量。

1.2 Node.js的優勢

Node.js 在實時的 Web應用上采用了基于 WebSocket的推送技術。這意味著在經過了20多年的基于無狀態的請求-返回機制的無狀態交互之后,終于有了實時的、雙向連接的Web應用,客戶端和服務器端都可以發起通信,能夠自由地交換數據。與此形成鮮明對比的是傳統的 Web響應模式,客戶端總是主動發起通信而服務端被動返回。此外,這些都是基于運行在標準80端口上的開放Web組件(HTML、CSS和JS)。

盡管 Flash 和 Java Applet 的形式已經應用很多年了,但實際上這些方式只是使用網絡將數據傳遞到客戶端上的沙箱(Sandboxie)環境。它們都是隔離運行的,而且經常操作到需要額外的權限之類的非標準端口。憑借獨特的優勢,目前Node.js已在許多著名公司的產品中發揮了關鍵作用。

1.3 Node.js的工作原理

Node.js 的主要思路是:使用非阻塞的、事件驅動的 I/O操作來保持在處理跨平臺(across distributed devices)數據密集型實時應用時的輕巧高效。簡單講,Node.js 不是一個即將主導Web開發的銀彈(silver bullet)級的平臺。相反,它是一個滿足特別需求的平臺。事實上,使用它進行繁重的計算等于摒棄Node 所有的優點。Node 真正的亮點在于建設高性能、高擴展性的互聯網應用,因為它能夠處理龐大的、高吞吐量的并發連接。

傳統的網絡服務技術,是每新增一個連接(請求)便生成一個新的線程,這個新的線程會占用系統內存,最終會占據所有的可用內存。而 Node.js使用非阻塞的異步 I/O 調用,僅運行在一個單線程中,所有連接都由該線程處理,全部掛在該線程的事件循環中,可以允許其支持數萬個并發連接。

當所有客戶端請求共享單一線程時 Node.js也會出現問題,這也是編寫 Node.js 應用的潛在缺陷。首先,大量的計算可能會使 Node 的單線程暫時失去反應,并導致所有的其他客戶端的請求一直阻塞至計算結束。其次,開發人員需要非常小心地避免 Exception 阻塞核心的事件循環,因為這將導致Node.js 實例的終止(即程序崩潰)。

2 CRM軟件結構及數據庫介紹

2.1 CRM管理系統的軟件架構

CRM管理系統的軟件架構組成如圖1所示:

圖1 CRM管理系統的軟件架構Fig.1 Software architecture of CRM management system

圖 1顯示了 CRM 系統的工作流程:瀏覽器端通過 Apps發送請求(Ajax)至后臺(Server),后臺尋找此請求所對應的方法,這些方法通過與數據庫的交互工具(MongoSkin等)來實現對數據的增、刪、改、查,再把相應的結果返給 Apps,然后通過 Html及 javescript顯示在瀏覽器(Browser)段,這樣就可以將客戶數據展示在瀏覽器端對應的功能區,也可以實現對數據庫中所存用戶數據的增、刪、改、查等處理。

CRM系統中的網頁主要是基于HTML、CSS和javascript技術實現的,再通過JQuery、Bootstrap等輔助工具來更好地實現所需功能和頁面的美觀。

2.2 CRM系統所用數據庫MongoDB介紹

開發一個 Web 應用程序,最重要的莫過于數據庫的使用。過去 PHP 有 MySQL 當最佳伙伴,而現在 Node.js 有MongoDB 做最佳的組合。MongoDB 是 NoSQL(非關系型數據庫)的代表之一,它是一個基于分布式文件存儲的數據庫,由 C++語言編寫,其采用 JSON/BSON 作為數據儲存和溝通的格式,亦使用 javascript 做為服務器端(Server-side)的執行語言,一切設計習慣都與 Node.js 非常吻合,搭配使用也方便快捷。

該系統使用MongoDB數據庫,它擁有 NoSQL 的普遍特性,不用預先定義數據結構(Schema),并且能夠勝任大數據量下任意字段的查詢,寫入性能高,可寫入百萬級別的數據。MongoDB比普通關系型數據庫快。因此,針對 CRM 系統大數據量的用戶數據和ESMS架構所采用的Node.js技術,使用MongoDB數據庫。

3 CRM管理系統功能模塊設計

CRM 管理系統含用戶登錄、系統首頁平臺、用戶管理、商品分析等功能模塊,基于 Node.js、Html、javascript等技術應用MongoDb數據庫搭建了這些功能平臺,用戶可以依據興趣或需求點擊相關按鈕進入相關頁面查看。

3.1 用戶登錄界面模塊

用戶使用賬號、密碼完成登錄,登錄成功會看到系統首頁,如登錄失敗會有失敗提示。登錄界面如圖2所示。

圖2 登錄界面Fig.2 Login interface

3.2 系統界面設計

系統首頁分為 3部分內容:①標題欄為業務功能區,通過點擊標題欄中的功能區可以進入到相對應的功能模塊;②報表分析區,通過采樣將客戶數據進行分析和整理,然后以圖形的方式直觀地顯示出來;③登入用戶顯示及注銷區,用戶點擊登錄名后的下拉箭頭,可以選擇退出系統,也可以修改個人信息情況。

系統首頁界面如圖3所示。

3.3 客戶管理模塊設計

客戶管理模塊界圖面如圖4所示。

該模塊主要有:會員列表、會員自定義分組、會員等級設定等功能。用戶點選菜單中的 [客戶管理] → [會員列表] 功能,系統顯示會員列表界面。會員列表界面可以支持多種分類查詢,查詢功能包含分組查詢和條件查詢。

圖3 系統首頁界面Fig.3 Interface of system homepage

圖4 客戶管理模塊界面Fig.4 Interface of client management module

在頁面中輸入匯入渠道、姓名、性別、手機號等字段中任意要搜索的值,點擊確定,觸發以下方法并傳入相應參數:

最后將查找出的 json數據返回前臺,前臺會據此畫出對應的表格等操作。

通過以上前后臺數據傳遞代碼可以看出,當請求發到Node.js后,它會采用回掉(CallBack)的方式來處理事件,整個過程沒有阻塞也不需要等待?;谶@樣的機制,理論上陸續有用戶請求連接,Node.js都可以進行響應,因此 Node.js能支持比 Java、PHP程序更高的并發量,雖然 Java、PHP也可以通過子線程的方式來實現并發請求,但顯然 Node.js的回掉函數和異步機制性能更高。由于要實現的操作系統可能會有很多的并發情況和I/O請求,因此采用Node.js和MongoDB的開發模式會更加高效易用。

同樣,其他的一些功能模塊也是采用類似的邏輯,只是按照不同的需求而搭建不同的頁面結構來完成,如商品分析、客戶服務、系統數據管理等功能。

4 結 語

介紹了Node.js以及以Node.js為基礎開發框架的應用系統 CRM。它使用 Google的 V8虛擬機來解析和執行javascript代碼,也可以說 Node.js就等于“運行時環境+庫”。它使用單線程和非阻塞I/O,這使得架構性能更好,開發代碼更為整潔,同時 Node.js是一個非??拷讓拥墓ぞ邘旎蜻\行環境,可以精細控制 Request 和 Response 的時間和內容,而且它的異步回調模式能夠更好地處理大并發事件。因此,CRM 管理系統使用 Node.js可以更好地處理多人操作的并發情況以及大數據量所帶來的問題,通過 Node.js的異步模式和其特有的監聽方式,可以更好地對用戶數據進行統計和采樣,使操作人員更好地掌握用戶的相關數據。

隨著信息化服務時代的到來,Web服務的高效性和準確性也日益重要。綜合Node.js的優勢,其在未來的Web開發和其他軟件開發領域一定會得到廣泛應用■。

[1]李松峰.JQuery基礎教程[M].北京:人民郵電出版社,2012.

[2][美]Mike,Wilson著;林冀,范俊,張鵬譯.Node應用程序構建[M].北京:人民郵電出版社,2014.

[3]黃丹華.Node.js開發實戰詳解[M].北京:清華大學出版社,2014.

[4]郭遠威.大數據存儲MongoDB實戰指南[M].北京:人民郵電出版社,2015.

[5]Bowers M,Synodinos D,Sumner V.Pro HTML5 and CSS3 Design Patterns[Z].2013:1.

[6]李安瑜.Web Service技術與實現[M].北京:國防工業出版社,2003.

猜你喜歡
頁面界面數據庫
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
數據庫
財經(2017年2期)2017-03-10 14:35:35
人機交互界面發展趨勢研究
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 日韩人妻少妇一区二区| 日本欧美成人免费| 国产精品人人做人人爽人人添| 久久亚洲综合伊人| 国产精品欧美激情| 午夜人性色福利无码视频在线观看| 欧美日韩国产在线观看一区二区三区| 久久6免费视频| 另类欧美日韩| 内射人妻无码色AV天堂| 日本a∨在线观看| 国产精品99久久久久久董美香| 色欲国产一区二区日韩欧美| 亚洲国产欧洲精品路线久久| 免费看a毛片| 成人韩免费网站| 亚洲欧美自拍中文| 91亚洲精品第一| 综合色天天| 一级做a爰片久久免费| 88av在线| 欧美一级视频免费| 久久伊人操| 国产精品深爱在线| 无码久看视频| 国产午夜精品鲁丝片| 日韩av手机在线| 免费毛片a| 久久男人视频| 亚洲女同欧美在线| 久久人午夜亚洲精品无码区| 在线视频精品一区| 干中文字幕| 亚洲码在线中文在线观看| 91日本在线观看亚洲精品| 91小视频在线播放| 激情六月丁香婷婷| 日韩精品一区二区三区视频免费看| 亚洲综合经典在线一区二区| 青青网在线国产| 免费在线国产一区二区三区精品| 99草精品视频| 国产成人综合在线观看| 22sihu国产精品视频影视资讯| 国产美女一级毛片| 性欧美精品xxxx| 丁香婷婷激情网| a级毛片一区二区免费视频| 亚洲视频无码| 日韩小视频在线播放| 国产美女在线免费观看| 中文字幕无码电影| 国产91精品调教在线播放| 午夜色综合| 国产一级二级三级毛片| 国产成人综合欧美精品久久| 亚洲国产精品一区二区第一页免 | 国产一级无码不卡视频| 97影院午夜在线观看视频| 欧美在线国产| 无码内射中文字幕岛国片| 高清精品美女在线播放| 国产精品夜夜嗨视频免费视频| 国产精品网址在线观看你懂的| 黄网站欧美内射| 日韩高清成人| 丰满人妻中出白浆| 91久久夜色精品| 一本视频精品中文字幕| 国产成人亚洲欧美激情| 久久婷婷色综合老司机| 毛片卡一卡二| 好吊妞欧美视频免费| 久久青草热| 72种姿势欧美久久久大黄蕉| 国产美女在线免费观看| 国产成人精品一区二区三在线观看| 国产乱人乱偷精品视频a人人澡| 精品视频在线观看你懂的一区| 亚洲色图另类| 国产中文一区a级毛片视频| 97精品久久久大香线焦|