编程语言
基于特性(Attribute)的实体属性验证方案设计
Payne在博客中探讨了数据校验的问题,介绍了对该话题的兴趣源自最近工作需求,并分享了关于Attribute和Property的区别。他讨论了.NET中的Attribute的概念和使用方式,展示了一个数据校验方案的设计思路和实现技术要点,以及如何通过示例对实体属性进行验证。最后,他总结了特性和属性的概念差异,Attribute在.NET中的应用以及验证方案的设计思路,鼓励大家努力提高业务代码质量。
编程语言
基于过滤器实现异常处理的探索
本文讨论了异常处理的概念和实践,作者分享了自己对异常处理的理解和经验,以及在项目中引入 AOP 后,从 try-catch 转向 Interceptor 的处理方式。文章首先区分了异常和错误,强调了软件工程中测试和错误处理的重要性,并提出统一的异常处理入口,避免代码中到处都是 try-catch 和日志记录的混乱。接着,文章介绍了 CheckedException 的概念,讨论了 Java 和 C# 中对异常处理的不同策略,并提出了基于过滤器的异常处理方案,通过定义异常基类和过滤器,利用 Attribute 关联异常和过滤器,达到代码解耦和增强可维护性的效果。作者通过实际案例展示了如何将异常处理代码重构为更优雅的形式,并通过多态和过滤器的概念简化异常处理流程,最后强调了程序员应追求代码设计的优雅,以适应不断变化的需求。
编程语言
异步 Lambda 表达式问题的探索
Payne在博客中讨论了.NET中异步Lambda表达式的问题,强调架构设计应由一线开发人员提炼和抽象,指出异步方法在ICommand接口中的历史遗留问题。他还探讨了异步编程中的异常处理机制,指出使用async void容易导致未处理异常终止程序。最后总结指出异步委托在IL层面无差别,建议使用Func而非Action来生成异步方法,对待async void应注意异常处理,强调处理各种异常的必要性。
编程语言
使用 C#开发 HTTP 服务器之支持 HTTPS
本文介绍了作者在开发 HTTP 服务器系列中的第六篇文章,讨论了如何为Web服务器增加HTTPS支持。HTTPS是基于安全的HTTP协议,通过SSL加密和身份验证提供数据传输安全。讨论了苹果和Google推广HTTPS的原因,以及HTTPS协议的工作原理和区别。文章重点在于如何使用.NET中的SSL API创建和加载证书,并通过SSL对Socket通信消息进行加密。作者提到需要从CA机构购买证书,并给出了相关代码示例。文章列出了一些参考文章和配置HTTPS服务的指南。
编程语言
基于 Mono 和 VSCode 打造轻量级跨平台 IDE
最近微软推出了 Visual Studio For Mac,展示了微软技术栈向开源和跨平台发展的努力。文章介绍了在Linux下使用Mono和VSCode构建轻量级IDE的过程,展示了在VSCode中编译和调试代码的步骤。由于Mono-Debug插件不支持Windows平台,作者转向Linux平台,并成功在VSCode中运行C#程序。文章强调了在不同平台的探索中不设限,展望了未来研究VSCode调试技巧和.NETCore相关内容的计划。
编程语言
在 Kindle 上阅读 Markdown 文档
在信息爆炸的时代,个人知识管理显得尤为重要。本文以作者个人知识管理的实践为例,分享了如何使用 Kindle、Markdown 和笔记应用等工具进行知识管理,以提高阅读和写作效率。作者首先强调了在碎片化信息中筛选和集中精力的重要性,随后介绍了 Markdown 作为一种高效写作工具的优势,并通过示例解释了 Markdown 的基本语法。接着,作者分享了从有道云笔记过渡到为知笔记的经历,并探讨了如何将 Markdown 文档转换为 Kindle 可读格式的方法。文章最后指出,个人知识管理的形式并不重要,关键在于建立意识并有效梳理知识体系。
编程语言
基于 C# 中的 Trace 实现一个简单的日志系统
在项目中,重点工作转向实现具体业务逻辑,强调保证逻辑代码正确性和容错性,以及发现需求文档中的隐性需求和逻辑缺陷与用户需求息息相关。作者表达对用户需求细节缺失的不满,认为应建立平等伙伴关系,避免被限制自由。此外,作者探讨技术发展与个人情感,担忧技术更新与用户习惯脱节,对自身要求完美,同时对人际关系和技术发展持怀疑态度。最后,介绍了基于C#中Trace类实现简单日志系统的步骤及设计思路,强调了程序员对待问题的态度和编程的趣味性。
编程语言
一个关于概率的问题的思考
近期,作者在开发一个随机生成人员名单的工具时,思考了概率问题,特别是在活动中考虑到不同人员英语水平和优先级的公平性。通过设计概率算法和累积概率函数,作者提出了一个用于抽奖系统的设计方案,支持不同类型奖品和抽取方式。通过代码实现和示例展示,作者强调了在项目开发中应关注代码的扩展性和可维护性,以避免后期需求变更带来的困扰。整体内容涵盖了概率问题思考、设计方案实现和开发心得体会。
编程语言
浅析 WPF 中 MVVM 模式下命令与委托的关系
文章介绍了MVVM 模式及其与 MVC、MVP 的关系,并探讨了 WPF 中 MVVM 模式的实现和命令与委托的关系。作者通过比较 MVC、MVP和MVVM 的架构,指出了它们在分离视图和模型方面的不同。特别提到了 WPF 中 MVVM 模式的双向绑定特性,并通过 RelayCommand 的例子解释了命令和委托的实现。文章还讨论了设计和编程分离的重要性,并指出了 WPF 中 XAML 的缺点。最后,作者反思了 MVVM 模式的正确使用方法,并提倡不应被框架和架构束缚,而应以设计出更棒的软件产品为目标。
编程语言
使用 C#开发 HTTP 服务器系列之实现 Get 和 Post
本文介绍了如何在自己的 Web 服务器上实现 GET 和 POST 请求。GET 请求通过 URL 传递参数,而 POST 请求则将参数放在消息体中,相比 GET 请求更安全且无参数长度限制。实现过程包括解析请求报文中的参数,针对不同请求类型做相应处理。提供了代码示例展示如何在服务器端处理 GET 和 POST 请求,以及在 Unity 客户端使用 WWW 类发送 GET 和 POST 请求。最后展示了一个简单实例并给出了运行结果。
编程语言
使用 C#开发 HTTP 服务器系列之更简单的实现方式
秦元培在博客中分享了关于HTTP服务器开发的系列文章,强调了从头开始构建Web服务器的乐趣和重要性,提到了HTTP协议的基本原理和无状态特性,以及如何利用TcpListener/TcpClient和HttpListener实现HTTP服务器的两种不同方法。他指出了在设计HTTP服务器时需要考虑保持状态的问题,并介绍了Cookie的应用。最后表示这些内容只是开发HTTP服务器的延伸,鼓励读者进一步探索。
编程语言
使用 C#开发 HTTP 服务器系列之静态页面
在这篇博客中,作者介绍了如何实现一个简单的可交互的 Web 服务器,以及如何在基础上为服务器增加主页支持。作者详细讨论了主页的定义和服务器如何判断请求的页面是否为主页,展示了根据不同请求返回主页或错误页面的逻辑。进一步,作者说明了服务器需要正确指明资源类型,在加载页面时会发起多个请求报文,强调了正确构造 Content-Type 字段的重要性。最后,作者展示了静态 Web 服务器的编写成果,并演示了在本地设置服务器目录后的效果。整体内容涵盖了主页逻辑、请求处理、资源类型判断等关键概念和实现步骤。
编程语言
使用C#开发HTTP服务器系列之构建RESTful API
秦元培在博客中介绍了RESTful API的概念和原则,指出REST是一种基于网络的设计风格,旨在正确使用Web标准。他对WebService、SOAP、WSDL等概念进行了讨论,强调REST是一种统一的Web API设计风格。文章还提到了如何构建REST风格的API,包括URL结构、API版本管理、使用名词而非动词等最佳实践。最后,秦元培表示虽然他的服务器目前只支持GET和POST,要实现完整的RESTful API需要更多探索,但鼓励大家关注他的项目[HttpServer](https://github.com/qinyuanpei/HttpServer)。
编程语言
使用 C# 开发 HTTP 服务器系列之 Hello World
秦元培在博客中介绍到,他将开始撰写关于 HTTP 服务器开发的系列文章,强调了 Web 技术的重要性,将使用 C# 展示如何开发一个基本的 HTTP 服务器。他解释了 HTTP 协议的基本概念和发展历程,包括请求报文、响应报文和常见请求方法。此外,他讨论了 Socket 和 HTTP 之间的关联,并展示了如何设计和实现一个简单的 HTTP 服务器,包括处理 GET 和 POST 请求以及构建响应报文。最后,他展示了一个 Hello World 的示例,并强调了简单、轻量的设计原则。整体内容涵盖了HTTP服务器开发的基本概念和实现步骤。
编程语言
扫描二维码在移动设备上浏览响应式页面
上页
1
...
6
7
8
9
下页