icerpc / icerpc-csharp

A C# RPC framework built for QUIC, with bidirectional streaming, first-class async/await, and Protobuf support.
https://docs.icerpc.dev
Apache License 2.0
108 stars 13 forks source link

Rename Slice module Ice to module IceRpc #56

Closed bernardnormier closed 3 years ago

bernardnormier commented 3 years ago

Alongside this change, all the "core" code would move to namespace IceRpc.Core, and the IceRpc.Core.dll assembly, and eventually the IceRpc.Core Nuget package.

This requires changing the Slice compiler to generate ::Ice::xxx type IDs for classes and exceptions defined in module IceRpc::Core, for interop with Ice.

pepone commented 3 years ago

I don't like very much the Core namespace, an alternative can be

namespace DLL NuGet package Description
IceRpc IceRpc.dll IceRpc IceRpc runtime
IceRpc.Bluetooth IceRpc.Bluetooth.dll IceRpc.Bluetooth IceRpc bluetooth transport
IceRpc.Kubernetes IceRpc.Kubernetes.dll IceRpc.Kubernetes IceRpc k8s integration
(na) (na) IceRpc.Sdk Metapackage
bernardnormier commented 3 years ago

I prefer a sub-namespace name for the core, I find this cleaner. IceRpc is the umbrella name for all packages and the top-level all-enclosing namespace.

Core is obviously what gRPC uses, initially I thought Ice would be fine as core-sub-namespace name but it results in too much Ice repetition. Core was also used for ".NET Core" with a similar concept - the core functionality, without the extras.

pepone commented 3 years ago

for .NET Core there is System namespace and a bunch of other namespaces System.Text, System.IO. I think Core in ".NET Core" is a different beast, this was done to differentiate it from ".NET Framework" and now is mostly gone.

If you look at the popular Newtonsoft.Json library it is the same, the main namespace is Newtonsoft.Json and there are other subnamespaces

Newtonsoft.Json.Converters Newtonsoft.Json.Linq

pepone commented 3 years ago

Also, Microsoft doesn't seem to follow this approach, extensions to .NET are separate packages using Microsoft.Extensions prefix https://www.nuget.org/packages?q=Microsoft.Extensions

bernardnormier commented 3 years ago

Ok. So IceRpc for the core. And for now, no "meta package" that pulls everything - it only makes sense where we have tons of packages.

pepone commented 3 years ago

already done