RingCentral C# SDK 2.0 has been released!

Tyler Liu
RingCentral Developers
3 min readFeb 1, 2018

Update: at the time we finish this article, RingCentral C# SDK 2.1 has been released too.

We just released the RingCentral C# SDK 2.0 version. Here you can find the latest source code: https://github.com/ringcentral/ringcentral-csharp-client. And here is the project hosted by nuget: https://www.nuget.org/packages/RingCentral.Client/.

We have moved from Portable Class Library(PCL) to .NET Standard

RingCentral C# SDK 1.x is a Portable Class Library, or PCL for short. We have migrated to .NET standard with RingCentral C# SDK 2.0. So what’s the difference between PCL and .NET standard? What’s the advantages of migrating from the former to the latter?

Here is an article from Microsoft: https://docs.microsoft.com/en-us/dotnet/standard/net-standard

The .NET Standard is a formal specification of .NET APIs that are intended to be available on all .NET implementations. The motivation behind the .NET Standard is establishing greater uniformity in the .NET ecosystem.

.NET Standard is the replacement for Portable Class Libraries (PCL). The .NET Standard improves on the experience of creating portable libraries by curating a standard BCL and establishing greater uniformity across .NET implementations as a result. A library that targets .NET Standard is a PCL or a “.NET Standard-based PCL”. Existing PCLs are “profile-based PCLs”.

We believe that .NET Standard is the future and PCL is dying. We had some hard time with PCL to make it work with all the targeting platforms and by that time we were dreaming of an alternative solution. And .NET standard is the cure.

All dependent libraries have been upgraded to latest version

The RingCentral C# SDK project mainly depends on three third-party libraries: Flurl is a fluent, portable URL builder. We’ve upgraded it from 2.1.1 to 2.6.0. Flurl.Http is a fluent, portable, testable HTTP client library that extends Flurl’s URL builder chain. We’ve upgraded it from 1.1.1 to 2.1.1. PubnubPCL is a Massively Scalable Web Push Service for Web and Mobile Games. It is a cloud-based service for broadcasting messages to thousands of web and mobile clients simultaneously. We’ve upgraded it from 3.8.4 to 4.0.13.

The library is now being developed on macOS

First of all I know it doesn’t matter. No matter Windows or macOS you use, you should be able to get the things done. Some might argue that Windows is even better for C# projects, mainly because C# is a Microsoft language. I don’t disagree, because I have to confess that the best IDE for C# has always been Visual Studio for Windows.

So why did we change our development environment from Windows to macOS? Well, because almost every body in the team(most of them are JavaScript developers) uses macOS for development, including me. I don’t remember when it’s the last time that I turned on my Windows PC. If not that I want to write some C# in Visual Studio, I cannot find a good reason to use Windows.

Visual Studio IDE now offers a macOS version! It’s not as good as the Windows’ version, but good enough for me to create a .NET Standard library with it! I want to say that the development process is pretty smooth with macOS, mainly because I have more love for macOS than Windows.

There are some breaking changes!

2.0 is a major release, so there are breaking changes. The most notable changes are the naming of some classes. For example when you send a fax, the response class used to be MessageInfo, now it is FaxResponse. Majority of the code is auto-generated according to swagger spec. And we have a brand-new swagger spec for 2.0 SDKs. And we know that response objects in RESTful API don’t have names at all. So the swagger spec creator can name them whatever. Previously the spec was created by me. The latest spec is a result of teamwork and in theory it has much better naming.

OK, that’s all! Please give RingCentral C# SDK 2.0 a shot and send me your feedbacks!

--

--