27 热度

【工具篇】在.Net中实现HTML生成图片或PDF的几种方式

在.Net中实现HTML生成图片或PDF的几种方式。前段时间由于项目上的需求,要在.Net平台下实现把HTML内容生成图片或PDF文件的功能,特意在网上研究了几种方案,这里记录一下以备日后再次使用。当时想着找一种开发部署都比较清爽并且运行稳定的方案,但实际上两者同时满足基本不可能,只能做一个自己觉得合适的取舍,下面从两个维度(清爽指数和功能指数)逐一对比。1.   WebBrowser这种方案在开发时不依赖任务外部程序集和nuget包,部署时也不需要安装额外的工具和服务,可以说是非常清爽了。它借助了WinForm下的WebBrowser控件实现HTML内容渲染,并把渲染结果绘制在Bit...

收录时间: 2019-06-26
分类: .NET
贡献者: Rector
43 热度

.NET中的缓存实现

软件开发中最常用的模式之一是缓存,这是一个简单但非常有效的概念,想法是重用操作结果,执行繁重的操作时,我们会将结果保存在缓存容器中,下次我们需要该结果时,我们将从缓存容器中取出它,而不是再次执行繁重的操作。例如,要获得某人的头像,您可能需要前往数据库。我们不会每次都执行那次查询,而是将结果保存在缓存中,每次需要时都将其从内存中删除。缓存非常适合不经常更改的数据,甚至永远不会改变。不断变化的数据不适合缓存,如当前机器的时间不应缓存,否则您将得到错误的结果...

收录时间: 2019-06-21
分类: .NET
贡献者: Rector
24 热度

.NET Framework June 2019 Preview of Quality Rollup

Today, we are releasing the June 2019 Preview of Quality Rollup.

收录时间: 2019-06-19
分类: .NET
贡献者: Rector
26 热度

从CLR GC到CoreCLR GC

前段时间在园子里看到有人提到了GC学习的重要性,很赞同他的观点。充分了解GC可以帮助我们更好的认识.NET的设计以及为何在云原生开发中.NET Core会占有更大的优势,这也是一个程序员成长到更高层次所需要经历的过程。在认识GC的过程中,我们先看一下.NET中内存分配的概要知识。 .NET分配内存,主要依据托管资源和非托管资源进行分配。托管资源分配到了托管堆中并受CLR的管理,非托管资源分配到了非托管堆中。该节主要讨论托管资源的分配。 CLR支持两种基本类型:值类型和引用类型。

收录时间: 2019-06-18
分类: .NET
贡献者: Rector
22 热度

PVS.AVPlayer - Audio and Video Player Library

PVS.AVPlayer is an easy-to-use media player library for playing media files in .NET Framework WinForms applications using Microsoft Media Foundation (MF), Media Foundation .NET and other technologies, with...

收录时间: 2019-06-18
分类: .NET
贡献者: Rector
79 热度

Try the new System.Text.Json APIs

For .NET Core 3.0, we’re shipping a brand new namespace called System.Text.Json with support for a reader/writer, a document object model (DOM), and a serializer. In this blog post, I’m telling you why we built it, how it works, and how you can try it.

收录时间: 2019-06-14
分类: .NET
贡献者: Rector
AD 友情赞助
59 热度

.NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖

我们有多种工具可以将程序集合并成为一个。比如 ILMerge、Mono.Merge。前者不可定制、运行缓慢、消耗资源(不过好消息是现在开源了);后者已被弃用、不受支持且基于旧版本的 Mono.Cecil。而本文介绍用来替代它们的 ILRepack,使用 ILRepack 来合并程序集。

收录时间: 2019-06-13
分类: .NET
贡献者: Rector
29 热度

.NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖

我们有多种工具可以将程序集合并成为一个。打包成一个程序集可以避免分发程序的时候带上一堆依赖而出问题。ILMerge 可以用来将多个程序集合并成一个程序集。本文介绍使用 ILMerge 工具和其 NuGet 工具包来合并程序集和其依赖。

收录时间: 2019-06-13
分类: .NET
贡献者: Rector
28 热度

.NET 的程序集加载上下文

我们编写的 .NET 应用程序会使用到各种各样的依赖库。我们都知道 CLR 会在一些路径下帮助我们程序找到依赖,但如果我们需要手动控制程序集加载路径的话,需要了解程序集加载上下文。如果你不了解程序集加载上下文,你可能会发现你加载了程序集却不能使用其中的类型;或者把同一个程序集加载了两次,导致使用到两个明明是一样的类型时却抛出异常提示不是同一个类型的问题。

收录时间: 2019-06-13
分类: .NET
贡献者: Rector
28 热度

dotnet 线程静态字段

