前言
本文主要介紹我開發的幾款軟件產品,大概介紹一下功能。可以讓讀者了解本人的開發能力,所擅長的方面。有相關開發需求可以聯系作者。
本人開發軟件多年,從事的行業也多種多樣;自然接觸了不同的業務,開發了各類軟件產品。工作的主線一直是windows下C/S模式軟件開發; 最近也開始學習asp.net core。
軟件開發和讀書一樣,先由厚到薄,再有薄到厚。純粹的軟件理論總是很空洞,讓人無法適從。如果沒有一定的理論做指導,就像在茫茫大海中航行,很容易迷失方向。理論和實踐要不斷的互動,相互驗證,不斷的領悟。通過多年的軟件開發,不斷的學習總結,本人在理論和實踐上都有很大的突破,開發各類軟件更加得心應手。
軟件開發需要多種技能,每個人都不可能成為全才,好像也沒必要。比較現實的還是“一專多能”。要有自己的優勢,同時知識面也不要太窄。國內軟件開發大部分是“游擊戰”,主力軟件開發人員很少,開發過程沒有固定的章法。軟件的成敗很大程度上依賴軟件開發人員個人能力,個人英雄主義的色彩比較濃。這種開發模式也是有好處的,在某種程度上能減少開發成本。小的軟件產品多人開發,並不能提高效率;如果開發人員能力差別大,溝通能力不強,更易造成開發延期。
程序功能點及實現方案
一個好的軟件產品體現在各個方面,不能有任何”短板“。一款產品可以分解為多個功能的組合。下面列出軟件開發相關的功能點,以及本人應對方案。
1 通信(Socket): TCP、UDP通信已成為業界標准。UDP通信處理起來較為簡單,它是面向消息的協議;你發送100個字節的數據,對方也會收到100個字節,而不會把100字節分成兩個包來發送。TCP通信是面向數據流的,涉及粘包的處理;在Windows下,實現TCP服務器效率最高的方式就是采用IOCP(完成端口)。實現一個穩定高效的TCP服務器難度非常大。本人根據自己的開發經營,封裝了一套非常易於開發的網絡庫(由c++和c#兩個版本),該庫完全根據windows API編寫,達到了易用性和處理效率的統一。在此庫的基礎上,又開發了一套應用層協議,開發人員不再用關心底層處理細節,大大提高了工作效率。
2 界面:開發效率最高的就是WPF;雖然有人對WPF有些詬病,認為WPF的一些概念晦澀難解,華而不實。我剛開始接觸WPF也經歷了幾個月的迷茫期。因工作的需要,先后利用WPF開發了多款產品;對WPF有了全面的了解,才理解了微軟如此設計WPF的苦衷。WPF設計的目標是實現快速界面開發,同時能滿足各個方面的靈活需求。而一些中間件DevExpress,是無法達到WPF的靈活性的。我也用vc++、Winform開發過多款產品;現在,除非特別需求,我都采用WPF開發界面。
3 數據庫: 首選mysql。幾年前,推薦使用sql server。不過,mysql最近幾年發展很快,功能也很強,也易於使用;前端工具workbench界面也很友好;我認為方便性已不輸於sql server。c# EF模式使數據庫開發難度大大降低,但是我不推薦使用該模式。這種模式封裝的太深,對后期處理和優化帶來很大的麻煩。本人對數據庫連接,封裝了一些輕量級的類,能減輕開發的工作量。
4 視頻: H264是現在主流壓縮格式,解碼采用ffmpeg。本人對ffmpeg進一步封裝,以便於c#調用。視頻解碼后,轉換為bitmap圖片,每秒按需要的幀數貼圖,就是視頻。如果需要對視頻進一步處理,比如顯示文字,可以用GDI+。
5 音頻: 音頻處理分為播放和錄音兩類。對這些處理,微軟提供了一些列函數,稱之為Waveform Functions。本人對這些函數做了進一步封裝,可以很方便的實現播放和錄音功能。
6 GIS:這里所說GIS主要是應用,而不是制作。可以采用GMap控件,該控件可用在winform或wpf項目中。該控件的功能可能不是非常強大,但是擴展性很強。可以方便的實現標注、軌跡回放、測距等操作,並且這些操作都是可以定制的。
7 圖像處理:采用WPF或winform。winform就是采用GDI+繪圖,GDI+是一種比較老的技術,無法利用新的顯卡性能;當有大量繪圖操作時,不停的重繪,會導致性能降低。WPF繪圖是“保持型”的,只需要繪制一次就行,當圖片被遮擋,也不需要重繪。對於圖像旋轉、摳圖、半透明能特效,采用WPF都可以很方便的實現。
本人開發的程序一覽
1 WPF開發的CAD文件處理程序
涉及CAD文件的讀取分析,大量繪圖操作。
2 移動信令采集解析
對移動通信GSM信令解析,消息量非常大,高峰每秒30萬個數據包,帶寬占用500M。
3 視頻監控平台
符合國標JT1076標准的視頻平台,包括RTSP視頻服務器和視頻播放客戶端;勻由本人獨立開發。
4 對講監控管理平台
實現對對講機的監控,通過電腦與對講機通話、管理。
5 WinForm版圖像編輯小程序(實現圖像拖動、縮放、旋轉、摳圖)
后記:一個人成長為專業的開發人員不是一帆風順的,經歷的各種磨難只有自己才能體會。對本人的開發經驗和開發產品的總結,不是為了”炫耀“。軟件開發本身就是一種技巧性非常強的工作;專業的人做專業的事,效率是最高的。經過多年的開發積累,掌握了很多開發技巧,但如果僅僅為了工作,大部分經驗就會付之高閣。所以,在這里做一下宣傳,希望有相關開發需求者聯系我。在工作之余,做些兼職開發;本人會保證軟件質量、易用性,讓客戶放心、滿意;發揮自己長處,解決你的問題,各取所需!QQ:13712486。