skip to main content
10.1145/3524304.3524329acmotherconferencesArticle/Chapter ViewAbstractPublication PagesicscaConference Proceedingsconference-collections
research-article

An Investigation into the Prevalence of Reflection Techniques in Distributed Microsoft .Net NuGet Artefacts

Authors Info & Claims
Published:06 June 2022Publication History

ABSTRACT

This paper investigates the prevalence of reflection and reflective techniques in the NuGet distribution mechanism and applies the results of the prevalence into a general discussion on the prevalence of reflective techniques onto the Microsoft .Net ecosystem as whole. The results show a over 15% utilization in over 6 million NuGets which suggests that reflective techniques are a very valuable technique in the .Net ecosystem. The results also show and discuss the number of overall NuGets utilizing reflection, unique NuGets utilizing reflection, and the most popular reflective references in said NuGets. The paper then concludes with a discussion on the advantages and disadvantages of utilizing reflection, and the value of learning and utilizing the technique for developers both at the initial stages of their career and the later ones.

References

  1. Blair, G. S., & Coulson, G. (1997). The case for reflective middleware. Proc. 3rd. Cabernet Plenary Workshop. Rennes. Retrieved from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.144.7207&rep=rep1&type=pdfGoogle ScholarGoogle Scholar
  2. Capilla, R., Gallina, B., Cetina, C., & Favaro, J. (2019). Opportunities for software reuse in an uncertain world: From past to emerging trends. Journal of software : Evolution and process, 16.Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Costa, F. M., & Santos, B. D. (2004). Structuring reflective middleware using meta-informationmanagement: The Meta-ORB approach and prototypes. J Braz Comp Soc, 45-61.Google ScholarGoogle ScholarCross RefCross Ref
  4. Evain, J. (2021, 07 29). Mono.Cecil|Mono. Retrieved from Mono Project: https://web.archive.org/web/20210516025407/http://www.mono-project.com/docs/tools+libraries/libraries/Mono.Cecil/Google ScholarGoogle Scholar
  5. Forax, R., Duris, E., & Roussel, G. (2004). A reflective implementation of java multi-methods. IEEE Transactions on Software Engineering, 1055-1071.Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Fowler, M. (2002). Using Metadata. IEEE Software, 13-17.Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Jacques, M., Jacques, M., & Demers, F. N. (1996). A tutorial on behavioral reflection and its implementation. Proceedings of the Reflection, 1-20.Google ScholarGoogle Scholar
  8. JamesNK, JonHanna, ravensorb, fgreinacher, stakx, dmitryvk, & xp44mm. (2021, 08 10). Newtonsoft.Json/Reflectionutils.cs at master. Retrieved from JamesNK/Newtonsoft.Json: https://web.archive.org/web/20210810152858/https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Utilities/ReflectionUtils.csGoogle ScholarGoogle Scholar
  9. Landman, D., Serebrenik, A., & Vinju, J. J. (2017). Challenges for static analysis of java reflection - Literature review and empiracal study. ACM 39th international confrence on software engineering. IEEE.Google ScholarGoogle Scholar
  10. Li, Y., Tan, T., & Xue, J. (2019). Understanding and Analyzing Java Reflection. ACM Transactions on Software Engineering and Methodolgy , 1-50.Google ScholarGoogle Scholar
  11. Lilis, Y., & Savidis, A. (2019). A survey of metaprogramming languages. ACM Computing Surveys, 1-39.Google ScholarGoogle Scholar
  12. Microsoft. (2019, Feb 19). What is NuGet and what does it do? Retrieved from Microsoft Docs: https://web.archive.org/web/20190219181330/https://docs.microsoft.com/en-us/nuget/what-is-nugetGoogle ScholarGoogle Scholar
  13. Microsoft. (2021, 3 8). Finding and choosing a NuGet Package. Retrieved from Microsoft Docs: https://web.archive.org/web/20210308041741/https://docs.microsoft.com/en-us/nuget/consume-packages/finding-and-choosing-packagesGoogle ScholarGoogle Scholar
  14. Microsoft. (2021, 07 31). MethodBase.GetMethodFromHandle Method (System.Reflection). Retrieved from Microsoft Docs: https://web.archive.org/web/20210731123942/https://docs.microsoft.com/en-us/dotnet/api/system.reflection.methodbase.getmethodfromhandle?view=net-5.0Google ScholarGoogle Scholar
  15. Microsoft. (2021, May 24). Statistics. Retrieved from NuGet Gallery: https://web.archive.org/web/20210524210439/https://www.nuget.org/statsGoogle ScholarGoogle Scholar
  16. Microsoft. (2021, Jun 8). The history of C# - C# Guide. Retrieved from Microsoft docs: https://web.archive.org/web/20210608055315/https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-historyGoogle ScholarGoogle Scholar
  17. Papoulias, N., Denker, M., Ducasse, S., & Fabresse, L. (2017). End-user abstractions for meta-control: Reifying the reflectogram. Science of Computer Programming, 2-16.Google ScholarGoogle ScholarCross RefCross Ref
  18. Spinellis, D. (2012). Package Management Systems. IEEE Software, 84-86.Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Watanabe, T. (2013). Towards a compositional reflective architecture for actor-based systems. AGERE! (pp. 19-24). Association for Computing Machinery.Google ScholarGoogle Scholar
  20. Yamazaki, T., & Chiba, S. (2019). Buffered Garbage collection: An approach to collecting self-created garbage objects. Journal of information processing, 479-488.Google ScholarGoogle ScholarCross RefCross Ref

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Other conferences
    ICSCA '22: Proceedings of the 2022 11th International Conference on Software and Computer Applications
    February 2022
    224 pages
    ISBN:9781450385770
    DOI:10.1145/3524304

    Copyright © 2022 ACM

    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 6 June 2022

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article
    • Research
    • Refereed limited
  • Article Metrics

    • Downloads (Last 12 months)11
    • Downloads (Last 6 weeks)1

    Other Metrics

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

HTML Format

View this article in HTML Format .

View HTML Format