Diplomová práce zkoumá a popisuje možnosti využití unmanaged kódu pomocí programovacího jazyka C# v řízeném prostředí Common Language Runtime (CLR). Práce se skládá celkem z pěti částí. Teoretická část se převážně věnuje rozboru toho, jak CLR pracuje s pamětí. Dále jsou krátce rozebrány způsoby interoperability mezi řízeným a neřízeným kódem a stručně je popsána datová struktura, která byla využita při testování. V praktické části je za použití jazyků C#, C a C++ a technologií Platform Invoke a C++/CLI realizovaná komunikace mezi řízeným a nativním kódem. Dále jsou popsány nejužitečnější části jednotlivých implementací. Následuje grafická prezentace a porovnání testů navržených implementací. V závěru práce jsou vyhodnoceny výsledky testů a je uvedeno doporučení pro správné používání interoperability v .NET.
Annotation in English
This diploma thesis explores and describes the ways of using unmanaged code by the C# programming language in the managed Common Language Runtime (CLR) environment. The theoretical part is mainly devoted how CLR works with memory. Further, the methods of interoperability between managed and native code are briefly discussed. Farther the data structure that using in tests is briefly described. The second part is practical, in which is implemented the communication between managed and native code, using C#, C and C++ with Platform Invoke and C ++/CLI technologies. Then author describes the most useful parts of each implementations and graphically presents results of his own tests and their comparisons. At the end of this thesis, the author evaluates the most impotent test results and give his recommendations for the correct use of interoperability in .NET.
Keywords
C++/CLI, Common Language Runtime, nativní kód, Platform Invoke, .NET Framework, programovací jazyky C#, C, C++, unmanaged kód
Keywords in English
C++/CLI, Common Language Runtime, native code, Platform Invoke, .NET Framework, programming languages C#, C, C++, unmanaged code
Length of the covering note
58 s. (65 782 znaků)
Language
CZ
Annotation
Diplomová práce zkoumá a popisuje možnosti využití unmanaged kódu pomocí programovacího jazyka C# v řízeném prostředí Common Language Runtime (CLR). Práce se skládá celkem z pěti částí. Teoretická část se převážně věnuje rozboru toho, jak CLR pracuje s pamětí. Dále jsou krátce rozebrány způsoby interoperability mezi řízeným a neřízeným kódem a stručně je popsána datová struktura, která byla využita při testování. V praktické části je za použití jazyků C#, C a C++ a technologií Platform Invoke a C++/CLI realizovaná komunikace mezi řízeným a nativním kódem. Dále jsou popsány nejužitečnější části jednotlivých implementací. Následuje grafická prezentace a porovnání testů navržených implementací. V závěru práce jsou vyhodnoceny výsledky testů a je uvedeno doporučení pro správné používání interoperability v .NET.
Annotation in English
This diploma thesis explores and describes the ways of using unmanaged code by the C# programming language in the managed Common Language Runtime (CLR) environment. The theoretical part is mainly devoted how CLR works with memory. Further, the methods of interoperability between managed and native code are briefly discussed. Farther the data structure that using in tests is briefly described. The second part is practical, in which is implemented the communication between managed and native code, using C#, C and C++ with Platform Invoke and C ++/CLI technologies. Then author describes the most useful parts of each implementations and graphically presents results of his own tests and their comparisons. At the end of this thesis, the author evaluates the most impotent test results and give his recommendations for the correct use of interoperability in .NET.
Keywords
C++/CLI, Common Language Runtime, nativní kód, Platform Invoke, .NET Framework, programovací jazyky C#, C, C++, unmanaged kód
Keywords in English
C++/CLI, Common Language Runtime, native code, Platform Invoke, .NET Framework, programming languages C#, C, C++, unmanaged code
Research Plan
Popište možnosti řízení pamětí v prostředí Common Language Runtime a způsoby využiti unmanaged kódu v jazyce C\symbol{35}.
Rozeberte vybrané datové struktury z hlediska optimalizace pomocí unmanaged kódu.
Navrhněte vhodné řešení z hlediska přístupu k datovým strukturám v paměti RAM.
Vytvořte ukázkové kódy představující klíčové prvky řešení.
Demonstrujte výsledky a formulujte závěr.
Research Plan
Popište možnosti řízení pamětí v prostředí Common Language Runtime a způsoby využiti unmanaged kódu v jazyce C\symbol{35}.
Rozeberte vybrané datové struktury z hlediska optimalizace pomocí unmanaged kódu.
Navrhněte vhodné řešení z hlediska přístupu k datovým strukturám v paměti RAM.
Vytvořte ukázkové kódy představující klíčové prvky řešení.
Demonstrujte výsledky a formulujte závěr.
Recommended resources
GOLDSHTEIN, Sasha, Dima ZURBALEV a Ido FLATOW. Pro .NET performance. Berkeley, Calif.: Apress, \matsymb{lbrack}2012\matsymb{rbrack}. Expert\symbol{39}s voice in .NET. ISBN 978-1-4302-4458-5.
RICHTER, Jeffrey. CLR via C\symbol{35}. Fourth edition. Redmond, Washington: Microsoft, \matsymb{lbrack}2012\matsymb{rbrack}. ISBN 978-0-735-66745-7.
WIRTH, Niklaus. Algorithms data structures=programs. Englewood Cliffs, N.J.: Prentice-Hall, c1976. ISBN 01-302-2418-9.
AHO, Alfred V, John E HOPCROFT a Jeffrey D ULLMAN. Data structures and algorithms. Reading, Mass.: Addison-Wesley, c1983. ISBN 02-010-0023-7.
NAGEL, Christian. Professional C\symbol{35} 6 and .Net Core 1.0. Indianapolis, IN: John Wiley, 2016. ISBN 9781119096603.
Standard ECMA-372 C++/CLI Language Specification \matsymb{lbrack}online\matsymb{rbrack}. \matsymb{lbrack}cit. 2018-09-24\matsymb{rbrack}. Dostupné z: http://www.ecma-international.org/publications/standards/Ecma-372.htm
Recommended resources
GOLDSHTEIN, Sasha, Dima ZURBALEV a Ido FLATOW. Pro .NET performance. Berkeley, Calif.: Apress, \matsymb{lbrack}2012\matsymb{rbrack}. Expert\symbol{39}s voice in .NET. ISBN 978-1-4302-4458-5.
RICHTER, Jeffrey. CLR via C\symbol{35}. Fourth edition. Redmond, Washington: Microsoft, \matsymb{lbrack}2012\matsymb{rbrack}. ISBN 978-0-735-66745-7.
WIRTH, Niklaus. Algorithms data structures=programs. Englewood Cliffs, N.J.: Prentice-Hall, c1976. ISBN 01-302-2418-9.
AHO, Alfred V, John E HOPCROFT a Jeffrey D ULLMAN. Data structures and algorithms. Reading, Mass.: Addison-Wesley, c1983. ISBN 02-010-0023-7.
NAGEL, Christian. Professional C\symbol{35} 6 and .Net Core 1.0. Indianapolis, IN: John Wiley, 2016. ISBN 9781119096603.
Standard ECMA-372 C++/CLI Language Specification \matsymb{lbrack}online\matsymb{rbrack}. \matsymb{lbrack}cit. 2018-09-24\matsymb{rbrack}. Dostupné z: http://www.ecma-international.org/publications/standards/Ecma-372.htm