《連載 | 物聯網框架ServerSuperIO教程》- 15.數據持久化接口的使用。附:3.2發佈與版本更新說明。

1.C#跨平臺物聯網通信框架ServerSuperIO(SSIO)介紹html

《連載 | 物聯網框架ServerSuperIO教程》1.4種通信模式機制。git

《連載 | 物聯網框架ServerSuperIO教程》2.服務實例的配置參數說明github

《連載 | 物聯網框架ServerSuperIO教程》- 3.設備驅動介紹數據庫

《連載 | 物聯網框架ServerSuperIO教程》-4.如開發一套設備驅動,同時支持串口和網絡通信。網絡

《連載 | 物聯網框架ServerSuperIO教程》- 5.輪詢通信模式開發及注意事項。併發

《連載 | 物聯網框架ServerSuperIO教程》- 6.併發通信模式開發及注意事項框架

《連載 | 物聯網框架ServerSuperIO教程》- 7.自控通信模式開發及注意事項ide

《連載 | 物聯網框架ServerSuperIO教程》- 8.單例通信模式開發及注意事項模塊化

《連載 | 物聯網框架ServerSuperIO教程》- 9. 協議過濾器,解決一包多發、粘包、冗餘數據工具

《連載 | 物聯網框架ServerSuperIO教程》- 10.持續傳輸大塊數據流的兩種方式(如:文件)

《連載 | 物聯網框架ServerSuperIO教程》- 11.實現設備(驅動)與設備(驅動)交互和級聯控制。

《連載 | 物聯網框架ServerSuperIO教程》- 12.服務接口的開發,以及與雲端雙向交互

《連載 | 物聯網框架ServerSuperIO教程》- 13.自定義視圖顯示接口開發,知足不一樣的顯示需求

《連載 | 物聯網框架ServerSuperIO教程》- 14.配製工具介紹,以及設備驅動、視圖驅動、服務實例的掛載


 

ServerSuperIO 3.2更新說明:

1.增長IDataPersistence數據持久化接口,能夠以多種形式存儲設備的參數和實時數據。如今僅支持Xml序列化的方式,後期會支持MongoDB、influxdb和實時數據庫(相似PI)等。
2.增長r配製參數ComNullInterval和NetNullInterval等,輪詢模式下,串口和網絡IO通道爲空的狀況下,中斷時間間隔。

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

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


 

目       錄

15.數據持久化接口的使用... 2

15.1        概述... 2

15.2        定義IDataPersistence數據持久化接口... 2

15.3        使用IDataPersistence數據持久化接口... 5

15.數據持久化接口的使用 

15.1     概述

    ServerSuperIO 3.2版本之前,設備數據僅支持Xml序列化的方式,若是以其餘方式存儲數據,那麼只能把持久化操做寫在設備驅動中,本質上失去了模塊化的靈活性。3.2 版本之後增長了數據持久化接口,方便支持多種形式存儲設備的參數數據和實時數據,3.2版本里如今僅支持Xml序列化的方式,後期會支持MongoDB、influxdb和實時數據庫(相似PI)等

15.2     定義IDataPersistence數據持久化接口

1.接口定義

   凡是涉及到不一樣數據存儲方式的均可以繼承IDataPersistence接口,具體代碼定義發下:

public interface IDataPersistence
    {
        /// <summary>
        /// 鏈接數據源
        /// </summary>
        void Connect();

        /// <summary>
        /// 選擇數據對象
        /// </summary>
        /// <param name="devid"></param>
        /// <param name="objType"></param>
        /// <returns></returns>
        object Select(string devid, Type objType);

        /// <summary>
        /// 插入數據對象
        /// </summary>
        /// <param name="devid"></param>
        /// <param name="obj"></param>
        void Insert(string devid, object obj);

        /// <summary>
        /// 更新數據對象
        /// </summary>
        /// <param name="devid"></param>
        /// <param name="obj"></param>
        void Update(string devid, object obj);

        /// <summary>
        /// 刪除數據對象
        /// </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.接口實現形式

   若是以MongoDB、influxdb和實時數據庫,那麼均可以繼承IDataPersistence接口,下面以Xml存儲數據爲例,代碼以下:

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數據持久化接口

     ServerSuperIO框架二次開發的設備驅動涉及到兩類數據:設備參數和實時數據。這兩類數據都對應着基類:DeviceParameter和DeviceDynamic。每一個設備驅動可能對應着不一樣的設備參數(係數等)和實時數據(溫度、溼度、流量等),由於涉及到不一樣的硬件設備和傳感器。能夠分別繼承DeviceParameter和DeviceDynamic兩個基類,這兩個基類都具備InitDataPersistence(IDataPersistence dataPersistence)接口,實現不一樣的數據持久化存儲接口,並進行Save、Load和Delete操做。

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

public class DeviceDyn:DeviceDynamic
{
        public DeviceDyn() : base()
        {
             this.InitDataPersistence(new XmlPersistence());
        }

        public override string GetAlertState()
        {
            throw new NotImplementedException("無報警信息");
        }

        public float Flow{set;get;}
}

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

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

     注:this.InitDataPersistence()不進行此操做,默認使用XmlPersistence進行數據持久化。


1.[連載]《C#通信(串口和網絡)框架的設計與實現》

2.[開源]C#跨平臺物聯網通信框架ServerSuperIO(SSIO)介紹

2.應用SuperIO(SIO)和開源跨平臺物聯網框架ServerSuperIO(SSIO)構建系統的總體方案

3.C#工業物聯網和集成系統解決方案的技術路線(數據源、數據採集、數據上傳與接收、ActiveMQ、Mongodb、WebApi、手機App)

5.ServerSuperIO開源地址:https://github.com/wxzz/ServerSuperIO

物聯網&集成技術(.NET) QQ羣54256083 

相關文章
相關標籤/搜索