响应式网站开发现状如何只做网站

web/2025/9/30 21:35:44/文章来源:
响应式网站开发现状,如何只做网站,网站建设电话销售话术实例,优而思 网站(给DotNet加星标#xff0c;提升.Net技能)转自#xff1a;张子浩cnblogs.com/ZaraNet/p/12167517.htmlGRPC 是谷歌发布的一个开源、高性能、通用RPC服务#xff0c;尽管大部分 RPC 框架都使用 TCP 协议#xff0c;但其实 UDP 也可以#xff0c;而 gRPC 干脆就用了 HTTP2。… (给DotNet加星标提升.Net技能)转自张子浩cnblogs.com/ZaraNet/p/12167517.htmlGRPC 是谷歌发布的一个开源、高性能、通用RPC服务尽管大部分 RPC 框架都使用 TCP 协议但其实 UDP 也可以而 gRPC 干脆就用了 HTTP2。还有就是它具有跨平台、跨语言 等特性这里就不再说明RPC是啥。在写项目当中grp服务过多会非常头疼那么我们分析一下如果解决这个问题。我们都知道在grpc注入到.NET Core 中使用的方法是 MapGrpcService 方法是一个泛型方法。[NullableAttribute(0)][NullableContextAttribute(1)]public static class GrpcEndpointRouteBuilderExtensions{public static GrpcServiceEndpointConventionBuilder MapGrpcService(this IEndpointRouteBuilder builder) where TService : class;}那我们就可以通过反射调用这个方法来进行服务批量注册看方法的样子我们只需要将我们的服务对应 TService 以及将我们的 endpointBuilder 传入即可我们看下源码是不是就像我所说的那样public static class GrpcEndpointRouteBuilderExtensions{public static GrpcServiceEndpointConventionBuilder MapGrpcService(this IEndpointRouteBuilder builder) where TService : class {if (builder null) {throw new ArgumentNullException(nameof(builder)); } ValidateServicesRegistered(builder.ServiceProvider);var serviceRouteBuilder builder.ServiceProvider.GetRequiredService();var endpointConventionBuilders serviceRouteBuilder.Build(builder);return new GrpcServiceEndpointConventionBuilder(endpointConventionBuilders); }private static void ValidateServicesRegistered(IServiceProvider serviceProvider){var marker serviceProvider.GetService(typeof(GrpcMarkerService));if (marker null) {throw new InvalidOperationException(Unable to find the required services. Please add all the required services by calling IServiceCollection.AddGrpc inside the call to ConfigureServices(...) in the application startup code.); } }}ok看样子没什么问题就像我刚才所说的那样做。现在我们准备一个proto以及一个Service.这个就在网上找个吧..首先定义一个proto它是grpc中的协议也就是每个消费者遵循的。syntax proto3;option csharp_namespace 随后定义Service当然非常简单 Greeter.GreeterBase 是重新生成项目根据proto来生成的。public class GreeterService : Greeter.GreeterBase{public override Task SayHello(HelloRequest request, ServerCallContext context) { var greeting string.Empty;switch (request.LaguageEnum) {case HelloRequest.Types.Laguage.EnUs: greeting Hello;break;case HelloRequest.Types.Laguage.ZhCn: greeting 你好;break; }return Task.FromResult(new HelloReply { Message ${greeting} {request.Name}, Num new Random().Next() }); }}此时我们需要自定义一个中间件来批量注入grpc服务其中我们获取了类型为 GrpcEndpointRouteBuilderExtensions 并获取了它的方法随后传入了他的TService最后通过Invoke转入了我们的终点对象。public static class GrpcServiceExtension{public static void Add_Grpc_Services(IEndpointRouteBuilder builder){ Assembly assembly Assembly.GetExecutingAssembly();foreach (var item in ServicesHelper.GetGrpcServices(Grpc.Server)) { Type mytype assembly.GetType(item.Value .item.Key);var method typeof(GrpcEndpointRouteBuilderExtensions).GetMethod(MapGrpcService).MakeGenericMethod(mytype); method.Invoke(null, new[] { builder }); }; }public static void useMyGrpcServices(this IApplicationBuilder app){ app.UseEndpoints(endpoints { Add_Grpc_Services(endpoints); }); }}在 ServicesHelper 中通过反射找到程序集当中的所有文件然后判断并返回。public static class ServicesHelper{public static Dictionarystring,string GetGrpcServices(string assemblyName){if (!string.IsNullOrEmpty(assemblyName)) { Assembly assembly Assembly.Load(assemblyName); List ts assembly.GetTypes().ToList();var result new Dictionarystring, string();foreach (var item in ts.Where(uu.Namespace Grpc.Server.Services)) { result.Add(item.Name,item.Namespace); }return result; }return new Dictionarystring, string(); }}这样子我们就注入了所有命名空间为Grpc.Server.Services的服务但这样好像无法达到某些控制我们应当如何处理呢我建议携程Attribute的形式创建一个Flag.public class GrpcServiceAttribute : Attribute{public bool IsStart { get; set; }}将要在注入的服务商添加该标识例如这样。[GrpcService]public class GreeterService : Greeter.GreeterBase{...}随后根据反射出来的值找到 AttributeType 的名称进行判断即可。public static Dictionarystring,string GetGrpcServices(string assemblyName){if (!string.IsNullOrEmpty(assemblyName)) { Assembly assembly Assembly.Load(assemblyName); List ts assembly.GetTypes().ToList();var result new Dictionarystring, string();foreach (var item in ts.Where(uu.CustomAttributes.Any(aa.AttributeType.Name GrpcServiceAttribute))) { result.Add(item.Name,item.Namespace); }return result; }return new Dictionarystring, string();}随后我们的批量注入在Starup.cs中添加一行代码即可。app.useMyGrpcServices();启动项目试一试效果示例代码:https://github.com/zaranetCore/My_Blog-s-Sample/tree/master/gRPC_DI/grpc_blazor_sample推荐阅读  点击标题可跳转.NET 5 Preview 1 发布ASP.NET Core基于Consul动态配置热更新.NET CoreVue后台管理基础框架前端授权看完本文有收获请转发分享给更多人关注「DotNet」加星标提升.Net技能 好文章我在看❤️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

江阴公司网站建设网站源码程序修改

一 位图 ① 概念 1、说明:位图还是在操作字符串2、位图玩字符串在内存中存储的二进制3、ASCII字符通过映射转化为二进制4、操作的是字符串value ② ASCII字符铺垫 1、控制ASCII字符 2、ASCII可显示字符 ③ SETBIT 细节: setbit 命令的返回值是之…

html5网站检测最近的国际新闻热点

声明:本系列文章内容摘自《iOS设计模式》 中介者模式 用一个对象来封装一系列对象的交互方式。中介者使个对象不需要显式地相互调用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 何时使用中介者模式 1.对象间的交互虽定义明确然而非…

黄冈网站建设哪家便宜网站建设报价清单内容

并不存在从 const_iterator 到 iterator 之间的隐式转换 一种安全的、可移植的方法获取他所对应的 iterator&#xff1a; 1   typedef deque<int> IntDeque;     // 方便的typedef 2   typedef IntDeque::iterator Iter; 3   typedef IntDeque::const_iterato…

aspcms 网站栏目管理唱片公司网站模板

打开nginx配置。 对登录功能测试完毕后&#xff0c;接下来&#xff0c;我们思考一个问题&#xff1a;前端发送的请求&#xff0c;是如何请求到后端服务的&#xff1f; 前端请求地址&#xff1a;http://localhost/api/employee/login 后端接口地址&#xff1a;http://localho…

无极电影网站深圳seo网站推广公司

源码&#xff1a; 源代码C# 系列导航&#xff1a; 目录 定义&#xff08;Factory Pattern&#xff09;&#xff1a; 用来创建目标对象的类&#xff0c;将相似对象的创建工作统一到一个类来完成。 一、简单工厂模式&#xff1a; 代码&#xff1a; /// <summary>/// 产品枚…

网站推广初期目标广州网站建设有哪些公司

一、安装Nginx 二、安装vsftpd 三、开始搭建Nginx图片服务器 1、效果 例如&#xff1a;图片通过ftp服务上传到/home/ftpuser/www/images目录下&#xff0c;我想通过访问Nginx服务器来访问ftp目录下的图片文件&#xff0c;该url为http://192.168.128.128/images/xxx.jpg。即使用…

中国商业数据网宿迁做网站优化

WordPress建站程序之所以如此受欢迎&#xff0c;最大的原因可能就是拥有丰富多样的插件&#xff0c;可以实现任何想要的功能&#xff0c; 如联系表单、社交媒体分享按钮、搜索引擎优化、自动备份数据库、自动发布文章到社交媒体平台等&#xff0c;但是我们 在安装WordPress插件…

wordpress安卓版5最近的seo网站优化排名

随着区块链技术的发展和应用&#xff0c;去中心化技术正成为数字世界中的一股强大变革力量。Web3作为去中心化应用的新兴范式&#xff0c;正在重新定义人们对于数据、互联网和价值交换的认知。本文将探索去中心化技术的基本概念、Web3的核心特征及其潜力应用&#xff0c;展示其…

泉州做网站的企业网站ico怎么用

文章目录 一、主页面介绍1.1首页[网址 https://www.liblib.ai/](https://www.liblib.ai/)侧边栏可收起 1.2 模型页面1.2.1 按模型筛选相关1.2.2 封面的细节1.2.3 点击后进入封面&#xff1a; 二、在线生成图片2.1 直接从主页面进入2.1.1 在线生成的链接&#xff08;与webui几乎…

郑州网站开发培训价格如今做那个网站能致富

某些参数总是很自然地同时出现 重构&#xff1a;以一个对象取代这些参数

四大商业网站网络广告营销的特性

简单demo&#xff0c;为抛砖引玉吧&#xff01;360的加固我们先写一个最简单的so&#xff0c;带导出函数。这已经足够简单了&#xff0c;界面上打印这个值。运行起来就这样。简单的简直过分。好了&#xff0c;现在我们让360加固一下。拿下来自己签名下&#xff0c;安装好&#…

东莞网站建设 服饰湖北自适应网站建设价格

在进行 Linux 网络编程时&#xff0c;经常会需要获取本机 IP 地址&#xff0c;除了常规的读取配置文件外&#xff0c;本文罗列几种个人所知的编程常用方法&#xff0c;仅供参考&#xff0c;如有错误请指出。 方法一&#xff1a;使用 ioctl() 获取本地 IP 地址 Linux 下可以使用…

郑州外贸网站推广县 两学一做网站

身体&#xff1a;安全和身体最重要了&#xff0c;这个才是真正的本钱 刷反思&#xff1a;遇到的各种心理问题和心态的问题都可以去刷反思 悟透&#xff1a;所有错误的抉择(所有的挣扎)都是因为没想明白&#xff0c;没领悟透。 人生无大事&#xff1a;重在坚持&#xff0c;重…

网站模块制作ppt教程视频自学

一、ES 场景&#xff1a;某头部互联⽹公司的好房业务&#xff0c;双⼗⼀前⼀天&#xff0c;维护楼盘的运营⼈员突然接到合作开发商的通知&#xff0c;需要上线⼀批热⻔的楼盘列表&#xff0c;上传完成后&#xff0c;C端⼩程序⽀持按楼盘的名称、户型、⾯积等产品属性全模糊搜索…

做网站seo制作外贸网站模板下载

#Android ##Android基础及相关机制 Android Context 上下文 你必须知道的一切 Android中子线程真的不能更新UI吗&#xff1f; Android基础和运行机制 Android任务和返回栈完全解析&#xff0c;细数那些你所不知道的细节 【凯子哥带你学Framework】Activity启动过程全解析 【凯子…

阿里云网站建设教程龙岩天宫山缆车多少钱

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;3D Face Reconstruction in Deep Learning Era: A Survey 链接&#xff1a;3D Face Reconstruction in Deep Learning Era: A Survey - PubMed (nih.gov) 摘要 随着深度学习的出现和图形…

平台网站建设方案苏州市建设局网站

一、消息队列概述 消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用解耦&#xff0c;异步消息&#xff0c;流量削锋等问题&#xff0c;实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ&#xff0c;Rabbit…

做网站推广如何最新军事动态

六月一眨眼的时间就来到了中旬&#xff0c;时间流逝之快让我们有些措手不及&#xff0c;炎热的天气更是加剧了小组里每个人的焦虑&#xff0c;也因此有了更大的动力与决心去完成自己的工作。 自己的工作是这个游戏的前端&#xff0c;需要完成的任务是做出来登录等一系列的用户界…

做微信平台网站网站的几种提交方式

1、卷积神经网络的手写数字旋转角度预测原理及流程 基于卷积神经网络的手写数字旋转角度预测是一个常见的计算机视觉问题。在这种情况下&#xff0c;我们可以通过构建一个卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;来实现该任务。以下…

电子产品网站建设策划方案好用的快速网站建设平台

我们传统使用MinIo做OSS对象存储的应用方式往往都是在后端配置与MinIO的连接和文件上传下载的相关接口&#xff0c;然后我们在前端调用这些接口完成文件的上传下载机制&#xff0c;但是&#xff0c;当并发量过大&#xff0c;频繁访问会对后端的并发往往会对服务器造成极大的压力…