Closed bernardnormier closed 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 |
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.
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
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
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.
already done
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.