-
Notifications
You must be signed in to change notification settings - Fork 67
Invert dependency between Jaeger and Jaeger.Thrift NuGet packages #116
Comments
Jaeger
and Jaeger.Thrift
NuGet packages
I would like to get rid of Thrift once gRPC support is fully added. I also would like to get rid of linking directly to the package as discussed in #76 but currently have little time to work on the library. I hope to find some time in January. |
Fwiw a similar refactoring happened in the Java client. |
I am working on a proof of concept for this change, but it requires some polish. I am going to submit a pull request. Do you accept PRs in this repository? |
certainly |
I think this will somewhat revive the discussion around #34. Maybe we should shift @cwe1ss This would basically revert #59 but I think, since we now want to have the abstraction layer, this would make the most sense. This would also make #115 cleaner since we can then only have a dependency on |
Waiting for #116 and some more testing
@Falco20019 Even if we keep |
I prepared something to try out. I wanted to use reflection to check what sender implementations are loaded with the application. Sadly, this does not work with ASP.NET Core. It seems that DLLs that are not referenced in code get not loaded into the AppDomain in ASP.NET Core. The idea was to make it close to how Java implemented it with jaeger-thrift. It looks like I need to create a registry where the SenderFactory has to be registered, similar to the idea of how Microsoft implemented the LoggerFactory with LoggerProvider. Has someone another idea how we could realize the plugin concept for senders? If not, I think this would even be the cleanest solution without any magic in the background. Only downside, the default RemoteReporter would then fallback to a NoopSender if no sender was manually added or if not the Configuration class was used. |
Requirement
We do not want that
Jaeger
NuGet package depends onJaeger.Thrift
package.Problem
Jaeger
package depends onJaeger.Thrift
package.Jaeger
package may be a 'reference implementation' of OpenTracing standard on .NET platform that can be used with custom implementation ofJaeger.Senders.ISender
interface. In case our custom implementation ofISender
does not use Thrift protocol, we do not want thatJaeger
NuGet package depends onJaeger.Thrift
and furtherJaeger.Thrift.VendoredThrift
packages.Proposal
Jaeger
andJaeger.Thrift
packages. After this change,Jaeger.Thrift
package will depend onJaeger
.Jaeger.Senders.ISender
interface fromJaeger
project toJaeger.Thrift
project. (Move classesHTTPSender
,ThriftSender
,UdpSender
,JaegerThriftSpanConverter
,Configuration
etc.).Jaeger.Thrift
NuGet package in their applications.Challenges:
RemoteReporter.Builder.Build()
depends onUdpSender
. We need to break this dependency. For example, raise an exception when sender is not provided.The text was updated successfully, but these errors were encountered: