Languages for.NET: Eiffel Raphael Simon (ISE) Emmanuel Stapf (ISE)
Open Source Libraries for.NET developers
-
Upload
andrei-marukovich -
Category
Software
-
view
172 -
download
6
Transcript of Open Source Libraries for.NET developers
Open source buffet for .NET developers
Andrei MarukovichLunarFrog.comtwitter: @amarukovich
.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
Contributing to OSS
http://up-for-grabs.net
• Licensing • Health of the project• Library version tracking• Many similar libraries, which to use?
Open Source software concerns
Licensing• Always check license• Absence of a license generally means
that default copyright laws apply
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
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
Nexus
Projects
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
NetMQDistributed messaging
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
NetMQ sockets• RequestSocket• ResponseSocket• PublisherSocket• SubscriberSocket• DealerSocket• RouterSocket• PushSocket• PullSocket• PairSocket
Patterns
PollyTransient exception handling
Polly• New BSD License• nuget.org/packages/polly
• Use policies to simplify exception handling
AutoMapperObject-object mapper
AutoMapper• Custom permissive license• automapper.org
• Transforms object of one type to object of another type
SerilogStructured event logging
Serilog• Apache 2.0 License• serilog.net
• Structured event logging
FluentMigratorDatabase schema migrations
FluentMigrator• Apache 2.0 License• nuget.org/packages/FluentMigrator
• Database migration framework for .NET
Create migrations
Use profiles to seed test data
Migrate database• Migration runners
• CLI• NAnt• MSBuild• Rake
• Command line:
JilA fast JSON serializer/deserializer
Jil• MIT license• nuget.org/packages/Jil/• Main characteristic is performance
Jil APISerialize
Deserialize
MoqMocking framework
Moq• The BSD 2-Clause License• nuget.org/packages/Moq/
• Mocking framework for .NET
Thank you!
Andrei [email protected]: @amarukovich
Also see http://lunarfrog.com/blog/categories/open-source