open source libraries for.net developers
TRANSCRIPT
![Page 1: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/1.jpg)
Open source buffet for .NET developers
Andrei MarukovichLunarFrog.comtwitter: @amarukovich
![Page 2: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/2.jpg)
.NET Open Source community• 56k C# repositories on GitHub• For comparison: 200K Java, 130K Ruby, 22K
Go• .NET Foundation• Promotes .NET-related open source
technologies• 40+ projects including MSBuild, Roslyn, WCF,
Rx.NET, .NET Core and ASP.NET Core• Visual Studio encourages use of OSS• Installs Node.js, Cordova, Git; Python
extension• Default templates use 3rd party libraries
![Page 3: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/3.jpg)
Contributing to OSS
http://up-for-grabs.net
![Page 4: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/4.jpg)
• Licensing • Health of the project• Library version tracking• Many similar libraries, which to use?
Open Source software concerns
![Page 5: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/5.jpg)
Licensing• Always check license• Absence of a license generally means
that default copyright laws apply
![Page 6: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/6.jpg)
Project health and maintainability• Risks• Maintainer abandoned the project • Breaking changes in the new version
• Mitigations• Fork and maintain by yourself• Use isolation layer between 3rd party library
and your code
![Page 7: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/7.jpg)
How to control usage of OSS?• Use central repository for all open source
libraries• Klondike• MyGet, ProGet • Nexus• Artifactory
• No official NuGet package? Create your own.• Configure NuGet to use your repository
![Page 8: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/8.jpg)
Nexus
![Page 9: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/9.jpg)
![Page 10: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/10.jpg)
Projects
![Page 11: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/11.jpg)
NetMQ Distributed messaging with many connection patterns
Polly Transient exception handling using policies
AutoMapper A convention-based object-object mapper
Jil Fast JSON (De)Serializer
FluentMigrator Database schema migrations
Serilog Structured event logging
Moq Mocking framework
HtmlAgilityPack Parser for the real-world malformed HTML
![Page 12: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/12.jpg)
NetMQDistributed messaging
![Page 13: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/13.jpg)
NetMQ• GNU Lesser General Public License v.3• nuget.org/packages/NetMQ/
• A 100% native C# port of the ZeroMQ, a lightweight high performance messaging library• In-process, inter-process, TCP, and
multicast• Allow to build various patterns• Pub-sub, load balancing, request-reply and
others
![Page 14: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/14.jpg)
NetMQ sockets• RequestSocket• ResponseSocket• PublisherSocket• SubscriberSocket• DealerSocket• RouterSocket• PushSocket• PullSocket• PairSocket
![Page 15: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/15.jpg)
Patterns
![Page 16: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/16.jpg)
PollyTransient exception handling
![Page 17: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/17.jpg)
Polly• New BSD License• nuget.org/packages/polly
• Use policies to simplify exception handling
![Page 18: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/18.jpg)
AutoMapperObject-object mapper
![Page 19: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/19.jpg)
AutoMapper• Custom permissive license• automapper.org
• Transforms object of one type to object of another type
![Page 20: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/20.jpg)
SerilogStructured event logging
![Page 21: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/21.jpg)
Serilog• Apache 2.0 License• serilog.net
• Structured event logging
![Page 22: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/22.jpg)
FluentMigratorDatabase schema migrations
![Page 23: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/23.jpg)
FluentMigrator• Apache 2.0 License• nuget.org/packages/FluentMigrator
• Database migration framework for .NET
![Page 24: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/24.jpg)
Create migrations
![Page 25: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/25.jpg)
Use profiles to seed test data
![Page 26: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/26.jpg)
Migrate database• Migration runners
• CLI• NAnt• MSBuild• Rake
• Command line:
![Page 27: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/27.jpg)
JilA fast JSON serializer/deserializer
![Page 28: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/28.jpg)
Jil• MIT license• nuget.org/packages/Jil/• Main characteristic is performance
![Page 29: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/29.jpg)
Jil APISerialize
Deserialize
![Page 30: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/30.jpg)
MoqMocking framework
![Page 31: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/31.jpg)
Moq• The BSD 2-Clause License• nuget.org/packages/Moq/
• Mocking framework for .NET
![Page 32: Open Source Libraries for.NET developers](https://reader036.vdocuments.net/reader036/viewer/2022062905/5870135e1a28ab7f428b4d9f/html5/thumbnails/32.jpg)
Thank you!
Andrei [email protected]: @amarukovich
Also see http://lunarfrog.com/blog/categories/open-source