我們的項目總結(要像設計C#一樣設計C++業務系統)

來源:互聯網
上載者:User

最近我們做了一個GIS和RS系統,用戶端使用C#+ArcEngine,伺服器端使用C++,使用C++的目的是為了主要就是為了提高計算速度,伺服器端並能夠跨平台。作為一個以後要維護和複用的平台系統,伺服器端選擇可以跨平台的標準C++絕對是一個正確的選擇。而用戶端就是為了針對特殊的應用而開發的,而且對於用戶端,客戶在實際操作的時候會提出大量的問題以及需求,所以我們選擇了C#。我們的目的也是只要用戶端能夠在windows下運行即可,畢竟作為用戶端,絕大部分客戶還是使用的Windows作業系統。

 

在用戶端和伺服器互動選擇了ACE,選擇ACE當初的初衷是為了能夠讓用戶端直接動作伺服器端上的對象,而且操作方式和用戶端本地的對象一樣簡單,即遠程對象技術。但在實際操作的過程中發現這種技術的難度比較大,但鑒於系統的開發進度已經完成的情況,不可能再去替換別的技術,所以就只能接著使用者這種技術。這種技術帶來的另一個十分嚴重的問題就是一旦負責ACE的同事離職,那麼這一技術需要一個新人花費很長的時間才能接受,因為這種技術不想其他的比較常用的技術,會的人很少。要是選擇普通的類似Web Service服務的技術就可以。但當時我也是支援選擇ACE技術的人之一,現在想想挺後悔的。

 

所以勸一些設計和開發人員在選擇技術的時候,判斷的標準不是該技術是否夠新,夠酷,而是只要滿足系統需求就可以,技術要成熟,用的人比較多才是最重要的。

 

我主要負責用戶端的設計以及伺服器端基礎平台的設計,伺服器端業務部分以及通訊部分參與的比較少。所以等我過了一段時間之後,當系統進行到後期的時候,伺服器端業務部分以及通訊部分老是拖項目的後腿,有個原因是服務端的業務部分在項目時間緊的情況下完全進行了面向過程的開發,在思考了設計時也都是按照面向過程的方式進行的。這個系統本身就是一個不小的系統,業務的複雜程度可想而知,而且還需要和其他的系統進行互動。所以在項目的需求不斷添加時,伺服器端的響應速度越來越慢,並且其穩定性越來越差,開發人員不得不花費很多時間來修複系統的bug,而不是增加新的功能。

 

後來我仔細看了一下伺服器端通訊和業務部分的代碼,很混亂,代碼注釋很少,裡面有很多注釋掉的臨時代碼,也不知道被注釋掉的原因。而且業務部分的程式碼群組織方式面向過程的成分很多,沒有分層,和外部系統的互動以及對資料庫的訪問被和業務模型攙和到一起,沒有分層而言。每當我問起伺服器端怎麼會做成這樣子的時候,伺服器段主要設計開發人員給我的回覆主要有下面幾點:C++不像你們C#,需要那麼多設計,我們主要是為了實現功能,提高效率;任務那麼緊,這兩天就要出功能,就是寫臨時代碼也得把示範的功能實現啊;C++本來就很難,能把功能實現就已經很不錯了。

 

每當聽到上面的回到,我的窩了一肚子火。而且有些功能我認為在伺服器端應該很好實現,但這伺服器端卻說實現很麻煩,需要很長的時間。有時候說C++和C#不一樣,要實現一個功能沒有C#那麼簡單。我覺得有些可能是以上的原因,但絕對不是大部分。這也讓我有了學C++想法,因為每當上面的情況,我都沒實質性的答案來反駁。我知道作為一個項目的管理員,可以不負責具體技術的,主要把設計的思路和目標告訴主要的設計和開發人員就可以了,但有了這樣的設計和開發人員,讓你沒有辦法放心。

 

最終,由於多方面的原因,那個負責伺服器端的主要的設計人員離職,這導致了整個項目嚴重的滯後,更要命的是整個伺服器端的通訊問題沒有人負責了,這個本身就是一個技術痛點,就需要專門有一個人來熟悉伺服器端通訊的原理和代碼。而這將花費很長時間。

 

難道C++只是為了做底層開發,和硬體打交道或是做嵌入式系統用的嗎?C++也可以做業務系統,也可以對現實世界進行類比建模,而且這些東西在本質上和C#以及其他語言是沒有什麼區別的。並且現實中,太多用C++做的業務系統了。像ESRI的ArcEngine庫,我覺得那個庫是我現在使用的庫中組織最好的。

 

只是C++學習起來比較困難,使用起來比較麻煩,所以在應對需求不明確,容易發生變化,對效率要求不高的系統來說,確實有些大材小用,所以C#和Java等語言等較為簡單易用的語言就成了做一般業務系統的首選。但要做一個產品或是平台的核心還是需要C++的。而有些C++開發人員拿C++的難來和C#開發人員來說事,覺得使用C++就高C#一等,甚至有些看不起使用C#的人,認為那些都是一些花哨的東西,但大部分人也沒有學到C++的精髓。估計很多人都有這種心態吧。

 

一個學到C++精髓的人,肯定會明白C++和C#以及Java等並存的原因,在合適的時候選擇正確的語言和平台開發。而且物件導向和一些方案在大部分語言和平台上都是可以使用的。

 

雖然整個系統已經進入了後期階段,但還是比較被動,幸好好友幾個兄弟堅持著。這也和公司的一些政策有關。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.