2016-05-20-信息系統實踐手記7-對接卡口平臺細節

来源:https://www.cnblogs.com/taichu/archive/2018/04/18/8874268.html
-Advertisement-
Play Games

layout: post title: 2016 05 20 信息系統實踐手記7 對接卡口平臺細節 key: 20160520 tags: 對接 卡口 黑名單 佈防 撤防 訂閱 取消 設備 列表 模型 modify_date: 2016 05 20 信息系統實踐手記7 對接卡口平臺細節 說明: 本文 ...



layout: post
title: 2016-05-20-信息系統實踐手記7-對接卡口平臺細節
key: 20160520
tags: 對接 卡口 黑名單 佈防 撤防 訂閱 取消 設備 列表 模型
modify_date: 2016-05-20
---

信息系統實踐手記7-對接卡口平臺細節

說明:

正文:

  • 信息系統實踐手記系列是系筆者在平時研發中先後遇到的大小的問題,其中比較典型的內容加以收集和分享。
  • 信息系統實踐手記目錄:博客園(或查看源碼的README.MD文件)

摘要:

  • 此文描述了JS和FLEX(Flash)交互的一些經驗總結。

正文

在圍繞地圖(GIS)展開的應用中,需要接入很多第三方的平臺,這在前面幾次的分享中或多或少提到過。
其中“卡口平臺”,作為和地圖應用緊密相關的專用平臺,往往由第三方供應商專門提供給公安,交警等專業用戶。
作為集成大平臺(或稱綜合應用平臺),需要接入卡口平臺來展開地圖和卡口的關聯業務。
下麵具體闡述相關內容,包括:卡口平臺業務情況;對接形式;業務平臺自身模型設計等內容。

1.卡口平臺的業務情況:

  • 卡口平臺簡介
  • 卡口平臺是一個軟體平臺,下轄很多前端設備(有時這些設備被另外的“設備平臺”管理,而卡口平臺與設備平臺有一個對接)。
  • 卡口平臺中的前端設備都是安裝在十字路口龍門架上的照相機,能瞬間產生高亮,無論夜晚還是早上都可拍照。除了攝像機,可能還有配合的速度檢測儀等設備。這些設備除了在路口,也可能安置在高架的收費站出入口,或其他交通道路的特定位置。一般一個或多個照相機“看守”一條車道,每條車道有車輛(單向)行駛方向。所以一般的二車道,四車道,甚至六車道的道路路口,你會看到龍門架上安裝了好多照相機,方向各不同相同,閃光燈此起彼伏的拍著照片。拍照的契機不一定是違章拍攝,也有正常情況下的按需拍照。
  • 使用卡口平臺的用戶一般是公安或交警部門,他們需要這些卡口信息來以管理交通,維護社會治安。實際情況中,不同的前端設備(Camera,簡稱CAM)分屬於不同的部門,但由於部門間信息沒有充分的互通(復用),肯定存在資源浪費和重覆建設的情況。
  • 卡口平臺業務
  • 卡口平臺業務很多,下麵列舉比較典型的業務及相關的系列介面。
    • 卡口過車歷史記錄查詢(業務平臺主動查詢卡口平臺);
    • 卡口訂閱和取消訂閱;
    • 卡口過車實時記錄分發(卡口平臺主動推送給業務平臺);
    • 車牌黑名單訂閱和取消訂閱;
    • 車牌黑名單告警分發(卡口平臺主動推送給業務平臺);
  • 關於卡口訂閱,取消訂閱和實時記錄分發:
    • 業務平臺可以根據用戶的需求,通過卡口平臺開放的介面,向卡口平臺訂閱卡口過車記錄的推送服務。一旦訂閱成功,該卡口的過車實時信息(車輛信息包括,車牌,車身 顏色,是否超速,照片,等等)就會主動推送到訂閱者(業務平臺)上,並呈現給用戶實時觀察。如果不需要了就按照介面來取消訂閱。這類似於設計模式里經典的訂閱分發模型。另外,分發的介面一般是業務平臺來提供,也可以是卡口平臺提供,這要看平臺間如何對接及協商(詳見:信息系統實踐手記4-平臺對接的一些思考);
  • 關於黑名單訂閱,取消訂閱和告警分發:
    • 它很類似卡口訂閱,只不過它針對的是“某車牌A”在某個時間段的活動情況。如果在訂閱(監控/布控)的時間段內,某個卡口出現了此車牌的過車記錄,則將信息包裝為“一個告警”推送給業務平臺,以便後續觸發更多的上層複雜業務及規則。

