castle

NOI2018游记&我的OI历程

僤鯓⒐⒋嵵緔 提交于 2020-04-28 12:17:24
day1 今天是报到日,坐着早上9点的飞机到了长沙,午饭时间到达雅礼洋湖。 宿舍还是一模一样,虽然是在女生宿舍。 wifi信号还是一样的德行,刻意避开了宿舍内,只好把手机放在窗台上开热点。 饭菜还是如以前一般,虽然D大爷说没以前那么咸了。 与众不同的是发了一张多功能卡,可以吃饭&洗热水,不用单独办张水卡了。午晚餐40元的标价让我有些心疼,但钱是学校出的饭菜挺好吃的。 唯一的遗憾是没有去签到墙上留下自己的名字。 day2 早上6点就被一阵滴滴声吵醒了,发现D大爷的水卡忘了拔出来,插了一晚上。按照三秒钟一分钱来算,一晚上正好花完水卡里的100块钱。 上午是笔试和练习赛,笔试确实挺简单的,几分钟就AK了;练习赛又是多省联测的那三道题,完全没有做的意思,于是写了个对拍程序就溜了。 开幕式咕到了下午四点半,后来才知道是dzd的飞机取消了。在宿舍有点无聊,就和D大爷打起了Lost Castle这款游戏,也是十分快乐。 今年的开幕式新增的环节是真的尬,一边在ppt上播放选手的大头照,一边让参赛选手轮流喊口号。今年FJ的口号也是有些莫名,甚至每个人还拿一根荧光棒乱摇。 总的来说,开幕式还是办的很震撼的。 day3 今天是一试,早饭特意吃的很饱。 打开题面,发现A好像有点小麻,B好像有点神仙,这时发现C的前68分是SAM训练题,那开心啊,于是就花了一个小时训练了一下SAM。

ABPvnext源码分析 (二):Autofac整合及动态代理

我与影子孤独终老i 提交于 2020-04-28 10:10:38
写在前面: 上一篇我们讲了Abp的核心模块,这一篇我们把DI 的serviceProvider替换成Autofac,另外添加动态代理拦截器功能。动态代理指从DI容器获取组件实例时组件实例不是原实例,而是代理实例。代理实例是对原实例进行了封装, 在实例方法前后添加逻辑处理,让获取的对象表现基于应有对象但又有自己的逻辑。举个例子,代理对象方法可以在原方法前后记录时间戳,来分析原方法的处理时长。Abp Core默认使用的是微软官方的DI实现, 那个功能较简单没有代理功能,为了添加动态代理功能,我们把DI实现替换为Autofac,并使用Autofac集成的代理实现方式Castle Core。 集成Autofac,我们需要添加Volo.Abp.Autofac包,这个包本身是Abp模块,其依赖AbpCastleCoreModule模块(Volo.Abp.CatleCore) namespace Volo.Abp.Autofac { [DependsOn( typeof (AbpCastleCoreModule))] public class AbpAutofacModule : AbpModule { } } 所以我们添加Volo.Abp.Autofac包并让我们的应用模块DependsOn(typeof(AbpAutofacModule))就自动的把AbpAutofacModule

谈谈对于企业级系统架构的理解

半腔热情 提交于 2020-04-27 15:33:35
在我们刚开始学习架构的时候,首先会想到分层的概念,分层架构比较经典的是三层架构,那么,什么是三层架构呢?它包括表现层,业务层,数据访问层;而对于一个新手来说,从抽象意义上的三层架构,逻辑上就划分为三个层。 这个是最基本的三层架构模式。 表现层 充当系统的界面呈现以及UI逻辑的角色,也就是说,UI(用户界面)属于表现层; 举一个对于asp.net WebForm来说,人们喜欢把对于UI的控制逻辑(服务器控件的读取、设置、事件等等)写在页面的后置隐藏代码中,并且依赖业务逻辑层。当然,服务器控件支持数据绑定的功能,可以通过数据源进行绑定控件。这样就可以节省在后置隐藏中的代码。 因此,我们就可以把表现层分为UI用户界面以及UI逻辑: UI用户界面的职责 只是作为数据输入和输出后的展示工作。 UI逻辑的职责 是负责业务逻辑层以及UI用户界面之间的数据交互,并且 尽可能地让UI逻辑不依赖于UI技术 。 其中UI用户界面的实现方式有很多,包括ASP.NET,WinForm,WPF,Silverlight,移动Web,智能设备等等。 将表现层中UI页面和UI逻辑分离的策略中,当前使用最多的两种模式是MVC模式和MVP模式。 MVC模式,即模型-视图-控制器模式 ,通过视图触发并执行某个操作,调用控制器,通过控制器去操作业务层,最终返回模型,在视图中进行展示。这里的模型可以是一个领域模型(DM)

