随笔分类 - 搭建面向云的.net core开发框架
摘要:我们在.net core中还使用了ViewComponent方式生成控件。ViewComponent也是asp.net core的新特性,是对页面部分的渲染,以前PartialView的功能,可以使用ViewComponent来实现。 View Component包含2个部分,一个是类(继承于Vie
阅读全文
摘要:.net core 除了继续保留.net framework的HtmlHelper的写法以外,还提供了TagHelper和ViewComponent方式生成控件。 我们本节说的是使用TagHelper来生成控件。不过严格的说起来,TagHelper是对客户端html元素的辅助类,例如渲染、增加服务端
阅读全文
摘要:控件封装的部分说明 可能有人觉得应该前后端分离,我也承认这是应该的方向,我们也在考虑使用ng2等简化前端。但是,我们封装控件还是因为如下原因综合考虑的: 我们这是个框架,上面支撑了许多个应用,包含几百个页面,每个页面都去写一堆的js\css\html标签可能对开发人员来说非常麻烦,且每个人写的都可能
阅读全文
摘要:在写.net core下mvc控件的编写之前,我先说一下.net framework下我们MVC控件的做法。 MVC下控件的写法,主要有如下三种,最后一种是泛型的写法,mvc提供的控件都是基本控件。 但是我们在写大型系统的时候,像自动完成autocomplete、下拉多选multiselect、附件
阅读全文
摘要:现在流行的系统一般都采用依赖注入的实现方式,利用DI容器来直接获取所用到的类/接口的实例。.net core也一样采用DI的方式,提供了DI容器的接口IServiceCollection,并提供了基于该接口的缺省实现ServiceCollection。 这样我们就可以不再像以前一样,需要引入第三方的
阅读全文
摘要:首先需要说明的是这是.net framework的一个组件,而不是针对.net core的。目前工作比较忙,因此.net core的转换正在编写过程中,有了实现会第一时间贴出来。 接下来进入正题。对于大型的分层系统,会有一个应用程序层,应用程序层的主要作用是封装业务领域层的业务逻辑层,并对界面展示层
阅读全文
摘要:最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路。今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正。 首先说明的是.net下开源内容较少,并且也不是做并行数据库等基础服务,因此在这里什么Hadoop、Spark、ZooK
阅读全文
摘要:在做系统的时候,经常遇到前台录入一大堆的查询条件,然后点击查询提交后台,在Controller里面生成对应的查询SQL或者表达式,数据库执行再将结果返回客户端。 例如如下页面,输入三个条件,日志类型、开始和结束日期,查询后台系统操作日志,并显示。 这种类似页面在系统中还是比较多的,通常情况下,我们会
阅读全文
摘要:.net core可以执行SQL语句,但是只能生成强类型的返回结果。例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs").ToList()。而不允许返回DataSet、DataTable等弱类型。可能由于这个原因没有实现在.ne
阅读全文
摘要:在一个大型系统中,应该允许访问多个数据库,甚至是多个异构的数据库。例如表单模块使用mysql,数据仓库模块使用oracle等等。按照这个目标,数据的配置信息: 每个数据库都有一个Name(名称,以后都用这个名称访问)、ConnectionString(数据库链接串)、ProviderName(提供程
阅读全文
摘要:上节,我们说明了封装分布式缓存的接口、配置以及在startup中的注册方式。下面的,我们具体介绍下,分布式缓存的具体实现。 第一个实现,将本地缓存作为分布式缓存,主要用于没有分布式缓存的情况,这样就可以不修改程序的情况下直接使用本地缓存。 第二个实现,使用redis作为分布式缓存。 如果想使用Mem
阅读全文
摘要:为了加快系统运行效率,一般情况下系统会采用缓存技术,将常用信息存放到缓存中,避免频繁的从数据库、文件中读写,造成系统瓶颈,从而提高响应速度。缓存分为客户端缓存和服务器端缓存。 目前随着系统的扩展,服务器端缓存一般采取两级缓存技术,本地缓存和分布式缓存。部分常用、公共或者小数据量的信息保存在分布式缓存
阅读全文
摘要:前面已经实现了Json配置源的方式,以及在Startup中注册使用我们的配置源。下面我们进入重点,就是如何实现数据库方式的配置。数据表对应的实体类和DbContext代码如下,就不写数据表的结构了:) 在.net core的文档中,也写了一个数据库方式。但是该方式,是每一个键值对都存放到数据库中,例
阅读全文
摘要:总所周知,配置信息是应用程序可变化的设置信息,存放于配置文件中,开发人员可以使用配置文件来更改应用的设置。.net core提供了多种配置方式,例如json文件配置,注册表配置、环境配置,xml文件配置等。其中大家常用的是一个json配置文件方式,即每个应用都有一个appsettings.json配
阅读全文
摘要:目录结构 1 为什么搭建面向云的.Net core云开发框架 2 主要设计思路 3 项目解决方案 4 基础设施层 4.1反射工具 4.2多级可换源的配置(上) 42多级可换源的配置(下) 4.3可配置的分布式缓存(上) 4.3可配置的分布式缓存(下) 4.4 异构、多数据库的存取组件 4.5 .ne
阅读全文
摘要:从上图可以看出,基础设施层是业务领域、应用服务、界面展示层的基础,为其他各层提供基础类库服务。 在整个解决方案中,基础设施层包含如下项目: Infrastructure 基础设施层 开发的底层类库 Core 包括缓存、配置、日志、常用工具、数据访问等核心组件 Core.Caching.Redis R
阅读全文
摘要:在编写开发框架的时候,经常会使用反射。反射的作用主要是动态创建类型的实例,或者获取对象类型并动态调用方法、属性、字段等。 我们在以前的.net framework框架中,反射工具包含了许多方法,但是在.net core中由于appdomain等变化的原因,许多方法已不再使用。我只将重反射工具类(Re
阅读全文
摘要:按照领域驱动设计的思路,我们搭建开发框架的解决方案如下: *该解决方案正在改造过程中,会随着改造的过程逐步完善。 解决方案目录 对应领域设计层 说明 Infrastructure 基础设施层 开发的底层类库 Core 包括缓存、配置、日志、常用工具、数据访问等核心组件 Core.Caching.Re
阅读全文
摘要:为满足性能、扩展性、业务快速交付等方面的要求,新.net core云开发框架改造的主要思想是:高内聚、低耦合,即进一步实现纵向和横向分层,提高可伸缩性和可扩展性,实现弹性部署: 采用领域驱动设计进行架构横向分层,同时业务功能纵向分割 在代码和数据库设计上充分考虑云架构要素,提高可伸缩性、可扩展性、高
阅读全文