Observación de "condiciones climáticas" en un proyecto C ++ / CLI

Cada equipo en su trabajo se enfrenta a la necesidad de introducir una nueva tecnología o lenguaje de programación en un proyecto. A veces, esta implementación tiene éxito y otras no. En este artículo, compartimos nuestras experiencias con C ++ / CLI.





Se espera tiempo soleado

Tarea: desarrollar un paquete de software para modelar diversos procesos que ocurren en las instalaciones en los sistemas de recolección, preparación y transporte de hidrocarburos. Los objetos de modelado pueden ser pozos (tanto de producción como de inyección), tuberías, instalaciones de tratamiento de petróleo, gas y agua. En promedio, cada campo se caracteriza por más de 100 instalaciones. Además, algunos objetos tienen una dimensión en profundidad o en longitud: varios kilómetros. El tiempo aceptable para calcular un modelo de un campo es del orden de varios minutos. En pocas palabras, debes imaginar el siguiente objeto:





En forma de tal modelo, y calcule sus características.





Desarrollos: métodos existentes, un proyecto existente con funcionalidad que cubre parcialmente los objetivos del proyecto.





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