poco

.Net下几种ORM

旧街凉风 提交于 2020-04-27 10:51:58
  最近研究了下ORM工具。总结一下。   之前有个小项目基于.Net40的WinForm。升级改造,想用ORM,由此引起。   第一选择是SqlSugar,国内团队制作,好用的很,但是.Net最低支持到4.5,而.Net45是不能在WinXP下运行,故可惜的放弃掉。   然后,找能在.Net40下运行的ORM,DosORM进入视野,但是发现有缺点,DosORM需要Model层都继承Entity类,而这个类在ORM.dll里,这样Model层将和ORM耦合,非常不好。而且DosTools工具生成的Model层,要求set里有onchange函数,而且还有内嵌类用于字段描述,简单的POCO,DosORM无法Update操作,造成Model层不干净。不佳。   转而,又延伸到Dapper,发现不错,1.52以下支持可以.Net40,对Model层简单set,get即可,无依赖,干净。缺点是它的CUDR需要写一些SQL,感觉不好,但是有个Dapper.SimpleCUDR的项目,引用后,可以支持简单泛型写法。那就选他了。其实在普通项目对DB层的需要,就是对单表的增删改查,多表的左连接查询,多表的事务更新,没有特别复杂的需求。   项目层次是,UI层引用Service层。Service层引用DB层。Model是独立的。DB层里包含Dapper和数据库连接器。Service层里有Dto

[半翻] 设计面向DDD的微服务

廉价感情. 提交于 2020-04-26 13:21:27
这篇文章行文结构对照微软博客, 结合本人意译和多年实践的回顾思考形成此次读书笔记。 Domian-driven Design 领域-驱动-设计(DDD)提倡 基于(用例相关的现实业务)进行建模 。 1. DDD的视角 DDD将 现实问题视为领域 ; DDD将 独立的问题描述为有界限的上下文 (一个有界上下文对应一个微服务),并强调通用语言讨论这些问题 2. DDD提出的概念 许多技术概念和模式,例如充血模型(对应我们常写贫血模型)、值对象、聚合和聚合根规则。 3. 目前实施DDD的现状 有时DDD技术规则和模式被视为障碍/啰嗦,对于实施DDD方法而言,学习曲线比较陡峭。 不要为了实施而实施,最重要的是 使用通用语言编写与业务问题一致的领域代码 。 此外仅当您要实现具有复杂业务规则的微服务时,才应使用DDD方法,诸如CRUD服务之类的简单职责可以通过更简单的方法进行管理。 DDD模式可以协助 划分微服务边界 在已经确定的界限上下文,您可以为领域建模:实体模型、值对象和聚合,DDD与边界有关,微服务也与边界有关。 尽量保持小型微服务 划分界限上下文,要平衡两个目标: 创建尽可能小的微服务(这一点不应该成为主要动力) 要避免微服务之间过密的通信 这两个目标可能彼此矛盾,两者通过演进的方式达到平衡: 尽可能分解系统,直到在下次分解时感到服务通信迅速增加。 DDD微服务中的层

基于AirTest+Python的ios自动化测试demo

爷,独闯天下 提交于 2020-04-24 15:35:54
本文我是复制与 https://cloud.tencent.com/developer/article/1379155 ,在这里也非常感谢大神的分享。 AirTest相比Appuim有个好处就是可以对GUI图片进行捕捉和最新版本支持WebView(目前Appuim不支持iOS12的WebView进行Xpath抓取) AirTest环境搭建可参考以下链接: https://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/1_quick_start.html 环境配置: libimobiledevice: stable 1.2.0 (bottled), HEAD Python 3.7 WebDriverAgent 用AirTest提供的[ https://github.com/AirtestProject/IOS-Tagent ] Xcode10.1 AirtestIDE 启动AirTest 运行WebDriverAgent【运行之前先用Xcode打开WebDriverAgent.xcodeproj,选择开发者账号来Build正常】 可以采用终端方式来运行: xcodebuild build- for -testing test-without-building -project [WebDriverAgent.xcodeproj目录地址]

小程序UI自动化(二):airtest小程序自动化