2.對接卡口平臺的細節概述:

  • 對“卡口訂閱”相關業務:
  • 卡口設備查詢(調用方向:業務平臺-->卡口平臺):這很重要,是卡口一些列業務和介面的基礎,它一般返回一個長長的卡口設備列表,這很常見。
  • 卡口訂閱介面(調用方向:業務平臺-->卡口平臺):一般是webservice的形式較多(時下流行的restful也有);可以用axis等工具從wsdl直接導出JAVA類,並添加業務代碼;(如果是特定的私有介面,比如私有格式的socket介面,雙方協定了二進位byte格式或高級一些的字元串string格式,甚至xml格式,這樣就需要另外撰寫解析代碼,稍微麻煩一些,但也可能獲得執行速度快和相對安全保密等好處);
    • request一般包含欄位:“卡口ID,訂閱開始時間,訂閱結束時間,業務平臺標記,等等”
      • “業務平臺標記”欄位:是考慮到1個卡口平臺可能為N個業務平臺提供服務,則需要區分是哪個業務平臺的訂閱。當然,做法很多,這也取決於卡口平臺支持的好不好,也就是設計的合適與否。協商介面的時候,雙方專家應該提及並討論。如果卡口平臺告知已經考慮過並有自己的區分方法(比如通過調用介面的IP或其他辦法)那也不錯。否則一個簡單通常的辦法就是增加欄位“業務平臺標記”;
      • “起止時間”欄位:如果省略,則預設訂閱規則立刻生效;
    • response一般包含欄位:“訂閱號ID,errornbr,errormsg,等等”
      • “訂閱號ID”欄位:用於取消訂閱;
    • 業務能力調查:雖然介面明確,但卡口平臺的業務能力也需要瞭解,僅舉一例供參考:比如“佈防開始和結束時間”,規則的時間間隔是否必須小於“100年”?也許用不到這麼久,但需要明確,用戶界面GUI上面需要做“匹配”的限制!諸如此類的細節很多,雙方系統專家一定要討論清晰。最好有《介面設計CHECKLIST》這樣的組織過程資產來幫助以防缺漏考慮,這在我們後續的分享中,考慮在聊敏捷開發的再細說。
  • 卡口取消訂閱介面(調用方向:業務平臺-->卡口平臺):一般和訂閱類似。
    • request一般包含欄位:“訂閱號ID,等等”;
    • response一般包含欄位:“errornbr,errormsg,等等”;
  • 卡口過車記錄上報(調用方向:卡口平臺-->業務平臺):在訂閱的有效起止時間內,或者是實時起效的情況下,一般守護的卡口有過車情況,則系統將相關信息發給業務平臺。使用較多的是http協議的post方式,帶上自定義的欄位,一般用“|”來分隔,整個字元串作為value,放到key=value的格式中。
    • request一般包含欄位:“卡口ID,卡口名稱,過車時間,車牌信息,車輛種類,照片URL,等等”;
    • response一般包含欄位:“errornbr,errormsg,等等”;(按照http協議一般是200OK返回,如果有錯誤,應按協議返回錯誤碼和錯誤消息)
  • 卡口過車記錄查詢(調用方向:卡口平臺-->業務平臺):除了推送外,查詢歷史數據是另一個手段。實現方法很多,它和平臺對接及介面定義有關,比如:
    • 業務平臺直接查詢卡口DB(此方法不太好,業務平臺會背上性能,安全性等額外的黑鍋);
    • 業務平臺直接調用卡口平臺的歷史查詢記錄介面(此法最正規,較好!)
    • 業務平臺傳輸SQL查詢語句給卡口平臺(此方法不太好,但有時因為第三方平臺的限制,只能如此)
    • 具體介面還有很多,視具體情況協商而定;
  • 對“卡口佈防”相關業務:
  • 黑名單訂閱介面(調用方向:業務平臺-->卡口平臺):形式類似卡口訂閱,略;
  • 黑名單取消訂閱介面(調用方向:業務平臺-->卡口平臺):略;
  • 黑名單過車記錄上報(調用方向:卡口平臺-->業務平臺):本質上都是過車信息的彙報,但觸發條件不同:卡口是守護“卡口”,而黑名單是守護“車牌”;
  • 黑名單記錄查詢:也類似,略;

3.業務平臺的內部卡口模型:

