在現在的條件下使用Node.js開發複雜業務邏輯的ERP應用可行嗎?

原本公司項目是C/S架構,現在要轉B/S架構(其實就是一個破ERP,OA)的東西,首席架構師(他沒Web項目經驗)表示要用Node.js翻寫出B/S版本的軟體(C++代碼行數在60W左右),今天的討論中我投了反對票,表示沒必要玩這麼花哨,用.NET或者J2EE就行,因為.net和j2ee已經有足夠多的輪子,比如ORM框架,IOC框架,可以極大程度避免再造輪子,而且項目本身對並發和性能考慮都是非常低的,根本不會有超過7個人同時用我們開發的破玩意。PS:公司里只有我是做過生產環境Web開發的,我做過JQUERY和J2EE開發,其他人還沒寫過生產環境Javascript和Java代碼。我們爭論了很久,我總覺得NodeJS寫複雜業務邏輯費勁,雖然搭建一個運行的Demo肯定比.NET或者J2EE簡單多了,但是一旦.NET或者J2EE的基礎建設完成後,向裡面填充業務邏輯是很快的,而且能開發高度服用的模塊


用node開發erp,真是揚短避長啊...

node的典型用途是高並發io密集的場景,而典型的erp對並發要求很低,卻對業務邏輯的複雜性、與外部系統集成度、服務與數據的可靠性和穩定性等東西要求很高,這些方面node完全不擅長啊,也沒有任何相關領域的積累,甚至連個像樣的reference都沒有

除非是快速搭建原型驗證想法(而快速搭建原型用RoR好不好),否則用node真是不知道在想啥

-----------------------------------------------------------------------------------------

不過誰知道呢,總要有第一個吃螃蟹的人,沒準折騰折騰發現node寫enterprise系統原來也不錯呢,就像當年大家都不認為javascript可以寫後端一樣,哈哈

祝你們好運


樓主思路很明了啊,只用贊就行了…


別用mongodb,做起來也無妨。ls lx說的那些包 比如處理word 工作流 全文索引 nodejs都有相關模塊。mvc框架很多 環境簡單 部署方便 做起來不比java php差。

前提你要對js很熟,能自己找到所需模塊,看懂文檔,能改bug或擴展,實在沒有能自己寫一個出來……

那你就用吧……挺好的。


nodejs現在你就當個玩具好了,特別是沒有相關經驗的時候。


個人類似的經驗是前端Angular.js+後台通過Node.js連接資料庫做的一個黨員管理系統,業務邏輯基本放在前段和資料庫了。以減輕Node本身的負擔做的設計,更多的只是通過Node提供Restful API,這對寫B/S來說非常舒適。

我個人覺得Node和javascript學習成本低,而且開發速度不比RoR慢,這個才是相較.NET和J2EE更值得考慮的因素。

不過考慮到可維護性的話。動態語言有天生的不足,Javascript的可靠性和穩定性肯定不如C#和Java有保障一些。另外Node只發展了這幾年,不如另外兩個成熟,用這個也得冒相應的風險。

但是Node的模塊設計很不錯啊,而且工具鏈也比較完善。非同步問題完全可以用Async或Q來解決。願意做嘗試也未嘗不可。

就本問題背景而言,60W的C++代碼用Node重構的話,代碼量肯定會減少不少(雖然我沒有類似重構經驗,僅憑猜測)。維護起來放不方便,基本上看模塊的劃分和個人經驗了。

不過,C/S改B/S難道就要把原來的C++代碼廢棄嗎?我個人認為的使用Node的話,最佳方案就是用Node與C++交互(畢竟Node也是用C++寫的)。為原來的伺服器寫一份用於瀏覽器的Restful API,然後使用前端MV*框架就可以了。

呃呃,這樣子的話好像不用Node也可以......

最後我不認為用Node對資料庫的操作會存在問題。關鍵點在於Node對Office的操作很蛋疼,我當初處理excel還是先將它轉成cvs格式。雖然有Node-Office的庫,但還是讓我有不如自己寫的衝動。不過後來發現也有處理比較方便的庫,但是沒有實際使用就不多說了。


erp還是用java吧。萬一要用工作流呢?萬一要用全文檢索呢?萬一要解析word文檔呢?這些java都有現成的解決方案。


要是你們公司有錢有時間的話,玩玩也沒什麼。



ERP基本是關係資料庫的問題,跟你用什麼來寫你的伺服器其實沒什麼關係。