狂风中的少年 提交于 2020-04-24 14:15:33
airtest是什么 Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。 airtest官网介绍如下:   AirtestIDE 是一个跨平台的UI自动化测试编辑器,适用于游戏和App。 自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程 支持基于图像识别的 Airtest 框架,适用于所有Android和Windows游戏 支持基于UI控件搜索的 Poco 框架,适用于Unity3d,Cocos2d与Android App 能够运行在Windows和MacOS上 网易内部已成功应用在数十个项目上,利用 手机集群 进行大规模自动化测试 airtest支持语言: 从上图官网介绍可知,airtest仅支持python语言 airtest环境配置 airtest安装教程官网介绍的很详细, 官网地址: http://airtest.netease.com/tutorial/Tutorial.html 按照官网安装介绍下载解压即可: 3,连接设备(android为例) (1)打开手机 设置-开发者选项-USB调试 开关 (2)用usb线连接手机和电脑 (3)在AirtestIDE设备面板中点击 "刷新 ADB "按钮,查看连接上的设备 (4)点击对应设备的 Connect 按钮,进行初始化 airtest小程序自动化脚本编写(以美团小程序为例)

Airtest-UI 自动化集大成者

 ̄綄美尐妖づ 提交于 2020-04-24 14:15:01
前言 Airtest是由网易研发的一款基于Python的、跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App。该项目目前已在Github上面开源: https://github.com/AirtestProject/Airtest 官网地址: http://airtest.netease.com/ 官方文档手册非常详细,建议大家入门可以先去看下相关的文档说明。 为什么需要Airtest? 众所周知,UI层测试按照平台种类划分有Windows、Linux、Android、Web、小程序等 针对于移动端Android & IOS平台,有最火的Appium测试框架 http://appium.io/ Web端有selenium测试框架 http://seleniumhq.org/ windows应用平台有AutoIT、Pywinauto 而业界针对游戏类的应用并没有比较好的解决方案,而Airtest测试框架应运而生,基于底层的Airtest和poco: Airtest:基于Python的、跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App。 Poco:基于UI控件搜索的自动化测试框架,其核心优势是除了对Android、IOS之外,对游戏也是支持的,同时也支持微信小程序、微信小游戏和H5应用。 Airtest还非常贴心的配备了Airtest IDE

ASP.NET Core MVC入门——3

