摘要:
Jusfr 原创,文章所用代码已给出,转载请注明来自博客园。插件机制与 AppDomain示例与现实目标与设计[Serializable] 与 MarshalByRefObject思路与实现后记开始之前还是得说:插件机制老生常谈,但一下子到某工厂或 MAF 管线我相信不少园友吃不消。授人以鱼不如授人... 阅读全文
摘要:
jusfr 原创,转载请注明来自博客园。在之前的实现中,我们初步实现了一个缓存模块:包含一个基于Http请求的缓存实现,一个基于HttpRuntime.Cache进程级的缓存实现,但观察代码,会发现如下问题:1. 有部分逻辑如 Boolean TryGet(String key, out T ent... 阅读全文
摘要:
一步步实现一个基本的缓存模块注意后续代码及改进见后后文及github,文章上的并没有更新。 1. 前言 2. 请求级别缓存 2.1 多线程 3. 进程级别缓存 3.1 分区与计数 3.2 可空缓存值 3.3 封装与集成 4. 小结1. 前言面向读者:初、中级用户;涉及知识:HttpContext、H... 阅读全文
摘要:
Partitioner.Create(1,10,4).GetDynamicPartitions()为长度为10的序列创建分区,每个分区至多4个元素,分区方法及结果:Partitioner.Create(0, 10, 4).GetDynamicPartitions()得到3个前闭后开区间:[0, 4)... 阅读全文
摘要:
PetaPoco是一个轻量级ORM,我的MVC项目中使用它结合Repository模式,依靠Unity的生命周期管理对象,保证请求/线程级别的数据上下文单例,并使用锁和计数实现业务级事务。下文代码依个人理解实现,谬误请不吝指正。例行IUnitOfWork:public interface IUnitOfWork{ void Begin(); void Commit(); void Rollback();}仓库上下文核心: 1 public class PetaPocoUnitOfWork : IUnitOfWork 2 { 3 private const String... 阅读全文
摘要:
按文章结构,这部分应该给出WCFRest项目示例,我想WinForm示例足够详尽了,况且WCFRest还不需要使用插件AppDomain那一套,于是把最近写的Fiddler扩展搬上来吧。Fiddler有一套自成的插件系统,可以在其官方网站找到完整文档(戳这里)。通过其提供的一整套接口,我们可以从界面... 阅读全文
摘要:
代码文件在此Download,本文章围绕前文所述默认AppDomain、插件容器AppDomain两个域及IPlugin、PluginProvider、PluginProxy3个类的使用与变化进行。添加WinForm项目Host、类库Plugin、引用System.Windows.Forms;的类库... 阅读全文
摘要:
前一篇文章简单展示了类型发现和MEF使用,本文初步进入AppDomain相关内容。CLR程序运行时会创建默认程序集容器即AppDomain,默认AppDomain不支持卸载其程序集,但CLR支持创建和卸载AppDomain,这意味着我们可以间接地通过额外的AppDomain实现插件的热插拔。代理Ap... 阅读全文
摘要:
涉及内容:反射与MEF解决方案AppDomain卸载与代理WinForm、WcfRestService示PRRT1: 反射实现插件系统的基本目的是实现宿主与组件的隔离,核心是作为接驳约定的接口,宿主使用类型发现及挂载插件,以下是反射实现。创建类库项目Plugin,添加接口IPlugin:public... 阅读全文
摘要:
这是本文的第四部分也是最后部分,适合新人初步学习泛型、反射,提供了有限的业务场景分析、若干的NPOI接口使用示范,前三部分链接如下:一个Excel导出类的实现过程(一):泛型与反射一个Excel导出类的实现过程(二):显示定制一个Excel导出类的实现过程(三):NPOI组件接第三部分,由于单元格设置语句仅简单的一句话row.CreateCell(i).SetCellValue(value.ToString()),生成的Excel仍然粗陋。Excel导出通常会遇到若干问题:整数变字符串问题:整型值比如ID列,单元格左上角出现绿色三角符号,单元格变成了字符串类型,不够友好;日期显示问题:有时候需 阅读全文