视频类的网站制作,手机怎么防止网站跳转,wordpress充值卡生成,做外贸网站那个平台好在学习.net core的过程中#xff0c;我们已经明确被告知#xff0c;Remoting将不会被支持。官方的解释是#xff0c;.net framework 类型包含了太多的Runtime的内容#xff0c;是一个非常重量级的服务实现#xff0c;已被确定为一项有问题的体系结构。说白了就是迁移的难度… 在学习.net core的过程中我们已经明确被告知Remoting将不会被支持。官方的解释是.net framework 类型包含了太多的Runtime的内容是一个非常重量级的服务实现已被确定为一项有问题的体系结构。说白了就是迁移的难度很大.net core中直接不提供了。微软的建议是如果是进程内或跨进程通讯建议我们使用 Pipes或者内存映射文件Memory Mapped Files。如果是机器间的调用建议我们采用网络通讯的方案比如HTTP、WCF等。 好吧既然微软官方不支持 我们只能自己想办法搞定了。 OK说迁移方案前我们先看看.net Framework中使用Remoting的代码 通过Remoting封装后的服务调用方法我们可以直接得到一个服务接口的实现通过调用次接口的本地代理实现执行远程调用。
static void Main(string[] args){ IUserService service InvokeSerice.ProxyIUserService(); string uName service.GetCurrentUserName(); Console.WriteLine($当前用户名{uName}); Console.ReadLine();} IUserService接口的声明如下
public interface IUserService{ string GetCurrentUserName();} InvokeService方法的核心实现逻辑如下
//远程调用服务提供类
public class InvokeService{ //获取一个服务的本地调用代理对象 public static T ProxyT() { var proxy new InvokeProxyT(); return (T)proxy.GetTransparentProxy(); }} //服务本地代理对象实现类
public class InvokeProxyT : RealProxy{ private Type type null; public InvokeProxy() : this(typeof(T)) { type typeof(T); } protected InvokeProxy(Type classToProxy) : base(classToProxy) { } //接收本地调用请求然后转发远程访问 public override IMessage Invoke(IMessage msg) { Console.WriteLine(Invoke 远程服务调用); ReturnMessage message new System.Runtime.Remoting.Messaging.ReturnMessage(Test,null,0,null,(IMethodCallMessage)msg); return (IMessage)message; }} 通过.NET Portability Analyzer分析这个工程我们会得到系统不支持的结果。 既然,.net core 已经不支持RealProxy那么就只能另起炉灶了。通过翻阅.net core的代码终于发现了一个程序集System.Reflection.DispatchProxy。此程序中有一个类型DispatchProxy。灵感还是来自于WCF。WCF是.net 中重量级的API微软不可能不支持通过翻阅其中的实现逻辑终于到了RealProxy的替代方案。 好吧通过DispatchProxy提供的功能很容易可以替代RealProxyPRemoting的问题终于比较完美的解决了。下面就贴一下替换后的服务实现代码吧。
public class InvokeSerice{ public static T ProxyT() { return DispatchProxy.CreateT, InvokeProxyT(); }}
public class InvokeProxyT : DispatchProxy{ private Type type null; public InvokeProxy() { type typeof(T); } protected override object Invoke(MethodInfo targetMethod, object[] args) { Console.WriteLine(Invoke 远程服务调用); return Test; }}
相关文章
.NET应用迁移到.NET Core一.NET应用迁移到.NET Core二风险评估.NET应用迁移到.NET Core三从商业角度看移植过程.NET应用迁移到.NET Core--调查案例迁移传统.net 应用到.net core [视频]应用工具 .NET Portability Analyzer 分析迁移dotnet core.net core 2.0学习笔记一开发运行环境搭建.net core 2.0学习笔记二Hello World 进阶度量.net framework 迁移到.net core的工作量迁移.net framework 工程到.net core.NET Core 2.0迁移技巧之web.config配置文件程序配置ConfigurationManager
原文地址http://www.cnblogs.com/vveiliang/p/7434735.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注