《连载 | 物联网框架ServerSuperIO教程》- 15.数据持久化接口的使用。附:3.2发布与版本更新说明。...
1.C#跨平臺(tái)物聯(lián)網(wǎng)通訊框架ServerSuperIO(SSIO)介紹
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》1.4種通訊模式機(jī)制。
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》2.服務(wù)實(shí)例的配置參數(shù)說(shuō)明
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 3.設(shè)備驅(qū)動(dòng)介紹
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》-4.如開(kāi)發(fā)一套設(shè)備驅(qū)動(dòng),同時(shí)支持串口和網(wǎng)絡(luò)通訊。
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 5.輪詢通訊模式開(kāi)發(fā)及注意事項(xiàng)。
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 6.并發(fā)通訊模式開(kāi)發(fā)及注意事項(xiàng)
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 7.自控通訊模式開(kāi)發(fā)及注意事項(xiàng)
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 8.單例通訊模式開(kāi)發(fā)及注意事項(xiàng)
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 9. 協(xié)議過(guò)濾器,解決一包多發(fā)、粘包、冗余數(shù)據(jù)
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 10.持續(xù)傳輸大塊數(shù)據(jù)流的兩種方式(如:文件)
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 11.實(shí)現(xiàn)設(shè)備(驅(qū)動(dòng))與設(shè)備(驅(qū)動(dòng))交互和級(jí)聯(lián)控制。
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 12.服務(wù)接口的開(kāi)發(fā),以及與云端雙向交互
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 13.自定義視圖顯示接口開(kāi)發(fā),滿足不同的顯示需求
《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 14.配制工具介紹,以及設(shè)備驅(qū)動(dòng)、視圖驅(qū)動(dòng)、服務(wù)實(shí)例的掛載
?
ServerSuperIO 3.2更新說(shuō)明:
1.增加IDataPersistence數(shù)據(jù)持久化接口,可以以多種形式存儲(chǔ)設(shè)備的參數(shù)和實(shí)時(shí)數(shù)據(jù)。現(xiàn)在僅支持Xml序列化的方式,后期會(huì)支持MongoDB、influxdb和實(shí)時(shí)數(shù)據(jù)庫(kù)(類似PI)等。
2.增加r配制參數(shù)ComNullInterval和NetNullInterval等,輪詢模式下,串口和網(wǎng)絡(luò)IO通道為空的情況下,中斷時(shí)間間隔。
下載地址:http://pan.baidu.com/s/1c1ZZLOO
更新說(shuō)明地址:http://www.bmpj.net/thread-36-1-1.html
?
目?????? 錄
15.數(shù)據(jù)持久化接口的使用... 2
15.1??????? 概述... 2
15.2??????? 定義IDataPersistence數(shù)據(jù)持久化接口... 2
15.3??????? 使用IDataPersistence數(shù)據(jù)持久化接口... 5
15.數(shù)據(jù)持久化接口的使用?
15.1???? 概述
??? ServerSuperIO 3.2版本以前,設(shè)備數(shù)據(jù)僅支持Xml序列化的方式,如果以其他方式存儲(chǔ)數(shù)據(jù),那么只能把持久化操作寫(xiě)在設(shè)備驅(qū)動(dòng)中,本質(zhì)上失去了模塊化的靈活性。3.2 版本以后增加了數(shù)據(jù)持久化接口,方便支持多種形式存儲(chǔ)設(shè)備的參數(shù)數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù),3.2版本里現(xiàn)在僅支持Xml序列化的方式,后期會(huì)支持MongoDB、influxdb和實(shí)時(shí)數(shù)據(jù)庫(kù)(類似PI)等
15.2???? 定義IDataPersistence數(shù)據(jù)持久化接口
1.接口定義
?? 凡是涉及到不同數(shù)據(jù)存儲(chǔ)方式的都可以繼承IDataPersistence接口,具體代碼定義發(fā)下:
public interface IDataPersistence{/// <summary>/// 連接數(shù)據(jù)源/// </summary>void Connect();/// <summary>/// 選擇數(shù)據(jù)對(duì)象/// </summary>/// <param name="devid"></param>/// <param name="objType"></param>/// <returns></returns>object Select(string devid, Type objType);/// <summary>/// 插入數(shù)據(jù)對(duì)象/// </summary>/// <param name="devid"></param>/// <param name="obj"></param>void Insert(string devid, object obj);/// <summary>/// 更新數(shù)據(jù)對(duì)象/// </summary>/// <param name="devid"></param>/// <param name="obj"></param>void Update(string devid, object obj);/// <summary>/// 刪除數(shù)據(jù)對(duì)象/// </summary>/// <param name="devid"></param>/// <param name="obj"></param>void Delete(string devid,object obj);/// <summary>/// 判斷是否存在/// </summary>/// <param name="devid"></param>/// <param name="obj"></param>/// <returns></returns>bool Exist(string devid,object obj); }?2.接口實(shí)現(xiàn)形式
?? 如果以MongoDB、influxdb和實(shí)時(shí)數(shù)據(jù)庫(kù),那么都可以繼承IDataPersistence接口,下面以Xml存儲(chǔ)數(shù)據(jù)為例,代碼如下:
public class XmlPersistence:IXmlPersistence{public void Connect(){}public object Select(string devid, Type objType){string path = GetSavePath(devid,objType);return SerializeUtil.XmlDeserailize(path, objType);}public void Insert(string devid, object obj){string path = GetSavePath(devid,obj.GetType());SerializeUtil.XmlSerialize(path, obj);}public void Update(string devid, object obj){this.Insert(devid, obj);}public void Delete(string devid,object obj){string path = GetSavePath(devid,obj.GetType());if (System.IO.File.Exists(path)){System.IO.File.Delete(path);}}public bool Exist(string devid, object obj){string path = GetSavePath(devid, obj.GetType());return System.IO.File.Exists(path);}......}15.3???? 使用IDataPersistence數(shù)據(jù)持久化接口
???? ServerSuperIO框架二次開(kāi)發(fā)的設(shè)備驅(qū)動(dòng)涉及到兩類數(shù)據(jù):設(shè)備參數(shù)和實(shí)時(shí)數(shù)據(jù)。這兩類數(shù)據(jù)都對(duì)應(yīng)著基類:DeviceParameter和DeviceDynamic。每個(gè)設(shè)備驅(qū)動(dòng)可能對(duì)應(yīng)著不同的設(shè)備參數(shù)(系數(shù)等)和實(shí)時(shí)數(shù)據(jù)(溫度、濕度、流量等),因?yàn)樯婕暗讲煌挠布O(shè)備和傳感器。可以分別繼承DeviceParameter和DeviceDynamic兩個(gè)基類,這兩個(gè)基類都具有InitDataPersistence(IDataPersistence dataPersistence)接口,實(shí)現(xiàn)不同的數(shù)據(jù)持久化存儲(chǔ)接口,并進(jìn)行Save、Load和Delete操作。
???? 具體定義方法,如下代碼:
public class DeviceDyn:DeviceDynamic {public DeviceDyn() : base(){this.InitDataPersistence(new XmlPersistence());}public override string GetAlertState(){throw new NotImplementedException("無(wú)報(bào)警信息");}public float Flow{set;get;} }? ? 具體使用方法,如下代碼:
DeviceDyn dyn=new DeviceDyn();dyn.Save(); //保存dyn.Load(); //加載dyn.Delete();//刪除???? 注:this.InitDataPersistence()不進(jìn)行此操作,默認(rèn)使用XmlPersistence進(jìn)行數(shù)據(jù)持久化。
1.[連載]《C#通訊(串口和網(wǎng)絡(luò))框架的設(shè)計(jì)與實(shí)現(xiàn)》
2.[開(kāi)源]C#跨平臺(tái)物聯(lián)網(wǎng)通訊框架ServerSuperIO(SSIO)介紹
2.應(yīng)用SuperIO(SIO)和開(kāi)源跨平臺(tái)物聯(lián)網(wǎng)框架ServerSuperIO(SSIO)構(gòu)建系統(tǒng)的整體方案
3.C#工業(yè)物聯(lián)網(wǎng)和集成系統(tǒng)解決方案的技術(shù)路線(數(shù)據(jù)源、數(shù)據(jù)采集、數(shù)據(jù)上傳與接收、ActiveMQ、Mongodb、WebApi、手機(jī)App)
5.ServerSuperIO開(kāi)源地址:https://github.com/wxzz/ServerSuperIO
物聯(lián)網(wǎng)&集成技術(shù)(.NET) QQ群:54256083?
轉(zhuǎn)載于:https://www.cnblogs.com/lsjwq/p/6370986.html
總結(jié)
以上是生活随笔為你收集整理的《连载 | 物联网框架ServerSuperIO教程》- 15.数据持久化接口的使用。附:3.2发布与版本更新说明。...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 良心安利芒种节气海报设计素材
- 下一篇: React基础(肆)———状态和循环渲染