如何将.NET Standard的动态编译代码改写为长尾?

2026-04-01 11:200阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1999个文字,预计阅读时间需要8分钟。

如何将.NET Standard的动态编译代码改写为长尾?

在上一篇文章[基于.net core+微服务的其他类实现][结尾处],提出了如何方便地自动生成微服务的客户端代理,使得调用方式更加明确,同时将框架集成,以提高使用便捷性。在尝试中,...

在上篇文章[基于.net core 微服务的另类实现]结尾处,提到了如何方便自动的生成微服务的客户端代理,使对于调用方透明,同时将枯燥的东西使用框架集成,以提高使用便捷性。在尝试了基于 Emit 中间语言后,最终决定使用生成代码片段然后动态编译的模式实现。

1.背景:

其一在前文中,我们通过框架实现了微服务面向使用者的透明调用,但是需要为每个服务写一个客户端代理,显得异常繁琐,其二项目中前端站点使用了传统的.Net Framework 框架,后端微服务我们使用了.Net Core 框架改造,短时间将前端站点调整成 .Net Core 框架亦不现实,为了能同时支持这两种框架。如何 .Net Standard 框架来自动创建微服务的客户端代理成为我们必须解决的问题。

2.问题转化

我们在回头简单看一下我们现在期望的微服务客户端代理长的样子:

通过上面分析,我们只需要将服务接口中的每个方法,判断是否有返回值,如果有返回值调用Invoke<ReturnType>方法,没有返回值调用InvokeWithoutReturn方法,然后依次将接口名,方法名以及方法的参数按顺序传入即可。各位如果是熟悉Java的同学,这个问题很容易解决,使用动态代理创建一个这样的匿名类即可,但在.net 的世界里,动态代理的实现确显得异常麻烦。

阅读全文

本文共计1999个文字,预计阅读时间需要8分钟。

如何将.NET Standard的动态编译代码改写为长尾?

在上一篇文章[基于.net core+微服务的其他类实现][结尾处],提出了如何方便地自动生成微服务的客户端代理,使得调用方式更加明确,同时将框架集成,以提高使用便捷性。在尝试中,...

在上篇文章[基于.net core 微服务的另类实现]结尾处,提到了如何方便自动的生成微服务的客户端代理,使对于调用方透明,同时将枯燥的东西使用框架集成,以提高使用便捷性。在尝试了基于 Emit 中间语言后,最终决定使用生成代码片段然后动态编译的模式实现。

1.背景:

其一在前文中,我们通过框架实现了微服务面向使用者的透明调用,但是需要为每个服务写一个客户端代理,显得异常繁琐,其二项目中前端站点使用了传统的.Net Framework 框架,后端微服务我们使用了.Net Core 框架改造,短时间将前端站点调整成 .Net Core 框架亦不现实,为了能同时支持这两种框架。如何 .Net Standard 框架来自动创建微服务的客户端代理成为我们必须解决的问题。

2.问题转化

我们在回头简单看一下我们现在期望的微服务客户端代理长的样子:

通过上面分析,我们只需要将服务接口中的每个方法,判断是否有返回值,如果有返回值调用Invoke<ReturnType>方法,没有返回值调用InvokeWithoutReturn方法,然后依次将接口名,方法名以及方法的参数按顺序传入即可。各位如果是熟悉Java的同学,这个问题很容易解决,使用动态代理创建一个这样的匿名类即可,但在.net 的世界里,动态代理的实现确显得异常麻烦。

阅读全文