♀尐吖头ヾ 提交于 2020-04-19 21:19:42
https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-mvc-app/adding-model?view=aspnetcore-3.1&tabs=visual-studio 这一章节中,我们开始认识一下MVC中的M,也就是Model。 Entity Framework Core是微软提供给开发者的一个ORM框架,类似java中的MyBatis和Hibernate。将Plain Old CLR Objects(POCO)类可以直接转换为数据库中的增删改查的操作代码,减少重复开发代码量。 POCO 这种类是只有属性没有方法的类,纯粹表示数据,可以用于和数据库之间的映射。 EF Core库只要求我们写POCO类,然后该库就可以根据这些类自动在数据库中建立对应的表,以及相关的增删改查。 新建model Movie.cs using System; using System.ComponentModel.DataAnnotations; namespace MvcMovie.Models { public class Movie { public int Id { get; set; } public string Title { get; set; } [DataType(DataType.Date)] public

如何在iOS手机上进行自动化测试

不打扰是莪最后的温柔 提交于 2020-04-18 05:52:31
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途 Airtest支持iOS自动化测试,在Mac上为iOS手机部署iOS-Tagent之后,就可以使用AirtestIDE连接设备,像连接安卓设备一样,实时投影、控制手机。iOS测试不仅限于真机测试,iOS模拟器也可以进行。Mac端上部署完成后还可以提供给同一局域网内的windows上远程连接使用。同时支持airtest图像识别和poco UI检索。 本文介绍iOS自动化测试的部署过程,提供一个简单的测试脚本,列举了iOS测试过程中常见的问题。 功能支持 支持AirtestIDE连接,实时控制 iPhone 支持基本操作如启动app、点击、滑动、输入、截图等等操作 支持控件检索技术Poco和图像识别 自动化脚本录制、一键回放、报告查看等基本功能 支持真机或者模拟器 安装部署 版本需求: Mac Xcode ≥ 9.3 iPhone iOS ≥ 9.3 在 9.3≤iOS≤10时,由于基于旧版xcode SDK,建议使用Xcode 版本≤10.1来启动iOS-Tagent,否则会出现手机截屏不全的问题。 部署流程 在Mac下载 iOS-Tagent ,使用 Xcode 启动 Test , 具体启动过程可参考 https://github.com/AirtestProject/iOS-Tagent

[翻译 EF Core in Action 2.1] 设置一个图书销售网站的场景

泄露秘密 提交于 2020-04-18 03:58:09
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍。 原版地址 . 是除了官方文档外另一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识。因为没有中文版,所以本人对其进行翻译。 预计每两天一篇更新 PS: 翻译难免限于本人水平有不准确的地方,建议英文水平不错的同学直接查看原版,有不足的地方欢迎指正 第一部分目录导航 假设场景 -- 图书销售网站 在本章中你会构建一个图书销售网站示例,称之为图书应用程序. 这个示例应用程序帮助我们查看查询中的关系. 本节中介绍了图书应用程序所需的数据库与EF Core的实体类部分 这里是图书应用程序的运行实例 http://efcoreinaction.com 图书应用程序的关系型数据库 虽然我们可以将作者,书,评论等所有数据都放到一张表中,但在关系型数据库中这样设计是很糟糕的,关系型数据库的规范是分离重复的数据,例如作者 我们有多种方式在数据库设计图书数据的各种部分,在本例中的数据库具有EF Core的主要关系类型,分别是以下三种: 一对一的关系: 书与优惠价格 一对多的关系: 书与评价 多对多的关系: 书与作者 一对一的关系: 书与价格 一个书可以有促销价格

ASP.NET Core中的Controller

别说谁变了你拦得住时间么 提交于 2020-04-17 08:34:16
【推荐阅读】微服务还能火多久?>>> ASP.NET CORE出现之前我们实现的Controller,MVC都继承自Controller基类,WebApi的话继承自ApiController。现在ASP.NET CORE把MVC跟WebApi合并了,已经不再区分MVC或者WebApi。ASP.NET CORE的Controller继承结构也发生了变化。我们看其他示例的时候会发现有些继承自Controller有些继承自ControllerBase。事实上ControllerBase是Controller的基类。也就是说如果你继承自Controller,其实就是继承了ControllerBase。那什么时候该选择直接继承ControllerBase呢? ControllerBase 我们先看看ControllerBase的元数据: 很长并没有截全。可以看到ControllerBase是个抽象类,并且实现了大量的虚方法。这些虚方法大都是对应了Http的状态码。 比如: public virtual OkResult Ok(); //http status 200 public virtual NotFoundResult NotFound(); //http status 404 public virtual ForbidResult Forbid(); //http status

.NET项目升级手记:可为空引用

拟墨画扇 提交于 2020-04-14 14:56:44
【推荐阅读】微服务还能火多久?>>> c# 8引入了新特性:“可为空引用”( 详情 ),这个功能个人觉得挺好的,能够非常明确的表现程序设计者的意图,编译器能够进行检查,尽最大可能减小NullReferenceException错误。 如果是新项目,那么上手很简单,一点点搭建起来,遇山开山,遇河渡河。但是对于我这种手头上的项目大多都是以前创建的情况,就要稍微做那边么一点操作了。 要看完整说明,请查看开头的那个链接。 准备 首先评估一下几个条件: 项目可以基于.NET CORE 3.0及以上编译。如果不行,那么就请直接右上角点×。 是不是大多数的变量都需要null引用?如果是的话,个人觉得不值得费劲了。 操作 以一个ASP.NET WEBAPI为例,项目修改前是能够正常编译无错误无警告的。 1. 启用Nullable(可为空引用类型) Nullable默认是不启用的,需要做一些修改以启用。有两种方式: 修改csproj文件,在ProperyGroup里面添加 enable 项。 对于比较小型的项目,可以直接修改,这样弹出来的警告或者错误会比较少,方便我们快速改正。 使用编译器指令#nullable enable和#nullable restore进行修改。在代码段的开头enable,结尾处restore。 对于中大型项目,直接使用第一种方式进行修改会导致大量的警告,很容易一团糟