abp的开发20180425】的更多相关文章

指定默认语言. mvc5 在Global中的 protected override void Application_BeginRequest(object sender, EventArgs e) { var langCookie = Request.Cookies["Abp.Localization.CultureName"]; if (langCookie == null){ Response.Cookies.Add( new HttpCookie("Abp.Local…
Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 目录 前言 开始 创建模块 模块开发 应用服务 运行模块 单元测试 模块使用 最后 前言 在之前的章节中介绍过ABP扩展实体,当时在用户表扩展了用户头像字段,用户头像就涉及到文件上传和文件存储.文件上传是很多系统都会涉及到的一个基础功能,在ABP的模块化思路下,文件管理可以做成一个通用的模块,便于以后在多个项目中复用.单纯实现一个文件上传的功能并不复杂,本文就借着这个简单的功能来介绍一下ABP模块化开发的最基本步骤. 开始 创建模块…
.NetCore 项目开发正当火热,ABP也推出了.NetCore的版本.趁此机会学习.NetCore的开发与发布过程.以下是本人的踩坑经验. 在ABP官网提供单页面应用开发框架(AngularJs)和传统的多页面应用开发框架(MVC).本人选用的是后者 下载完后可以看到项目分层和结构跟之前没太大区别. 部分区别如下: 1.多了 .Migrator层,其依赖Core层和EF层 2.移除了API层 3.appsettings.json 配置文件 4.Program 程序入口... 首先Migrat…
以下是笔者在 Ubuntu 16.0-64bit 环境下 发布 ABP(.NetCore)的全过程.特此记录,希望对大家有所帮助. 准备的工具 1.PuTTY(ssh,如果不想每次都用阿里云的远程登录,那么可以试试这个.) 2.WinSCP(图形化SFTP客户端,美观又好用) 3.Ubuntu 16.0-64bit     Step 1  搭建 .NetCore运行环境 1)添加 dotnet apt-get 支持文件(Ubuntu 16.04 / Linux Mint 18环境) sudo s…
在网站开发中,设置是不可缺少的一环,如用户设置.系统设置.甚至是租户设置等.ABP对于设置的管理已经做了很好的处理,我们可以借助巨人的力量来完成我们的冒险. ABP官网地址:https://aspnetboilerplate.com/ 一.设置的层级划分 ABP中提供了三种类型的设置,用户级别.应用级别.租户级别,针对于不同级别有着不同的侧重点,比如用户级别,针对于用户的一些设置,如主题设置,接收通知设置等:针对应用级别,该级别也能在用户层级上进行影响,好比如设置统一的主题皮肤,而它主要体现在整…
在业务系统需求规划过程中,通常对于诸如组织机构.用户和角色等这种基础功能,通常是将这部分功能规划到通用子域中,这也说明了,对于这部分功能来讲,是系统的基石,整个业务体系是建立于这部分基石之上的,当然,还有诸如多语言.设置管理.认证和授权等.对于这部分功能,ABP中存在这些概念,并且通过Module Zero模块完成了这些概念. 一.角色访问控制之RBAC RBAC:Role Based Access Control,基于角色的访问控制,这在目前大多数软件中来讲已经算得上是普遍应用了,最常见的结构…
一.概述 有些功能在单个项目或多个项目被重复使用,比如:附件,同一个系统中的多个模块都可能使用到,不同项目也有需要.再比如:有无限级分类的树形功能,区域.产品分类.数据字典等.最简单粗暴的办法是直接复制代码,最后本来是同一个功能被复制了多份,而且可能最后都被各自修改得面目全非.理想的办法是将这些通用功能封装起来,通过迭代升级版本,不同项目都可以引用他们,封装的时候留出扩展点方便每个项目的个性化需求 nuget中搜索bxjg可以找到已发布的模块,源码后续会放github上,猴急的你可以私我 本篇讲…
在日常开发中,有时会遇到一些相似的代码,甚至是只要CV一次,改几个名称,就可以实现功能了,而且总归起来,都可以由一些公用的页面更改而来,因此,结合我日常开发中使用到的页面,封装一个适合自己的代码生成器,仅处于入门阶段,包括生成的代码结构都仅是把框架展示出来,内部详细暂时没得,针对于应用服务中的接口和实现,相关Dto,MVC中的控制器.视图及视图模型进行了模板制作及生成相关的文件. 一.设计思路 方案一:开始想到的是,搞个控制台,然后给一个.cs文件,然后控制台去解析其中的命名空间,类名,属性,再…
一.前言 上一篇大概说了下abp通用树形模块如何使用,本篇主要分析下设计思路. 日常开发中会用到很多树状结构的数据,比如:产品的多级分类.省市区县,大多数系统也会用到类似“通用字典/数据字典”的功能,为系统各个地方提下拉框选择的数据源.abp提供了一个模块化系统,只要按它的约定就可以实现一个通用的树形数据的模块,这样公司的多个系统都可以使用,也可以用类似nuget的方式提供给别人使用. 先列举下它的功能 通过nuget方便安装和升级 配置简单 默认已经提供“通用字典”功能 实体.管理器.应用服务…
由于项目采用的微服务框架,前端与后端交互难免有跨域的问题.abp vnext实现跨域也很简单,只需要设置几处就可以了,这里只讲全局的跨域,至于局部的Action如何跨域请自行搜索.netcore 跨域相关的知识. 1.修改appsettings.json 下的App:CorsOrigins节点,把前端的域名加进来.比如 "App": { "CorsOrigins": "https://*.Test.com,http://localhost:4200,htt…
最近在做一个项目,用的框架是Abp vnext ,不是Abp, 我自己也是刚开始用这个框架来做项目,难免要查资料,这个框架官方有中文文档,可以到官网www.abp.io 去查看,国内也有一些写了相关的文档,但是很多文档基本就是把官方文档搬过来,对于实际有些关键点的坑并没有填,还有些写的通篇理论知识,各种名词,像老太太的裹脚布,查资料查起来各种头大.我是实战派,这里就自己遇到的问题和开发项目的经验讲一些自己的理解,也好让用这个框架的人员快速入门. 好,废话不多说,下面就开始说,全是干货哦(注意看以…
本文主要通过逐步构建一个CRUD示例程序来介绍 ABP 框架的基础知识.它涉及到应用开发的多个方面.在本章结束时,您将了解ABP 框架的基本开发方式.建议入门人员学习,老手不要浪费您宝贵时间.  创建解决方案 第1步是为产品管理解决方案(如果您在前面已经创建过了ProductManagement解决方案,可以继续使用它).在这里,我们运行以下ABP CLI 来进行创建: abp new ProductManagement -t app 我们使用自己熟悉的 IDE 中打开解决方案,创建数据库,然后…
测试 ProductAppService 类 启动模板附带测试基础架构,包括xUnit.Shouldly和NSubstitute库.它使用SQLite 内存数据库来模拟数据库,并为每个测试创建一个单独的数据库.它会自动初始化数据并在测试结束时销毁测试数据.通过这种方式,测试不会相互影响,并且您的真实数据库保持不变. 下面展示在 UI 上使用应用服务之前,如何为ProductAppService类的GetListAsync方法写单元测试代码(构建自动化测试细节后续再议). 在.Applicatio…
这个项目起源于去年公司相要尝试用微服务构建项目,在网关的技术选型中,我们原本确认了ApiSix 网关,如果需要写网关插件需要基于Lua脚本去写,我和另外一个同事当时基于这个写了一个简单的插件,但是开发测试以及发布都很麻烦,而且使用Lua脚本作为插件的开发语言本身也不是我们强项. 后来通过其他渠道了解到了微软出了一个反向代理组件 Yarp,而且也有人基于它去做过一些项目,于是我就决定自己基于它来构建一个简单的Api网关,能够满足基础需求就好. 项目技术使用: 开发平台: .Net 6 + MySq…
在Abp(.NetCore)开发过程中遇到很多问题,今天记录下Abp的防CSRF功能(AntiForgeryToken ), 背景知识. AntiForgeryToken 可以说是处理/预防CSRF的一种处理方案. 那么什么是CSRF? CSRF(Cross-site request forgery)是跨站请求伪造,也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用. 简单理解的话就是:有人盗用了你的身份,并且用你的名…
在业务型的系统开发中,我们需要维护各种个样的类型,比如客户类型.客户行业.商品类型等等,这些类型往往信息量不多,并且相似度极高,如果采用一类型一表去设计,将会造成极大的工作量,通过将这部分类型的信息进行抽象,利用字段去存储类型区分,共用表结构,来达到兼容各种类型的功能,也就是设计一个数据字典,而对于一个具体类型来讲,是有多个选项的,比如性别,有男女,行业有工农商等,对于这部分选项,可抽象为某个类型下的字典项,即数据字典项. 一.数据字典设计思路 1.从客户类型.商品类型.行业类型来抽象考虑,首先…
业务型网站使用过程中,消息通知是一个不可或缺的功能,采用站内通知.短信通知.邮件通知.微信通知等等各种方式都有,ABP框架对这部分工作已经封装的很好了,站在巨人的肩膀上,一览全貌,带来的就是心情舒畅. ABP官网地址:https://aspnetboilerplate.com/ 一.明确概念 一次完整的消息发送/接收过程中,会存在几个必要的点,也正如同现实生活中的场景,有人发送,有人接收,发送的消息本身也有类型. 1.消息类型定义 在ABP中已经提供了消息类型定义的相关类,但是需要我们去实现,在…
网站正常运行中有时出现异常在所难免,查看系统运行日志分析问题并能够根据错误信息快速解决问题尤为重要,ABP对于系统运行日志这块已经做了很好的处理,默认采用的Log4Net已经足够满足开发过程中的需要了(当然有需要的话也可以更换为其它日志组件). ABP官网地址:https://aspnetboilerplate.com/ 一.日志文件 ABP框架默认使用了Log4Net日志组件,日志记录在txt文件中,也可以替换成其它日志组件诸如Nlog,方便将日志文件信息直接记录到数据库中,具体情形使用具体组…
软件即服务概念的推动,定制化到通用化的发展,用一套代码完成适应不同企业的需求,利用多租户技术可以去做到这一点.ABP里提供了多租户这一概念并且也在Zero模块中实现了这一概念. 一.多租户的概念 单部署-单数据库:部署应用程序的单个实例和单个数据库.在每个数据表(关系型数据库)里用一个TenantId(租户Id或类似的如企业Id)字段来隔离区分每个租户数据. 单部署-多数据库:部署应用的单一实例,用一个主(宿主)数据库存储租户元数据(像租户名和子域),并为每个租户建立并维护一个隔离的数据库.操作…
多租户系统中,针对于不同租户开放不同功能,或是按照不同功能进行收费管理,需要从宿主本身去管理租户的版本信息,如同酒店人员对不同房间收取不同费用,依据房间内部设施,房间大小等设置不同收费标准.Abp系统中默认是多租户的,并且在Zero模块中实现了版本管理功能. 演示地址:http://119.3.138.127/,更改Account/HostLogin进入宿主管理 一.设计前提 基于Abp进行了相关限制,我将多租户变成了单租户,不允许添加新的租户,由于日常接触中,发现除了云平台这种SaaS需要多租…
上篇讲了abp vnext 实现了简单的增加操作的例子.删除更新查询基本类似,这里就不讲了,接下来说下如何实现角色权限控制. 再说之前,先说下如果想更加透彻的理解abp vnext的权限控制,最好是先要了解IdentityServer4 和 asp.net core 基于策略的授权.如果你说我不想要去了解那么多.我就想快点能实现功能,那么就往下看吧. 我这里主要说的是权限相关的控制,其实abp实现权限控制就是把设置好的一个个权限当成了一个个的策略,这里讲如何去实现. 首先,先去设置需要加的权限,…
上篇说了abp vnext 的大体框架结构,本篇说下如何实现基础的增删改查.实现增删改查有以下几个步骤: 1.配置数据库连接 2.领域层(Domain)创建实体,Ef core 层配置Dbset( 用的Ef core code first) ,自动创建数据库和表 3.ApplicationContract 层编写Dto(数据传输对象) 4.Application 层设置AutoMap, 编写增删改查方法 5.运行宿主服务,这里用到了swagger,用swagger 进行测试. 我就一个一个步骤挨…
ABP是ASP.NET Boilerplate的简称,ABP是一个开源且文档友好的应用程序框架.ABP不仅仅是一个框架,它还提供了一个最徍实践的基于领域驱动设计(DDD)的体系结构模型.学习使用ABP框架也有一段时间了,一直想全面了解下这个框架的整个来龙去脉,并把想把它使用历程整理成一个系列出来,不过一直没有下笔来写这篇文章的开篇,就是希望能够深入了解,再深入了解一些,希望自己能够理解透彻一些,不能误人子弟,也不想和网上千篇一律的翻译官网的内容,官网的英文介绍也已经很详细了,于是我觉得还是以实际…
五分钟完成 ABP vNext 通讯录 App 开发 ABP vNext(后文简称Abp)是 Volo 公司堪称艺术品级的应用开发框架,它基于领域驱动设计(DDD)的思维,创新地采用了模块化的设计.Abp 目前无疑是 ASP.NET Core 开发框架中最先进和最优雅的存在.笔者认为,凭借绝妙的模块化设计和丝滑的开发体验,Abp 有望超越 Spring 家族在历史上的影响力. 模块开发与应用开发的关系 使用 Abp 框架,你可以提前制作一些功能模块,例如微信登录.私信.博客.论坛等模块,将它们打…
首先,默认咱们已经有了.net core 3.1的开发环境,如果你没有,快去下载... https://dotnet.microsoft.com/download 由于项目是基于abp vNext开发的,所以开发之前建议去撸一遍abp官方文档,https://docs.abp.io/en/abp/latest/ 创建项目有很多种方式: 第一种,纯手撸,使用vs手动创建新项目 第二种,借助abp模板直接傻瓜式下载,地址:http://abp.io/get-started 第三种,abp cli(推…
简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项目中涉及到的知识点,例如DTO,应用服务层,整洁架构,领域对象(如实体,聚合,值对象)等. 笔者也曾经提到,ABP依赖于领域驱动设计这门方法论,由于其门槛较高,给使用者带来了不少理解上的难度.尤其是三层架构对.NET开发者影响太深,有时很难对领域驱动设计产生直观的理解. 在本文中,打算从传统的简单三层架构谈起,介绍一个实际场景下的三层业务逻辑实现,然后再与领域驱动设计中的对应实现形成对比,以便让开发者形成直观…
写在发布之前 有没有小伙伴跟我刚开始接触 ABP Framework 的感觉一样"一看文档深似海",看完文档之后,想要上手却找不着头绪. 本套教程写作的目的之一是为初学者提供一条相对简洁的快速上手路径,避免陷入到框架细节中,节省入门时间.降低上手难度,快速应用.整合.运行.发布整个解决方案,先从整体开发上对框架有一个把握. 官方文档提供的是"标准化"内容,在实际使用过程中,难免会遇到一些"意想不到的情况",启动模板不支持源码调试,官方教程也并没有…
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从python到Node.js,了解过设计模式,也跟风了微信公众号开发.然而却浅尝辄止,未曾深入.买了一本本的技术书籍,没完整的翻完一本.屯了一部部的pdf,却只是在手机里占着内存.想过改变,却从未曾着手改变. 以上算是我程序猿生涯的真实写照. 现在我要尝试改变,从基础的helloworld开始,记下学习…
ABP相关岗位招聘:给热爱.NET新技术和ABP框架的朋友带来一个高薪的工作机会 ABP交流会录像视频:ABP架构设计交流群-7月18日上海线下交流会的内容分享(有高清录像视频的链接) 代码自动生成:分享一个与ABP配套使用的代码生成器源码 ABP系列文章总目录: 1.ABP总体介绍  2.ASP.NET Boilerplate入门 3.ABP分层架构 4.ABP模块系统 5.ABP启动配置 6.ABP依赖注入 7.ABP Session管理8.ABP日志管理9.ABP设置管理10.ABP领域层…
目前,我已经完成了Module-Zero的翻译,请查看我的<Module-Zero学习目录>. 到现在为止,使用ABP框架开发正式项目已经3个月有余了,期间翻阅了大量文档资料,包括ABP官网的文档,以及 @阳光铭睿 的系列教程. 但是我今天想回过头来,照着ABP官网的英文文档,加上我这几个月使用ABP做项目的经验或心得,凭借着自己过了英语六级的英文水平,以及本身对技术和英文同样热爱的难得,决定对ABP官网的文档翻译一下,我会在用词和翻译上力求大家都能理解.之前也看了 @阳光铭睿 的系列教程,翻…