草庐IT

美团$方案$实践

全部标签

c# - 在 C# 中声明事件的最佳实践

我知道以下两种方法有效,但我想知道在性能/维护等方面是否更好。捷径:publiceventEventHandlerMyEvent;漫漫长路:privateEventHandler_myEvent;publiceventEventHandlerMyEvent{add{_myEvent+=value;}remove{_myEvent-=value;}}长途跋涉似乎类似于用属性封装成员,这确实是一个很好的做法。但这是否适用于事件处理程序? 最佳答案 在这种情况下,“良好实践”的论点有点狡猾;第一个是“类场事件”;你注意到:Thelongw

c# - C# 中条件编译的替代方案

除了在C#中使用条件编译代码之外,还有什么替代方法?我有一个包含大量基于#ifdef的代码的类。一段时间后我的代码变得不可读。寻找重构技术来提高代码的可读性和维护性,其中包含许多#ifdefs 最佳答案 一件事是使用ConditionalAttribute:[Conditional("DEBUG")]publicvoidFoo(){//Stuff}//ThiscallwillonlybecompiledintothecodeiftheDEBUGsymbolisdefinedFoo();它仍然是条件编译,但是基于属性而不是#ifdef

c# - 处理警告的最佳实践

我目前正在处理的项目每次构建时都会生成30多个警告。他们从项目开始就被忽略了。我猜是由于缺乏关于警告的政策。您通常如何处理这种情况?完全无视他们?尝试一次修复它们(这需要一些时间)?还是一路上一点一点地修复? 最佳答案 只有30个,修理它们需要2小时的工作。我完全不同意任何人说最后期限取代修复这些警告的说法。与现在解决问题相比,您将在后期代码完成阶段浪费更多时间来解决问题。忽略你的经理,他可能是个白痴,想在老板面前表现得很好。初始质量和正确的设计比他任意的截止日期(在合理范围内)更重要。您首先收到警告这一事实意味着有人对代码草率。仔

c# - 计划任务或服务的容错和可靠性最佳实践

我一直在研究许多作为Windows服务或计划任务运行的应用程序。现在,我想确保这些应用程序具有容错性和可靠性。例如;我有一项每小时运行一次的服务。如果服务在操作或运行时崩溃,我希望应用程序在同一时期再次运行(这涉及几件事,包括数据处理事务),以避免数据丢失。此外,我希望程序能够详细报告错误。我的目标是避免数据丢失并且不落后于运行程序。我构建了一个类库,用户可以将其导入到项目中。图书馆应该保留程序运行实例的信息,即。程序读写运行间隔、运行状态等信息,这些数据存储在数据库中。我很好奇,是否有一些最佳实践可以使计划任务/Windows服务具有容错性和可靠性。编辑:我说的是在不同服务器上的独立

多集群thanos sidecar+MinIO监控告警实践

环境简介项目环境为保障业务高可用,业务使用了多个网络运营商的机房线路,每个机房均部署一套k8s环境,故而有多个k8s集群,每个k8s集群环境上运行的服务基本一致。原来监控体系存在以下问题:配置管理混乱先前使用Prometheus-operator部署管理监控告警,但是每个集群存在个别差异,导致每次调整告警时需要逐个修改集群配置,创建ServiceMonitor对象,才能完成Prometheus监控项添加。操作较为繁琐,没有统一管理。无法统一查询每个集群部署一套Prometheus,当需要查询数据时,只能在特定集群的Prometheus上查询数据。或者在grafana创建多个Prometheus

c# - 什么是 OpenSplice 和 RTI DDS 实现的替代方案?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我在RTIDDS方面拥有丰富的经验,并在许多应用程序中使用过它。我最近开始使用OpenSplice与DDS一起工作,看看它是否是RTI的一个很好的开源替代品。我已经让这两个头撞了一段时间,试图让消息在不同的实现之间来回传递,但无济于事。大家会推荐哪些(如果有的话)其他DDS实现?我找到了其他的,例如OpenDDS,但我真正想要的是一个与RTI兼容、支持C/C++/C#

c# - 使用 RX 的最佳实践——返回一个 Observable 还是接受一个 Observer?

使用ReactiveExtensions,我可以想出多种方法来模拟具有副作用/IO的操作-比如从聊天室订阅消息。我可以接受参数(比如聊天室)和一个Observer,返回一个Disposable,即DisposableSubscribeTo(stringchatRoom,Observerobserver)或者在给定参数的情况下返回一个Observable,即ObservableGetObservableFor(stringchatRoom)当返回一个Observable时,我还可以选择将其设置为“热”或“冷”,即在调用我的方法时或在订阅observable时执行实际订阅。此外,我可以使o

c# - 最佳实践?打开和关闭多连接,或 ado.net 的一个大打开连接

我正在使用ADO.Net进行一些数据库连接,我只是希望我的做法是正确的。我正在为每个存储过程打开和关闭多个连接。或者我应该将其包装在一个开放的连接中(数据库上的资源可能更少?)谢谢,如果有什么奇怪的或我可以做得更好的事情请告诉我,谢谢!示例:这个,但我有6个......using(SqlConnectionconn=newSqlConnection(ConnectionString)){SqlCommandcmd=newSqlCommand("spSelectAllTrip",conn);cmd.CommandType=CommandType.StoredProcedure;conn.

c# - 适用于 Citrix 的 SendKeys 替代方案

我最近为客户开发了一个虚拟键盘应用程序。该程序几乎适用于所有程序,但某些命令如{ENTER}或{DEL}不适用于Citrix。SendKeys是否有解决方法或替代方法?编辑1:我尝试了SendInput方法(Windows输入模拟器使用SendInput),但DEL键和箭头键仍然不起作用。然而,ENTER键有效。编辑2:解决了。使用两个不同版本的Citrix进行测试。Thisquestionhelpedmealot.:Citrixthinclientsusesthescancodeparamofkeybd_eventevenwhenMSsaysitisunusedandshouldbe

c# - 将 .NET P/Invoke 代码组织到 Win32 API 的最佳实践

我正在.NET中重构一个庞大而复杂的代码库,它大量使用P/InvoketoWin32API。项目的结构不是最好的,我发现到处都是DllImport语句,经常重复相同的功能,并且还以多种方式声明:导入指令和方法有时声明为公共(public)的,有时声明为私有(private)的,有时声明为静态的,有时声明为实例方法。我担心重构可能会产生意想不到的后果,但这可能是不可避免的。是否有我可以遵循的记录在案的最佳做法可以帮助我解决问题?我坚持要组织一个静态/共享的Win32P/InvokeAPI类,在一个文件中列出所有这些方法和关联的常量...编辑user32DLL有超过70个导入.(代码库由2