从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目)

扶醉桌前 提交于 2020-04-23 06:01:10
========================================================================================= 微软官方创建NuGet包说明文档 具体的可以参考: https://docs.microsoft.com/zh-cn/nuget/create-packages/overview-and-workflow ========================================================================================= 从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目) 2019-06-16 12:53 默认情况下,我们打包 NuGet 包时,目标项目安装我们的 NuGet 包会引用我们生成的库文件(dll)。除此之外,我们也可以专门做 NuGet 工具包,还可以做 NuGet 源代码包。然而做源代码包可能是其中最困难的一种了,目标项目安装完后,这些源码将直接随目标项目一起编译。 本文将从零开始,教你制作一个支持 .NET 各种类型项目的源代码包。 本文内容 前置知识 制作一个源代码包 第一步:创建一个 .NET 项目 第二步:组织项目的目录结构 第三步:编写项目文件

EF 太重,MyBatis 太轻,ORM 框架到底怎么选 ?

早过忘川 提交于 2020-04-12 12:42:16
以 EF 为代表的基于 Linq 的 ORM 框架总是 很重 。 他们的功能早已超出了一个 ORM 的范畴, ORM 是 Object Relational Mapping ,从名字上看,其初衷是将 数据库中的字段 与 实体中的属性 进行关联映射, 但是 重型 ORM 框架 做了很多 额外 的事情 : 数据库连接 数据库事务包装 实体缓存 实体关联管理 数据库表同步 这些功能很好, 强大的功能往往是死板的, 我们无法编写那些灵活的 Sql 去实现某些简便的操作。 以 MyBatis.NET、Dapper 为代表的, 则是基于开发者自行编写 Sql 的 ORM 框架又 太轻。 因为是自行编写 Sql , 所以他们非常灵活, 但是用起来很 痛苦 。 哪怕是一个简单的 Insert ,Update 也得写 Sql, 而且还无法摆脱 数据库 兼容的问题。 你所编写的那些 Sql 在大部分情况下,只能用于一种 数据库 今天要向大家介绍一个 轻量级、不用写 Sql、可以兼容多数据库 的 ORM 框架 Reface.NPI 什么是 NPI NPI 全名 .Net Persistent Interface 。 这是一个利用 interface 实现的轻量级 ORM 框架, 它与市面上大多数的 ORM 框架不同,它不基于 Linq 进行数据库操作,而是基于 Method Name 。 例如

EF 太重,MyBatis 太轻,ORM 框架到底怎么选 ?

不羁岁月 提交于 2020-04-12 12:24:20
以 EF 为代表的基于 Linq 的 ORM 框架总是 很重 。 他们的功能早已超出了一个 ORM 的范畴, ORM 是 Object Relational Mapping ,从名字上看,其初衷是将 数据库中的字段 与 实体中的属性 进行关联映射, 但是 重型 ORM 框架 做了很多 额外 的事情 : 数据库连接 数据库事务包装 实体缓存 实体关联管理 数据库表同步 这些功能很好, 强大的功能往往是死板的, 我们无法编写那些灵活的 Sql 去实现某些简便的操作。 以 MyBatis.NET、Dapper 为代表的, 则是基于开发者自行编写 Sql 的 ORM 框架又 太轻。 因为是自行编写 Sql , 所以他们非常灵活, 但是用起来很 痛苦 。 哪怕是一个简单的 Insert ,Update 也得写 Sql, 而且还无法摆脱 数据库 兼容的问题。 你所编写的那些 Sql 在大部分情况下,只能用于一种 数据库 今天要向大家介绍一个 轻量级、不用写 Sql、可以兼容多数据库 的 ORM 框架 Reface.NPI 什么是 NPI NPI 全名 .Net Persistent Interface 。 这是一个利用 interface 实现的轻量级 ORM 框架, 它与市面上大多数的 ORM 框架不同,它不基于 Linq 进行数据库操作,而是基于 Method Name 。 例如

