Open Source Libraries for.NET developers

32
Open source buffet for .NET developers Andrei Marukovich LunarFrog.com twitter: @amarukovich

Transcript of Open Source Libraries for.NET developers

Page 1: Open Source Libraries for.NET developers

Open source buffet for .NET developers

Andrei MarukovichLunarFrog.comtwitter: @amarukovich

Page 2: Open Source Libraries for.NET developers

.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

Contributing to OSS

http://up-for-grabs.net

Page 4: Open Source Libraries for.NET developers

• 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

Licensing• Always check license• Absence of a license generally means

that default copyright laws apply

Page 6: Open Source Libraries for.NET developers

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

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

Nexus

Page 9: Open Source Libraries for.NET developers
Page 10: Open Source Libraries for.NET developers

Projects

Page 11: Open Source Libraries for.NET developers

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

NetMQDistributed messaging

Page 13: Open Source Libraries for.NET developers

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

NetMQ sockets• RequestSocket• ResponseSocket• PublisherSocket• SubscriberSocket• DealerSocket• RouterSocket• PushSocket• PullSocket• PairSocket

Page 15: Open Source Libraries for.NET developers

Patterns

Page 16: Open Source Libraries for.NET developers

PollyTransient exception handling

Page 17: Open Source Libraries for.NET developers

Polly• New BSD License• nuget.org/packages/polly

• Use policies to simplify exception handling

Page 18: Open Source Libraries for.NET developers

AutoMapperObject-object mapper

Page 19: Open Source Libraries for.NET developers

AutoMapper• Custom permissive license• automapper.org

• Transforms object of one type to object of another type

Page 20: Open Source Libraries for.NET developers

SerilogStructured event logging

Page 21: Open Source Libraries for.NET developers

Serilog• Apache 2.0 License• serilog.net

• Structured event logging

Page 22: Open Source Libraries for.NET developers

FluentMigratorDatabase schema migrations

Page 23: Open Source Libraries for.NET developers

FluentMigrator• Apache 2.0 License• nuget.org/packages/FluentMigrator

• Database migration framework for .NET

Page 24: Open Source Libraries for.NET developers

Create migrations

Page 25: Open Source Libraries for.NET developers

Use profiles to seed test data

Page 26: Open Source Libraries for.NET developers

Migrate database• Migration runners

• CLI• NAnt• MSBuild• Rake

• Command line:

Page 27: Open Source Libraries for.NET developers

JilA fast JSON serializer/deserializer

Page 28: Open Source Libraries for.NET developers

Jil• MIT license• nuget.org/packages/Jil/• Main characteristic is performance

Page 29: Open Source Libraries for.NET developers

Jil APISerialize

Deserialize

Page 30: Open Source Libraries for.NET developers

MoqMocking framework

Page 31: Open Source Libraries for.NET developers

Moq• The BSD 2-Clause License• nuget.org/packages/Moq/

• Mocking framework for .NET

Page 32: Open Source Libraries for.NET developers

Thank you!

Andrei [email protected]: @amarukovich

Also see http://lunarfrog.com/blog/categories/open-source