複製鏈接
請複製以下鏈接發送給好友

二次開發

鎖定
二次開發,簡單的説就是在現有的軟件上進行定製修改,功能的擴展,然後達到自己想要的功能,一般來説都不會改變原有系統的內核。
中文名
二次開發
外文名
custom/tailor-made software development
性    質
現有的軟件上進行定製修改
語言基礎
語言基礎
分    類
計算機學
二次開發工具
族表、用户定義特徵等

二次開發簡介

一般的來説,一些大公司如IBM開發了一個大型的軟件系統平台,根據不同的客户的需要,一些其它的中小公司為客户根據需求在該平台上進行第二次有針對性的開發。是否提供相應的接口,有的軟件公司只提供軟件,但也有小公司連代碼一起出售,如是後者,就更方便進行二次開發。比如售票系統,車站裏面弄好了,提供幾個儲存過程給銀行,銀行就可以代理售票了,這也是一種,還有一種如我們利用delphi,C#等操作word等。 [1] 

二次開發如何進行二次開發

第一,你要有這個開源產品的所用語言的語言基礎,能看懂代碼是最基本的。
第二,你要對這個開源產品的功能和使用要有比較熟悉,因為你熟悉了,你才知道一個需求下來,你要改什麼,什麼是系統自帶的,大概要怎麼改。
第三,你要熟悉這個開源產品的數據結構,代碼結構,系統的框架結構,核心是哪裏,附屬功能是在哪裏。簡單點説,就是數據庫,代碼邏輯,文件目錄的熟悉。
第四,根據你的需求,然後利用開源產品的內核,進行系統的擴展和修改,以達到你的需求。

二次開發基本要求

第一,你要有這個開源產品的所用語言的語言基礎。 [2] 
二次開發 二次開發
第二,你要對這個開源產品的功能和使用要有比較熟悉,因為你熟悉了,你才知道一個需求下來,你要改什麼,什麼是系統自帶的,大概要怎麼改。
第三,你要熟悉這個開源產品的數據結構,代碼結構,系統的框架結構,核心是哪裏,附屬功能是在哪裏。簡單點説,就是數據庫,代碼邏輯,文件目錄的熟悉。如果是用接口式的二次開發,則需要你對這個接口比較熟悉,一般來説會有相應的文檔。
第四,根據你的需求,然後利用開源產品的內核,進行系統的擴展和修改,以達到你的需求。
第五,對其提供的SDK中的API函數有一定了解,以利於你對SDK中個函數的使用更加靈活方便。

二次開發PRO/ENGINEER二次開發

PRO/ENGINEER在提供強大的設計、分析、製造功能的同時,也為用户提供了多種二次開發工具。

二次開發工具

常用的二次開發工具有:族表(Family Table)、用户定義特徵(UDF)、Pro/Program、J-link、Pro/toolkit等。 [3] 
1)族表(Family Table) 通過族表可以方便的管理具有相同或相近結構的零件,特別適用於標準零件的管理。族表通過建立通用零件為父零件,然後在其基礎上對各參數加以控制生成派生零件。整個族表通過電子表格來管理,所以又被稱為表格驅動。
2)用户定義特徵(UDF) 用户定義特徵是將若干個系統特徵融合為一個自定義特徵,使用時作為一個整體出現。系統將UDF特徵以gph文件保存。UDF適用特定產品中的特定結構,有利於設計者根據產品特徵快速生成幾何模型。
相關書籍 相關書籍
3)Pro/ENGINEER軟件對於每個模型都有一個主要設計步驟和參數列表―Pro/Program。它是由類似BASIC的高級語言構成的,用户可以根據設計需要來編輯該模型的Program,使其作為一個程序來工作。通過運行該程序,系統通過人機交互的方法來控制系統參數、特徵出現與否和特徵的具體尺寸等。
4)J-link是PRO/ENGINEER中自帶的基於JAVA語言的二次開發工具。用户通過JAVA編程實現在軟件PRO/ENGINEER中添加功能。
5)Pro/Toolkit同J-link一樣也是Pro/E自帶的二次開發工具,在Pro/Toolkit中,PTC向用户提供了大型的C語言函數庫,函數採用面向對象的風格,通過調用這些底層函數,用户能方便而又安全地訪問Pro/ENGINEER的數據庫及內部應用程序,進行二次開發,擴展一些特定功能。
6)基於VB API的二次開發過程,Pro/E Wildfire 4.0開始可以採用Visual Basic API,通過 Visual Basic NET應用程序和應用程序 (如 Microsoft Word、Excel 或 Access) 中的 Visual Basic 宏來進行二次開發。
7)pro/web.link 這種方法使用的語言是javascript,以網頁的形式來訪問proe 模型一般情況下,採用比較多的是Pro/Toolkit,進行二次開發。