提示:這裡稍微提及一下業務平臺內部對卡口模型(model)的建立,安排和處理,涉及到需求分析,系統設計等內容,只提綱要供參考;

  • 業務系統絕不可以沒有專門的內部“卡口模型”來對應卡口相關業務,否則代碼就太爛了;
  • 你必須充分瞭解自己平臺的“業務規則/場景情況/自身能力/邊界條件等”;
  • 也必須充分瞭解對方平臺的“它的對接模型/它的場景/它的業務量/它的實現方法/它的一些邊界條件/等等”;
  • “卡口模型”概念上分幾塊:
  • 卡口設備列表一塊;
  • 卡口訂閱條目一塊;
  • 黑名單訂閱條目一塊;
  • 實際的過車記錄信息一塊;
  • 歷史過車信息一塊;
  • 許可權一塊(可選);等等
  • “卡口模型”設計上對應分為:
  • 卡口設備CACHE;
  • 卡口訂閱和黑名單訂閱CACHE;
  • 過車記錄實時CACHE;
  • 歷史過車記錄的TABLE(持久化);
  • 許可權數據結構;等等
  • “卡口模型”業務規則:圍繞上述的幾個概念,以及概念落地為數據結構,如CACHE,TABLE等,則可以寫出業務的偽代碼了;
  • 模型用業務抽象來屏蔽實現差異:通過上述處理,屏蔽了不同卡口平臺的區別。而實踐中不同的卡口平臺往往有諸多差異:
  • 業務功能不同:有的有黑名單,有的只有卡口,有的無實時推送,只能歷史查詢,等等;
  • 業務限制不同:有的起止時間只能支持50年,有的更長;有的返回設備列表會自動分頁,有的有限制長度,等等;
  • 業務能力不同:有的推送速度快,能支持10秒一條,甚至更快,甚至可以配置間隔;有的不能配置,有的效率很低很慢,等等;
  • 總結:其實對接卡口平臺,可以抽象的看作對接一個“能力平臺”,那麼自然要將能力集合{能力1,能力2,...}剝離清晰;然後還要設計內部模型,來分多層次支持這些能力,同時要兼顧和考慮這些抽象能力的具體實現(第三方能力平臺的供應商)程度可能有差異(並不一致),進而考慮不同程度,不同場景的對接情況。

4. 總結:

平臺對接實在是龐大巨集觀,卻又細緻入微的工作,沒有5到10年的經驗,下不來,主持不好工作,容易留下坑,日後自己還會中招。
而且分門別類的各種行業不同需求,平臺和對接方式日新月異,情況複雜多變,
往往再優秀的框架設計,模式設計,方面編程,場景推演,也難於解決一切問題,
有時甚至還是人力問題,那往往就特別遺憾(乾瞪眼,明明有人就能做的很漂亮,很優雅)。
這不可避免的就提到了研發流程和開發管理問題,也許下次有機會可以聊聊。

END


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • <div class="upload_box"> <div id="preview"> <img id="imghead" src="0.jpg" width="190" height="130"/> <!--圖片顯示位置--> </div> <b>上傳圖片</b> <input type="fil ...
  • 原因 : Vue 的組件作用域都是孤立的,不允許在子組件的模板內直接引用父組件的數據。必須使用特定的方法才能實現組件之間的數據傳遞。 props 父組件給子組件傳遞數據 props:作用是父組件給子組件傳遞數據。 語法:參考《vue(二)-父子組件語法》。 註意要點: 1: 子組件要顯式聲明需要哪些 ...
  • 最近剛辭了原來的那家公司,準備新找一份工作。其中有個公司要求會Openlayers3。一看到這個要求,就知道公司業務涉及地圖圖表比較多。 Openlayers本身是一個基於GIS地圖相關的功能豐富的JS組件庫,功能和方法很多,學起來也需要一點點慢慢學習,邊學邊用。這裡先簡單介紹一個入門實例。 代碼見 ...
  • 本文主要介紹 div 標簽設置 contenteditable = ' true ' 時,在游標位置插入輸入的內容,或在游標位置粘貼純文本內容。文中涉及知識,可參考以下: http://www.zhangxinxu.com/wordpress/2016/01/contenteditable-plai ...
  • 一、從單機到分散式: 二、分散式常見問題: 三、ACID事務的四大特性: 原子性:一次執行過程中,要麼都成功,要麼都失敗 一致性:從一個一致性狀態到另一個一致性狀態 隔離性:事務之間互不幹擾 持久性:一旦事務成功結束,它所做的操作會永久保存下來 四、CAP理論 ...待續 ...
  • 概述 1. 類 a. 類是構造對象的模板和藍圖 b. 由類構造對象的過程成為創建類的實例 c. 封裝從形式上看就是數據和行為組裝在一個包中,並對使用者隱藏數據的實現方式。其中的數據成為實例域,操縱數據的過程為方法。對每一個特定的類實例,都有一組特定的實例域值,成為對象的當前狀態。實現封裝的關鍵在於絕 ...
  • 最近由於項目驗收的事,太忙,沒有來的及更新,我不想草率的寫。我儘量把自己在工作中悟到的工作經驗分享給大家。一定要讓自己有利用價值,否則就沒有競爭力。在公司,你在老闆心中有利用價值,這樣才能加薪。做為程式員最重要的競爭力就是技術過硬,技術過硬靠的是編程思想。 在面向對象中,所有的對象都有宿主。重要的話 ...
  • layout: post title: 2016 08 03 信息系統實踐手記8 兩模塊通訊的一些事 key: 20160803 tags: 對接 卡口 黑名單 佈防 撤防 訂閱 取消 設備 列表 模型 modify_date: 2016 08 03 信息系統實踐手記8 兩模塊通訊的一些事 說明: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...