Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel-Tutorial zur Gruppierung von Netzwerkkommunikations-Controllern zur Verbesserung der interaktiven Lastausgleichsfunktionen

Beispiel-Tutorial zur Gruppierung von Netzwerkkommunikations-Controllern zur Verbesserung der interaktiven Lastausgleichsfunktionen

零下一度
零下一度Original
2017-06-23 16:54:421627Durchsuche

20.1 Übersicht

ServerSuperIO hatte ursprünglich nur einen Netzwerkcontroller im Netzwerkkommunikationsmodus. Im automatischen Modus, im gleichzeitigen Modus und im Singleton-Modus werden die zurückgegebenen Daten asynchron verarbeitet, und es stellt sich keine Frage der Leistungsverbesserung. Im Abfragemodus muss ein Netzwerkcontroller jedoch das Senden und Empfangen des Gerätetreibers nacheinander ausführen, sodass der Abfragezyklus möglicherweise zu lang ist und die Häufigkeit des Datenlesens nicht erreicht werden kann.

Um die oben genannten Probleme zu lösen, wurde den Gerätetreiberparametern jetzt die Netzwerkcontroller-Gruppierungsfunktion hinzugefügt. Der Netzwerkcontroller steuert den Gerätetreiber entsprechend dem durch die Geräteparameter festgelegten Gruppennamen. Im Abfragemodus gibt es beispielsweise 1000 Gerätetreiber, und für alle 10 Gerätetreiber kann derselbe Gruppenname festgelegt werden. Wenn die Daten alle 1 Sekunde gelesen werden, erfolgt die Abfrage Der Zyklus des Gerätetreibers beträgt 10 Sekunden, ähnlich wie bei anderen Netzwerkcontrollern.

20.2 Netzwerk-Controller-Schema

Gemäß der ControllerGroup, die die Netzwerkparameter des Gerätetreibers festlegt, kann der Gerätetreiber für die Ausführung in verschiedenen Netzwerksteuerungen zugewiesen werden. und ist anwendbar Für Abfrage-, automatische Steuerungs-, Parallelitäts- und Singleton-Steuerungsmodi.

20.3 Diagramm des seriellen Port-Controllers

Übrigens kann der Serial-Port-Controller verschiedenen Serial-Port-Controllern zugewiesen werden, indem die serielle Port-Nummer des eingestellt wird Gerätetreiber. Dieser Controller kann nur im Polling-Steuerungsmodus verwendet werden.

20.4 Beispielcode für die Gruppierung von Gerätetreiber-Netzwerkcontrollern

        static void Main(string[] args)
        {
            string deviceID = "2";
            DeviceDriver dev3 = new DeviceDriver();
            dev3.DeviceParameter.DeviceName = "设备2";
            dev3.DeviceParameter.DeviceAddr = 0;
            dev3.DeviceParameter.DeviceID = deviceID;
            dev3.DeviceParameter.DeviceCode = deviceID;
            dev3.DeviceDynamic.DeviceID = deviceID;
            dev3.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev3.DeviceParameter.NET.RemotePort = 9600;
            dev3.DeviceParameter.NET.ControllerGroup = "G2";
            dev3.CommunicateType = CommunicateType.NET;
            dev3.DeviceParameter.NET.WorkMode = WorkMode.TcpServer;
            dev3.Initialize(deviceID);
 
            deviceID = "3";
            DeviceDriver dev4 = new DeviceDriver();
            dev4.DeviceParameter.DeviceName = "设备3";
            dev4.DeviceParameter.DeviceAddr = 0;
            dev4.DeviceParameter.DeviceID = deviceID;
            dev4.DeviceParameter.DeviceCode = deviceID;
            dev4.DeviceDynamic.DeviceID = deviceID;
            dev4.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev4.DeviceParameter.NET.RemotePort = 9600;
            dev4.DeviceParameter.NET.ControllerGroup = "G3";
            dev4.CommunicateType = CommunicateType.NET;
            dev4.Initialize(deviceID);

            IServer server = new ServerManager().CreateServer(new ServerConfig()
            {
                ServerName = "服务1",
                ComReadTimeout = 1000,
                ComWriteTimeout = 1000,
                NetReceiveTimeout = 1000,
                NetSendTimeout = 1000,
                ControlMode = ControlMode.Loop,
                SocketMode = SocketMode.Tcp,
                StartReceiveDataFliter = false,
                ClearSocketSession = true,
                StartCheckPackageLength = false,
                CheckSameSocketSession = false,
            });

            server.AddDeviceCompleted += server_AddDeviceCompleted;
            server.DeleteDeviceCompleted += server_DeleteDeviceCompleted;
            server.SocketConnected+=server_SocketConnected;
            server.SocketClosed+=server_SocketClosed;
            server.Start();
 
            server.AddDevice(dev3);
            server.AddDevice(dev4);
 
            while ("exit"==Console.ReadLine())
            {
                 server.Stop();
            }
        }

Das obige ist der detaillierte Inhalt vonBeispiel-Tutorial zur Gruppierung von Netzwerkkommunikations-Controllern zur Verbesserung der interaktiven Lastausgleichsfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Beispielcode zum JSON-ErgebnisNächster Artikel:Beispielcode zum JSON-Ergebnis