Observing "weather conditions" in a C ++ / CLI project

Each team in their work is faced with the need to introduce a new technology or programming language into a project. Sometimes this implementation is successful and sometimes it is not. In this article, we share our experiences with C ++ / CLI.





Sunny weather expected

Task: to develop a software package for modeling various processes occurring at facilities in the systems of collection, preparation and transportation of hydrocarbons. The objects of modeling can be wells (both production and injection), pipelines, oil, gas and water treatment facilities. On average, each field is characterized by more than 100 facilities. Moreover, some objects have a dimension either in depth or in length - several kilometers. Acceptable time for calculating a model of one field is about a few minutes. To put it quite simply, you need to imagine the following object:





In the form of such a model - and calculate its characteristics.





Developments: existing methods, an existing project with functionality that partially covers the project's objectives.





: .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