我想在工控領域采用.Net最新的WPF和WCF來完成界面與監控以及分布式通信。為了說服領導寫了下面這點內容,可能有不對之處,忘高人們指教!
1、就執行速度而言,二進制型的C/C++會稍快些,但就當今的新PC來說,其電腦的硬件性能與當年不可同日而語,除非用非常老式的電腦,否則性能上是夠用了。就像分揀機的通訊方式有光電IO,紅外,導軌,漏波電纜等等,每種的速度都不一樣,總有稍快的有稍慢的,但是每一種我們都在實際的機器上使用過,所以說速度上夠用就好。在第一次運行程序時,系統會初始化緩沖,所以初始化的時間可能較之VC長(與機器性能有關)。我們可以使用2個例子來證明類似.Net的中間語言也是可以運行在工控的高性能領域的:第一,作為OPC標准的制定與開發機構,opc基金會除了二進制式的OPCDAAuto.dll,還提供了基於.Net的OpcNetApi.Com.dll和OpcNetApi.dll,從側面說明.Net可以運用於工控;第二,作為非常高性能的數據庫軟件oracle,安裝過的人都知道,安裝oracle先要裝java的運行庫jdk,而且最近oracle收購了java的開發公司SUN,說明oracle與java也越來越密不可分了。
2、不需要指針,C#不必使用指針(當然一定要使用時也是可以使用的),這樣不容易產生因指針使用不當而產生的不容易發現的錯誤。
3、垃圾回收機制使得程序自動釋放內存,可以避免忘記釋放內存而導致的內存洩露與系統崩潰。
4、必至VC更方面的使用多線程與共享資源的控制
5、TCP的Scoket是基於多線程的,不容易堵塞
6、擁有多線程異步的定時器,可以避免定時器過多或者定時器執行內容過多而產生主線程沒有相應的問題。
7、使用WCF(一種分布式的開發架構),就是使用面向服務SOA這種全新的理念來開發分布式系統,應對將來的越來越龐大的分揀系統更為合適。例如多個人工台席的程序都是基本一樣的,可以采用同一個服務端來提供數據服務,又或者一個路由主控對多個分揀機主控提供數據服務等等。
8、采用VC繪制監控畫面,不僅比較難看難畫而且長時間運行後,也許會導致意想不到的後果(由於使用的設備上下文的指針進行的繪圖工作),而WPF在繪圖與動畫制作上時行家。同時,重繪界面的工作系統會自動完成,VC則要復雜的處理函數。在調整窗體大小後,使用恰當的容器布局的WPF程序會自動調整容器內各控件的大小與布局。
9、從開發程序的效率的角度上來講,新的架構有著更多的調試手段,線程觀察,調用堆棧觀察等等,而且其他諸如控件的使用也簡單些
10、另一個值得一提的地方是,當與外系統通信時,由於通信過程中會用到中文,而不同的開發程序使用的字符集不同,像GB2312,UTF-8等等,使用.Net能輕易地改變字符集,而VC的話改變字符集相當麻煩
11、作為界面的用戶體驗,我們可以做到與VC程序開發的用戶體驗一致,但是色彩的運用上可以更為豐富,特別是WPF將界面布局與程序邏輯執行的文件想分離,使的制作界面變得簡單,也更為豐富,甚至有專業的另一套工具expression,能的制作界面、動畫、聲效等就如同制作flash
12、作為微軟現在的主打產品,相當長的時間內,可以說.Net是不會被淘汰的。舉例而言,微軟的新型操作系統windows vista就已經自帶了.Net3.0,作為系統內核。也許以後的新的操作系統會默認搭載更高版本的.Net Framework吧