Visual ReCode Preview 3 Now Available

The latest public preview of Visual ReCode is available for download and best of all, it’s free! We’ve added even more features (see below) for a more comprehensive WCF to gRPC migration experience.

New features

Duplex service support

Preview 3 adds support for WCF Duplex services, that is, services with a CallbackContract that allows the server to “call methods” on the client.

gRPC does not directly support this feature, but it does support bidirectional streaming, which also creates a persistent connection between client and server and allows messages to be sent arbitrarily in both directions. Messages can be of different types, so something similar to a Full Duplex service can be implemented by reading the messages off the stream and invoking different methods based on the message type.

Obviously this implementation code will be very different from the WCF approach, so Visual ReCode’s client generator will provide a mapping between the gRPC stream and a callback contract implementation, meaning that your client code will continue to work as before.

One thing that is not supported in the initial Preview 3 release is methods on the Service or Callback contract that return a value. This will be added in the Release Candidate we hope to ship in the next few days.

Decimal handling

Protobuf does not have a native type that is equivalent to C#’s decimal; only floating-point types are provided. For financial applications or anything that requires perfect precision, we know this is unacceptable. So Visual ReCode will now add a custom DecimalValue type to any converted application that uses decimal values in its contracts. This custom type is provided as a decimal_value.proto file included in the generated project, along with a C# implementation that handles implicit conversion to the native decimal type.

Fixes

Several issues have been resolved in this release, including:

  • OperationContract methods that return void or Task are now handled correctly. Visual ReCode generates a separate empty response message type for each method, in line with gRPC best practices.
  • Certain combinations of types (e.g. nested classes) were causing problems in Preview 2; this has been fixed.
  • MessageContract and Serializable types are now supported as well as DataContract. Note that MessageHeader and MessageBodyMember fields are all converted to regular Protobuf message fields, as they were specific to SOAP and have no meaning in gRPC.

Release Candidate coming soon

A Release Candidate build will be out in the next few days, which will include support for return values from CallbackContract methods, and from SessionRequired service methods. We’ll also have a new installer and some other bits of polish.

Once we have some feedback from Preview 3 and the RC, we will be releasing and supporting the final Visual ReCode 1.0 - hopefully very soon now!

We’ve got a lot more planned for subsequent releases, including support for migrating WCF services or ASP.NET Web API 2.x applications to ASP.NET Core 3.1 MVC, and even .NET Remoting to gRPC for people with some real legacy code. And we’ll continue to improve and refine the migration process, and look at other ways we can help developers rescue their legacy code and bring it up to date.

Are We Missing Something?

If you have a migration scenario from .NET Framework to .NET Core that’s giving you pause, please reach out to us and let us know about it - we want to be sure we’ve got the most comprehensive option available to re-code your app for the latest in .NET!

The Hassle-Free Code Upgrade Tool for .NET

Early-bird licenses are just $195 or license your team from $295 per seat.