《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 15.?dāng)?shù)據(jù)持久化接口的使用。附:3.2發(fā)布與版本更新說明。

1.C#跨平臺物聯(lián)網(wǎng)通訊框架ServerSuperIO(SSIO)介紹

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》1.4種通訊模式機制。

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》2.服務(wù)實例的配置參數(shù)說明

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 3.設(shè)備驅(qū)動介紹

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》-4.如開發(fā)一套設(shè)備驅(qū)動,同時支持串口和網(wǎng)絡(luò)通訊。

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 5.輪詢通訊模式開發(fā)及注意事項。

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 6.并發(fā)通訊模式開發(fā)及注意事項

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 7.自控通訊模式開發(fā)及注意事項

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 8.單例通訊模式開發(fā)及注意事項

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 9. 協(xié)議過濾器,解決一包多發(fā)、粘包、冗余數(shù)據(jù)

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 10.持續(xù)傳輸大塊數(shù)據(jù)流的兩種方式(如:文件)

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 11.實現(xiàn)設(shè)備(驅(qū)動)與設(shè)備(驅(qū)動)交互和級聯(lián)控制。

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 12.服務(wù)接口的開發(fā),以及與云端雙向交互

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 13.自定義視圖顯示接口開發(fā),滿足不同的顯示需求

《連載 | 物聯(lián)網(wǎng)框架ServerSuperIO教程》- 14.配制工具介紹,以及設(shè)備驅(qū)動、視圖驅(qū)動、服務(wù)實例的掛載


 

ServerSuperIO 3.2更新說明:

1.增加IDataPersistence數(shù)據(jù)持久化接口,可以以多種形式存儲設(shè)備的參數(shù)和實時數(shù)據(jù)。現(xiàn)在僅支持Xml序列化的方式,后期會支持MongoDB、influxdb和實時數(shù)據(jù)庫(類似PI)等。
2.增加r配制參數(shù)ComNullInterval和NetNullInterval等,輪詢模式下,串口和網(wǎng)絡(luò)IO通道為空的情況下,中斷時間間隔。

下載地址:http://pan.baidu.com/s/1c1ZZLOO

更新說明地址:http://www.bmpj.net/thread-36-1-1.html


 

目       錄

15.?dāng)?shù)據(jù)持久化接口的使用... 2

15.1        概述... 2

15.2        定義IDataPersistence數(shù)據(jù)持久化接口... 2

15.3        使用IDataPersistence數(shù)據(jù)持久化接口... 5

15.?dāng)?shù)據(jù)持久化接口的使用  

15.1     概述

    ServerSuperIO 3.2版本以前,設(shè)備數(shù)據(jù)僅支持Xml序列化的方式,如果以其他方式存儲數(shù)據(jù),那么只能把持久化操作寫在設(shè)備驅(qū)動中,本質(zhì)上失去了模塊化的靈活性。3.2 版本以后增加了數(shù)據(jù)持久化接口,方便支持多種形式存儲設(shè)備的參數(shù)數(shù)據(jù)和實時數(shù)據(jù),3.2版本里現(xiàn)在僅支持Xml序列化的方式,后期會支持MongoDB、influxdb和實時數(shù)據(jù)庫(類似PI)等

15.2     定義IDataPersistence數(shù)據(jù)持久化接口

1.接口定義

   凡是涉及到不同數(shù)據(jù)存儲方式的都可以繼承IDataPersistence接口,具體代碼定義發(fā)下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public interface IDataPersistence
    {
        /// <summary>
        /// 連接數(shù)據(jù)源
        /// </summary>
        void Connect();
 
        /// <summary>
        /// 選擇數(shù)據(jù)對象
        /// </summary>
        /// <param name="devid"></param>
        /// <param name="objType"></param>
        /// <returns></returns>
        object Select(string devid, Type objType);
 
        /// <summary>
        /// 插入數(shù)據(jù)對象
        /// </summary>
        /// <param name="devid"></param>
        /// <param name="obj"></param>
        void Insert(string devid, object obj);
 
        /// <summary>
        /// 更新數(shù)據(jù)對象
        /// </summary>
        /// <param name="devid"></param>
        /// <param name="obj"></param>
        void Update(string devid, object obj);
 
        /// <summary>
        /// 刪除數(shù)據(jù)對象
        /// </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.接口實現(xiàn)形式

   如果以MongoDB、influxdb和實時數(shù)據(jù)庫,那么都可以繼承IDataPersistence接口,下面以Xml存儲數(shù)據(jù)為例,代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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框架二次開發(fā)的設(shè)備驅(qū)動涉及到兩類數(shù)據(jù):設(shè)備參數(shù)和實時數(shù)據(jù)。這兩類數(shù)據(jù)都對應(yīng)著基類:DeviceParameter和DeviceDynamic。每個設(shè)備驅(qū)動可能對應(yīng)著不同的設(shè)備參數(shù)(系數(shù)等)和實時數(shù)據(jù)(溫度、濕度、流量等),因為涉及到不同的硬件設(shè)備和傳感器??梢苑謩e繼承DeviceParameter和DeviceDynamic兩個基類,這兩個基類都具有InitDataPersistence(IDataPersistence dataPersistence)接口,實現(xiàn)不同的數(shù)據(jù)持久化存儲接口,并進行Save、Load和Delete操作。

     具體定義方法,如下代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class DeviceDyn:DeviceDynamic
{
        public DeviceDyn() : base()
        {
             this.InitDataPersistence(new XmlPersistence());
        }
 
        public override string GetAlertState()
        {
            throw new NotImplementedException("無報警信息");
        }
 
        public float Flow{set;get;}
}

    具體使用方法,如下代碼:

1
2
3
4
DeviceDyn dyn=new DeviceDyn();
 dyn.Save();  //保存
 dyn.Load();  //加載
 dyn.Delete();//刪除

     注:this.InitDataPersistence()不進行此操作,默認(rèn)使用XmlPersistence進行數(shù)據(jù)持久化。


1.[連載]《C#通訊(串口和網(wǎng)絡(luò))框架的設(shè)計與實現(xiàn)》

2.[開源]C#跨平臺物聯(lián)網(wǎng)通訊框架ServerSuperIO(SSIO)介紹

2.應(yīng)用SuperIO(SIO)和開源跨平臺物聯(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、手機App)


延伸閱讀

唯笑志在-專注物聯(lián)網(wǎng)和系統(tǒng)集成建設(shè)【物聯(lián)網(wǎng)&集成技術(shù)-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)唯笑志在-專注物聯(lián)網(wǎng)和系統(tǒng)集成建設(shè)【物聯(lián)網(wǎng)&集成技術(shù)