【Net】ABP框架学习之它并不那么好用

好久不见. 提交于 2020-04-11 19:49:34
前言 上一篇文章介绍了ABP的Web API,本文在继续介绍ABP的其他内容。 在ABP中,WEBAPI是一个值得用的东西。但其他东西,就不一定是那么好用了。 因为越深入的学习ABP,你就越会发现,它自身有着非常强的设计约束,而而微软的框架已经有一定的约束了,再使用一套附加约束,显然会更辛苦。 下面我们看一下ABP的Controller。 创建项目 首先,我们创建一个MVC项目,AbpMvcController。 然后引用Abp.Web.Mvc。 使用了ABP后,必须修改WebApiApplication的继承类,所以,原来的初始化的路由等等信息,要换个 地方写了,下面我们看看变化。 将WebApiApplication改为继承Abp.Web.AbpWebApplication ;Global.asax修改如下: using Abp.Web; using AbpMvcController; using System; using System.Web; [assembly: PreApplicationStartMethod( typeof (PreStarter), " Start " )] namespace AbpMvcController { public class WebApiApplication : Abp.Web.AbpWebApplication

【Net】ABP框架学习之它并不那么好用

喜夏-厌秋 提交于 2020-04-11 19:49:04
前言 上一篇文章介绍了ABP的Web API,本文在继续介绍ABP的其他内容。 在ABP中,WEBAPI是一个值得用的东西。但其他东西,就不一定是那么好用了。 因为越深入的学习ABP,你就越会发现,它自身有着非常强的设计约束,而而微软的框架已经有一定的约束了,再使用一套附加约束,显然会更辛苦。 下面我们看一下ABP的Controller。 创建项目 首先,我们创建一个MVC项目,AbpMvcController。 然后引用Abp.Web.Mvc。 使用了ABP后,必须修改WebApiApplication的继承类,所以,原来的初始化的路由等等信息,要换个 地方写了,下面我们看看变化。 将WebApiApplication改为继承Abp.Web.AbpWebApplication ;Global.asax修改如下: using Abp.Web; using AbpMvcController; using System; using System.Web; [assembly: PreApplicationStartMethod( typeof (PreStarter), " Start " )] namespace AbpMvcController { public class WebApiApplication : Abp.Web.AbpWebApplication

Duck typing / dynamic proxies on existing instances of objects

拟墨画扇 提交于 2020-04-11 07:43:14
问题 I have an object handed into our library and passed through various processes. I need to attach some additional information to these objects as they pass through various stages and out the other end - a kind of dynamic decorator pattern, I guess, except adding additional properties rather than changing existing behaviour. I was hoping to use LinFu or Castle to create a dynamic proxy and implement an additional interface on the object to store this. Components that know about the extended

Castle与Mixin

…衆ロ難τιáo~ 提交于 2020-03-23 07:19:19
Mixin是一种将某个类中的方法混入其他类中的软件开发风格。简单的说,就是一个类可以使用其他类的方法。这个初听起来有点像类的继承,但是这与传统的类继承的方式不一样。 首先,Mixin不是类的继承。传统的,一个类A继承了某个类B,那么A就可以直接调用B中的非private的方法。但是在Mixin中,A与B没有继承关系,而A却能使用B的非private的方法。 其次,Mixin的这些行为是在运行时发生的,而不是静态指定的。 下面是一个来自Python的Mixin的例子: John 翻著新的一期 LJ(Linux Journal) [John@mars /tmp]# vi Lover.py class lover: def __init__(self,man='man',woman='woman'): self.lover='When a '+man+' love a '+woman print self.lover def smile(self): print self.lover+':-)' def kiss(self): print self.lover+':-)(-:' [John@mars /tmp]# python Python 2.1 (#1, Apr 18 2001, 17:55:45) [GCC 2.95.3 19991030 (prerelease)] on