企業開發中的生態也就是Java和.net最全,其它也就打打下手或者局限於特定的子功能。

你們同事打算重新建立一套生態?分分鐘坑死你沒商量。


每一種技術都有其適合的場景,樓主的思路已經很明確了,對於企業級的應用,應用的健壯性應該是排在第一位的,選用更成熟的技術往往更好。像node.js和ror這種技術,更適合你不斷嘗試市場需求的情況下快速迭代的利器。


《編寫可維護的JavaScript代碼》編寫可維護的JavaScript (豆瓣)

慢走不送


完!全!沒!必!要!


nodejs主要是為了解決高並發,這種很少人用的系統用nodejs沒有意義。
不要為了用新技術就不管場景。


有一類人,只要有機會就會嘗試新技術,或者為語言風格而痴迷,我想你們架構師就是如此。我之前玩過php,Java。php編程風格是比較簡潔的,如果配合上國產神器thinkphp就更簡單了。但自從玩了nodeJs之後,用了express後,對PHP再也無愛了。


erp 是c#和java 的專場 很多中間件 你要自己開發?扯談吧


既然樓主要的是可維護性,那麼強烈不建議:大多數人不熟悉js,非同步編程很傷神;Node的API也沒那麼好用(主要是對拋出異常的情景不熟悉。。)。

來個非同步編程直觀的差別,比如要實現鏈接隊列發送請求。

其他語言:

for (i = 0,len = len(links); i &< len ;i++) { //發送請求 //獲得結果,doSomething; }

javascript版本要是把非同步變成同步的話就要處理一下。。我這裡用的是遞歸:

var i = 0,len = links.length;
var getPageByLinks = function () {
if (i &<= len) { //發送請求 http.get(links[i],function (response) { var pageContent = []; response.on("data",function (chunk) { pageContent.push(chunk); }); //綁定獲得結果後的動作 response.on("end",function () { //doSomething; //遞歸調用; getPageBylinks(); }); }); } }

我就想獲得一個結果而已,為什麼還要我手動綁定data事件。。(這裡求指導)

有沒有一種淡淡的憂傷,不知道寫ERP這種大型程序複雜度是不是突破天際(當然我覺得絕大多數問題都是可以解決的,畢竟Node已經出來4年了)。。。。如果你們非常愛折騰。。可以試試。。


樓主工作經驗還是稍顯不足啊,工作年頭長的工程師就明白,不是每個人都有機會看著一個大項目怎麼一步一步死掉的,這種體驗很難得。所以,大膽的附和架構師的建議,愉快的和公司小夥伴一起用JavaScript擼ERP吧!


這種事情,其實說白了,純粹公司層面的事情。團隊哪些技術懂的多,就用哪種技術,僅此而已。

那為什麼用node.js?首先方便全棧,減少前後端溝通成本比(我的經驗是非常可觀);其次對實時應用有著強大的支持力度,如果項目中,這一塊是重頭戲,那麼就要好好考慮nodejs。

我覺得,並不存在某種技術完全碾壓另外一種技術,各個技術有強項有若想又有許多互相重疊的部分,所有要看時機項目的情況。

我做了幾個erp項目,對交互以及新的技術(實時地理信息,實時社交,異常龐大的數據),有很高的要求。這種情況下,我們就考慮過js全棧的開發,不過最終還是選擇.net,因為項目時間緊迫,沒有時間去學習新的技術。

雖然我說的那些問題,最終都解決了,但是付出的代價也很大,我們購置了大量的資料庫,並配備了大量人員做後期維護,而且開發過程中,前後端的交互協調也出現了大量的問題,花費了大量的時間。

這種技術上的,工具上的爭論有很多,往往沒有結果,最佳的解決方式就是各方面評估,這顯然不現實,所以往往最後的結果就是某位領導一拍腦門子就行了。起碼可行,因為出錯了,他會擔這個責任。

最後,code for 飯,還是code for fun,你們領導qq是多少?


我也在嘗試用NodeJS做信息化系統的B/S框架,包括移動端APP:defans/cmpage - 碼雲 - 開源中國


推薦閱讀:

ASP.NET MVC 最好的視圖引擎是什麼?
微軟宣布 .NET 開源了,如何學好.NET?
微軟開源 .NET 和其他相關項目會造成什麼影響?
學了C#語言可以從事哪些工作?

TAG:JavaScript | Java | NET | Nodejs | JavaEE |