在 .NET 程序可以使用 ThreadStaticAttribute 特性标记在一个静态字段上,这样这个字段就可以做到在线程里面静态在一个类的静态字段上面添加 ThreadStaticAttribute可以让这个字段作为线程的静态字段,也就是在相同的线程访问的时候这个字段是静态的,拿到的对象的实例相同,但是在不同的线程拿到不相同在 ThreadStaticAttribute支持的只有静态字段...

收录时间: 2019-06-13
分类: .NET
贡献者: Rector
38 热度

WCF vs gRPC - Round 2

After my previous post comparing WCF to gRPC, a couple of peopleon Twitter and in the comments asked which WCF binding I had used for the performance comparison. The answerto that was “whatever the default binding is”, which is basic HTTP binding. As Clemens Vaster pointed out, thatis not an “apples...

收录时间: 2019-06-11
分类: .NET
贡献者: Rector
58 热度

基于Vue + axios + WebApi + NPOI导出Excel文件

项目中前端采用的Element UI 框架, 远程数据请求,使用的是axios,后端接口框架采用的asp.net webapi,数据导出成Excel采用NPOI组件。其业务场景,主要是列表页(如会员信息,订单信息等)表格数据导出,如表格数据进行了条件筛选,则需要将条件传至后端api,筛选数据后,导出成Excel。

收录时间: 2019-06-05
分类: .NET
贡献者: Rector
50 热度

What's better than ILDasm? ILSpy and dnSpy are tools to Decompile .NET Code

.NET code (C#, VB, F#, etc) compiles (for the most part) into Intermediate Language (IL) and then makes it way to native code usually by Just-in-time (JIT) compilation on the target machine. When you get a DLL/Assembly, it's pre-chewed but not full juiced, to mix my metaphors.

收录时间: 2019-06-05
分类: .NET
贡献者: Rector
45 热度

Serializing a PascalCase Newtonsoft.Json JObject to camelCase

In this post I describe one of the quirks of serializing JSON.NET JObject (contract resolvers are not honoured), and show how to get camelCase names when serializing a JObject that stored its property names in PascalCase.

收录时间: 2019-06-05
分类: .NET
贡献者: Rector
28 热度

An Interesting Case Of .NET Performance and Caching

This post is days old.Several months ago, Bill Boga and I, realized there was a performance enhancement we could make in our infrastructure. We were utilizing IdentityServer and took notice that many of our APIs were validating many of the same access tokens and storing the results in memory locall...

收录时间: 2019-06-04
分类: .NET
贡献者: Rector
AD 友情赞助
45 热度

dotnet 动态代理魔法书

看到标题的小伙伴是不是想知道什么是魔法书,如果你需要写一段代码,这段代码是在做神奇的业务,只有你查询到了魔法书你才能找到这个对象,同时你还需要实现自己的接口,通过自己实现的接口调用才能用到有趣的方法。在 C# 里面是不能直接让两个有相同方法的但没有继承的接口直接转换,但是通过透明代理和反射可以做到在不同的程序集定义的两个接口,这两个接口有相同的方法,那么将可以用另一个程序集的接口调用到传入程序集里面的接口...

收录时间: 2019-06-03
分类: .NET
贡献者: Rector
55 热度

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务

项目介绍:Hangfire:是一个开源的job调度系统,支持分布式JOB!!Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的。可以独立更新Hangfire版本不影响!该组件已被Hangfire官方采纳,在Hangfire官网可以查到: 开源地址:https://github.com/yuzd/Hangfire.H...

收录时间: 2019-05-29
分类: .NET
贡献者: Rector
36 热度

HttpClient: How to remove charset from Content-Type header

I was writing client library for one online service and faced situation where I had to remove charset definition from Content-Type header. It was like content type is application/json or response is 415 “Unsupported media type”. I was using HttpClient class to communicate with service and without additional efforts charset doesn’t go away. Here is how I got charset definition away from Content-Type header.

收录时间: 2019-05-24
分类: .NET
贡献者: Rector
53 热度

.NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)

如果你使用过 WPF/UWP 等 XAML UI 框架,那么应该了解到附加属性的概念。那么没有依赖属性支持的时候如何做附加属性的功能呢?你可能会想到弱引用。但这需要做一个弱引用字典,要写的代码还是非常麻烦的。本文介绍 .NET 的 ConditionalWeakTable 类型,适用于 .NET Framework 4.0 以上和全部 .NET Core 的版...

收录时间: 2019-05-23
分类: .NET
贡献者: Rector
44 热度

使用Try.NET创建可交互.NET文档

当我们编写开发人员使用的文档时,我们需要捕捉他们的兴趣,并引导他们尽快走上成功的道路。开发人员生态系统一直在为社区提供可交...

收录时间: 2019-05-21
分类: .NET
贡献者: Rector
AD 友情赞助