二次開發程序模式

同步模式(Synchronous Mode)和異步模式(Asynchronous Mode)。同步模式下,Pro/E根據註冊文件中的信息啓動應用程序,Pro/Toolkit應用程序和Pro/E產生各自的進程,程序的控制權在兩個進程之間切換。該應用程序不能夠獨立於Pro/E而運行。在異步模式下,Pro/Toolkit應用程序和Pro/E能夠進行各自的操作,在通信方面,異步模式使用遠程調用(Remote Procedure Calls,RPC)方式,程序(含有獨立主函數)能獨立於Pro/E啓動。由於異步模式採用遠程調用,程序運行速度相比同步模式慢很多,整合性也不好,所以一般基於Pro/E的Toolkit開發採用同步模式。在同步模式下又有兩種開發方式:動態鏈接庫(DLL Mode)和多進程(Multiprocess 或Spawned Mode)。前者為的動態連接庫文件,無自身主程序函數,直接連接於Pro/E進行程序調用。後者為.exe文件,有獨立的主程序和Pro/E進行相連接。一般為了調試方便,開發程序時可以採用多進程模式,在程序完成時,採用動態連接庫提高程序運行效率

二次開發Ecshop二次開發

ECShop是一款B2C獨立網店系統,適合企業及個人快速構建個性化網上商店。系統是基於PHP語言及MYSQL數據庫構架開發的跨平台開源程序。目前最新版本為2.7.3。
系統在實際使用過程中用户會有各種不同的需求,往往需要進行二次開發,針對這些需求 php服務中心專門建立ecshop二次開發部門,來解決用户以上問題,同時 php服務中心齊永東齊老師總結二次開發經驗錄製了大量ecshop二次開發視頻並提供免費下載。 [3] 

二次開發必備基礎

  • 非常熟悉HTML
  • 熟悉DIV+CSS的佈局
  • 紮實的PHP基礎,熟悉結構化編程,瞭解OOP,並能看懂和使用
  • 熟悉Smarty模板引擎
  • 熟悉MYSQL,掌握SQL語言

二次開發文件結構分析

\includes\cls_captcha.php: 驗證碼圖片類
\includes\cls_ecshop.php: 基礎類
\includes\cls_ecshop.php(56): 密碼編譯方法;
\includes\cls_rss.php: RSS
\includes\cls_smtp.php: SMTP 郵件類
\includes\inc_constant.php: 常量
\includes\init.php: 前台公用文件
\includes\lib_common.php: 公用函數庫
\includes\lib_goodscat.php: 前台公用函數庫
\includes\lib_insert.php: 動態內容函數庫
\includes\lib_main.php: 前台公用函數庫
\includes\lib_payment.php: 支付接口函數庫
\includes\iconv\cls_iconv.php: 字符集轉換類
\includes\ip\cls_ip.php: IP 歸屬地查詢類
\includes\modules\integrates\discuz.php: 會員數據處理類
\includes\modules\integrates\ecshop.php: 會員數據處理類

二次開發DedeCMS二次開發

二次開發必備基礎

  • 非常熟悉HTML [4] 
  • 熟悉DIV+CSS的佈局
  • 紮實的PHP基礎,熟悉結構化編程,瞭解OOP,並能看懂和使用
  • 熟悉MYSQL,掌握SQL語言

二次開發文件結構分析

熟悉每個文件的基本功能,方便做修改,知道每個文件的大概作用之後,可以方便的對文件進行修改
文件結構摘要:
  • common.inc.php 數據庫配置文件
  • config.cache.bak.php 後台系統配置備份
  • config.cache.inc.php 後台系統配置文件緩存
  • downmix.data.php 採集混淆緩存文件
  • mysql_error_track.inc MYSQL錯誤日誌
  • safequestions.php 安全問題
  • sitemap.html 站點地圖
  • sys_pay.cache.php 支付網關配置
  • template.rand.php 隨機模板設置
  • ……
