Beobachtung der "Wetterbedingungen" in einem C ++ / CLI-Projekt

Jedes Team in seiner Arbeit steht vor der Notwendigkeit, eine neue Technologie oder Programmiersprache in ein Projekt einzuführen. Manchmal ist diese Implementierung erfolgreich und manchmal nicht. In diesem Artikel teilen wir unsere Erfahrungen mit C ++ / CLI.





Sonniges Wetter erwartet

Aufgabe: Entwicklung eines Softwarepakets zur Modellierung verschiedener Prozesse in Einrichtungen in den Systemen zur Sammlung, Aufbereitung und zum Transport von Kohlenwasserstoffen. Die Modellierungsobjekte können Brunnen (sowohl Produktion als auch Injektion), Pipelines, Öl-, Gas- und Wasseraufbereitungsanlagen sein. Im Durchschnitt zeichnet sich jedes Feld durch mehr als 100 Einrichtungen aus. Darüber hinaus haben einige Objekte eine Dimension in der Tiefe oder in der Länge - mehrere Kilometer. Die akzeptable Zeit für die Berechnung eines Modells eines Feldes liegt in der Größenordnung von mehreren Minuten. Um es ganz einfach auszudrücken, müssen Sie sich das folgende Objekt vorstellen:





In Form eines solchen Modells - und berechnen Sie seine Eigenschaften.





Entwicklungen: vorhandene Methoden, ein vorhandenes Projekt mit Funktionen, die teilweise die Projektziele abdecken.





: .NET/WPF, C++, , .





, , , , , , . , : C++, , :





  • ;





  • .





, , .NET/WPF, .NET/C# c P/Invoke.  P/Invoke ( ) – , , . . . :









C# , , . . , C# C++.





(, , , P/Invoke), : " ?".





.





P/Invoke, C++/CLI.





C++/CLI (C++ modified for Common Language Infrastructure) Microsoft Managed Extensions for C++. C++/CLI .NET, C++.





CLI Common Language Infrastructure – ( ), Microsoft ISO Ecma, , . . .  C++/CLI  :





 C++/CLI, , ++. C++/CLI P/Invoke, , .





P/Invoke . C++/CLI :





public ref class DeviceBaseClr : public IDisposable, public Figures::Models::IItemBase
            {
#pragma region   
            protected:
                        /// <summary>
                        /// C++ unmanaged  
                        /// </summary>
                        DeviceBase* obj_;                
#pragma endregion
#pragma region IItemBase
            public:
                        virtual IState^ GetState(DateTime date);
                        virtual IState^ SetState(DateTime date, IState^ state);
#pragma endregion
#pragma region 
            public:
                        DeviceBaseClr(IStateFactory^ stateFactory);
                        virtual ~DeviceBaseClr();
            protected:
                        !DeviceBaseClr();
#pragma endregion
            };
} // Simtep::Diagrams
#endif // _DEVICEBASECLR_H_
      
      



,   MVVM, :





, , .





-, C# (, , – C++/CLI ).





-, - , , ++.





:





:





  • C++ ( ), , CLI.





  • LINQ CLI, , , -, – .





  • «» .





  • , , , , .NET.





  • , , , CLI, - ?





  • , . .





  • , .





  • , . C++/CLI , .





:





  • C++/CLI – - . . . C++, , , C++ . , , , .





  • C# .





, , C++/CLI, . , , , , C# C++/CLI.





, , , , – . , . , :





, . :





  • CLI. . , ( ) , .





  • , . . .





  • .NET, .





  • managed unmanaged ( ).





, , ( CLI) . . , 70 .





:





  • ;





  • ;





  • ;





  • ;





  • .





:





CLI , , C++. ( ) – ++, .





RabbitMQ ZeroMQ, , , , , , – . , .





3- , - , :





  • , 3*. , , C#. , , , , .





  • 3 C++ .





, , :





C++/CLI – , . , , – – , . . . , , , , . . !





- C++/CLI, .









,








All Articles