· DedeCMS數據庫結構分析,至少要熟悉每個表的作用
熟悉每個表的作用,瞭解幾個核心表的設計及字段的含義,方便拿到新的需求之後,能快速的判斷是否加字段,還是新建表來處理。同時也能理解DedeCMS的數據庫設計思想,把有用的設計思路加到自己的系統中。
· DedeCMS的流程控制,及一些核心文件的解析
熟悉一些登陸,註冊,文檔管理,權限控制,分類管理,模型設置等一些常用流程控制。對幾個核心文件進行解剖,瞭解其編程技巧及安全機制
· DedeCMS插件的開發(插件和內嵌式插件)
熟悉兩種插件的編寫,插件的導入導出,插件搭配模型的使用

二次開發常見的PHP緩存技術分析

在大部份情況下我們的網站都會使用數據庫作為站點數據存儲的容器。當你執行一個SQL查詢時,典型的處理過程是:連接數據庫->準備SQL查詢->發送查詢到數據庫->取得數據庫返回結果->關閉數據庫連接。但數據庫中有些數據是完全靜態的或不太經常變動的,緩存系統會通過把SQL查詢的結果緩存到一個更快的存儲系統中儲,從而避免頻繁操作數據庫而很大程度上提高了程序執行時間,而且緩存查詢結果也允許你後期處理。 [4] 

二次開發數據緩存

這裏所説的數據緩存是指數據庫查詢緩存,每次訪問頁面的時候,都會先檢測相應的緩存數據是否存在,如果不存在,就連接數據庫,得到數據,並把查詢結果序列化後保存到文件中,以後同樣的查詢結果就直接從緩存文件中獲得。

二次開發頁面緩存

每次訪問頁面的時候,都會先檢測相應的緩存頁面文件是否存在,如果不存在,就連接數據庫,得到數據,顯示頁面並同時生成緩存頁面文件,這樣下次訪問的時候頁面文件就發揮作用了。(模板引擎和網上常見的一些緩存類通常有此功能)

二次開發內存緩存

Memcached是高性能的,分佈式的內存對象緩存系統,用於在動態應用中減少數據庫負載,提升訪問速度。
dbcached 是一款基於Memcached 和 NMDB 的分佈式 key-value 數據庫內存緩存系統。
以上的緩存技術雖然能很好的解決頻繁查詢數據庫的問題,但其缺點在在於數據無時效性,下面介紹項目中常用的方法:

二次開發時間觸發緩存

檢查文件是否存在並且時間戳小於設置的過期時間,如果文件修改的時間戳比當前時間戳減去過期時間戳大,那麼就用緩存,否則更新緩存。
設定時間內不去判斷數據是否要更新,過了設定時間再更新緩存。以上只適合對時效性要求不高的情況下使用 ,否則請看下面。

二次開發內容觸發緩存

當插入數據或更新數據時,強制更新緩存。
在這裏我們可以看到,當有大量數據頻繁需要更新時,最後都要涉及磁盤讀寫操作。怎麼解決呢?我在日常項目中,通常並不緩存所有內容,而是緩存一部分不經常變的內容來解決。但在大負荷的情況下,最好要用共享內存做緩存系統。
其缺點是,因為每次請求仍然要經過PHP解析,在大負荷的情況下效率問題還是比效嚴重,在這種情況下,也許會用到靜態緩存。

二次開發靜態緩存

這裏所説的靜態緩存是指HTML緩存,HTML緩存一般是無需判斷數據是否要更新的,因為通常在使用HTML的場合一般是不經常變動內容的頁面。數據更新的時候把HTML也強制更新一下就可以了。
參考資料
  • 1.    Kohei Otsubo,Kazuko Sakai,Masafumi Takeshita,Daijiro Harada,Koichi Azuma,Keiichi Ota,Hiroaki Akamatsu,Koichi Goto,Atsushi Horiike,Takayasu Kurata,Noriaki Nakagaki,Kaname Nosaki,Eiji Iwama,Yoichi Nakanishi,Kazuto Nishio,Isamu Okamoto.Genetic Profiling of Non‐Small Cell Lung Cancer at Development of Resistance to First‐ or Second‐Generation EGFR‐TKIs by CAPP‐Seq Analysis of Circulating Tumor DNA[J]: The Oncologist,2019,24(8)
  • 2.    陳茂勇,黃祖欽.基於AutoCAD二次開發的船體結構圖快速繪圖模式[J]:船舶,2019,(04):36-42
  • 3.    曾鋒.基於HyperMesh軟件的客車CAE前處理二次開發[J]:客車技術與研究,2019,(04):25-27
  • 4.    李垚,夏富洲,劉富奎.CAD二次開發技術在堤防工程設計中的應用[J]:水利規劃與設計,2019,(08):128-130+136+142