黄岛网站建设公司哪家好商场设计效果图

news/2025/10/8 9:21:22/文章来源:
黄岛网站建设公司哪家好,商场设计效果图,河南省建设工程质量安全监督网站,统计工具一. 前言 从本节开始#xff0c;将陆续的介绍几种框架搭建组合形式#xff0c;分析每种搭建形式的优势和弊端#xff0c;剖析搭建过程中涉及到的一些思想和技巧。 (一). 技术选型 1. DotNet框架#xff1a;4.6 2. 数据库访问#xff1a;EF 6.2 (CodeFrist模式) 3. IOC框架…一. 前言 从本节开始将陆续的介绍几种框架搭建组合形式分析每种搭建形式的优势和弊端剖析搭建过程中涉及到的一些思想和技巧。 (一). 技术选型 1. DotNet框架4.6 2. 数据库访问EF 6.2 (CodeFrist模式) 3. IOC框架AutoFac 4.8.1 和 AutoFac.MVC5 4.0.2 4. 日志框架log4net 2.0.8 5. 开发工具VS2017 (二). 框架目标 1. 一个项目同时连接多个相同种类的数据库在一个方法中可以同时对多个数据进行操作。 2. 支持多种数据库SqlServer、MySQL、Oracle灵活的切换数据库。 3. 抽象成支持多种数据库连接方式EF、ADO.Net、Dapper。 二. 搭建思路 1. 层次划分 将框架分为Ypf.Data、Ypf.IService、Ypf.Service、Ypf.DTO、Ypf.Utils、Ypf.AdminWeb 六个基本层后续还会补充 Ypf.Api层每层的作用分别为 ①. Ypf.Data存放连接数据库的相关类包括EF上下文类、映射的实体类、实体类的FluentApi模式的配置类。 ②. Ypf.IService业务接口层用来约束接口规范。 ③. Ypf.Service业务层用来编写整套项目的业务方法但需要符合Ypf.IService层的接口约束。 ④. Ypf.DTO: 存放项目中用到的自定义的实体类。 ⑤. Ypf.Utils: 工具类 ⑥. Ypf.AdminWeb: 表现层系统的展示、接受用户的交互传递数据业务对接。 PS后续会补充Ypf.Api层用于接受移动端、或其他客户端接口数据进行相应的业务对接处理。 2. Ypf.Data层的剖析 把EF封装到Ypf.Data层通过Nuget引入EF的程序集利用FluentAPI的模式先进行配置实际项目多种模式配合使用该层的结构如下 PSEF的关闭默认策略、EF的DataAnnotations、EF的FluentAPI模式 在关闭数据库策略的情况下无论哪种模式都需要显式的 ToTable来映射表名否则会提示该类找不到。 EF配置详情参考 第十五节: EF的CodeFirst模式通过DataAnnotations修改默认协定 第十六节: EF的CodeFirst模式通过Fluent API修改默认协定 3. Service层和IService层简单的封装一下 【PS这个地方是个关键点需要考虑多种不同的写法然后进行封装】 ①.【Ypf.Service】层只有一个BaseService泛型类封装【Ypf.IService】层并没有设置IBaseService接口设置了一个IServiceSupport标识接口(没有任何内容)需要“AutoFac注入”的所有子类IxxxService都要实现IServiceSupport接口。 ②.【Ypf.Service】层中有很多自定义的 xxxService每个xxxService都要实现【Ypf.IService】层的IxxxService层接口这里的xxxService层划分并不依赖表名划分自定义根据业务合理起名即可。 ③. xxxService类中利用using() 包裹EF的上下文“db”便于释放然后把EF上下文传入到泛型的BaseServiceT类的构造函数中可以调用其封装的方法。 ④.利用AutoFac实现在控制器中属性的注入相应的配置均写在Global文件中。 ⑤.控制器中的Action仅仅负责传值和简单的一些判断核心业务全部都写在Service层中。 4. 利用AutoFac实现Ypf.AdminWeb层与Ypf.Service层解耦 利用AutoFac进行整合使Ypf.AdminWeb层只需要引入YpfIService层即可但需要改一下Ypf. Service输出路径使其程序集输出到Ypf.AdminWeb层中。 解析利用AutoFac把Ypf.Service中的所有类注册给它的全部实现接口一个类可能实现了多个接口并且把实现类中的属性也进行注册实现类中也可能包含属性的注入。 AutoFac的配置详情参考  第二节框架前期准备篇之AutoFac常见用法总结 5. 将Log4net整合到Ypf.Utils层中 解析主要配置了两种模式输出到“txt文本文档”和“SQLServer数据库中”。其中“文本文档”又分了两种模式全部输入到一个文档中 和 不同类型的日志输入到不同文档下在调用的时候通过传入参数来区分存放在哪个文件夹下。 Log4net的配置详情参考 第一节框架前期准备篇之Log4Net日志详解 6. 完善【Ypf.Service】层中BaseService的封装 封装EF常用的增删改查的方法这里暂时先不扩展EF插件的方法分享一下代码。 BaseService 三. 剖析核心 1. 如何实现同时操作多个相同类型的不同结构的数据库。 首先【Ypf.Data】层中新建一个存放的实体的文件夹如“EntityTest”用来引入另外一个数据库的存放实体和DbContext上下文然后在【Ypf.Service】层中双Using往BaseService类中传入不同db上下文即可实现访问不同的数据库如果要对多个数据库开启事务手动开启msdtc服务然后使用Transactions包裹进行事务一体操作。 详细的使用步骤见实战测试。 2. 体会【Ypf.IService】层 和 引入IOC框架的作用 【PS依赖倒置原则的核心就是面向接口编程】 (1). 接口层的作用 a. 便于开发人员分工开发写业务的单独去写业务对接的单独去对接而且事先把接口协议定好那么对接的人员就不需要等业务人员全部写完代码就可以对接了无非最后再测试而已。 b. 降低修改代码造成的成本代价使以接口为基础搭建起来的框架更加稳健。 举例1 三层架构 数据库访问层、业务逻辑层、UI调用层。 非此套框架的模式后面考虑这么改进 ①. 数据库访问层中有一个 MySqlHelp类提供链接MySQL数据增删改查的方法。 ②. 业务逻辑层有一个登录业务 CheckLogin(MySqlHelp mysql,string userName,string pwd)。 ③. UI调用层要调用CheckLogin方法这时候实例化一个MySqlHelp对象传到CheckLogin方法中即可。   有一个天要求支持oracle数据库所以数据库访问层中增加了一个oracleHelper类UI调用层按照常规实例化了一个oracleHelper对象传到CheckLogin方法中发现我的天CheckLogin竟然不支持oracleHelper对象同时发现类似的所有业务层的方法都不支持oracleHelper类这个时候悲剧就发生了如果全部改业务层的方法基本上完蛋。 所以根本的解决方案依赖倒置原则即面向接口编程。 ①. 数据库访问层声明一个接口IHelper,里面有增删改查方法MySqlHelp和oracleHelper都实现IHelper接口。 ②. 业务逻辑层有一个登录业务改为依赖接口IHelper CheckLogin(IHelper iHelper,string userName,string pwd)。 ③. UI调用层要调用CheckLogin方法想连哪个数据就实例化哪个 eg IHelper iHelpernew MySqlHelp(); 或者 IHelper iHelpernew oracleHelper()此处考虑和IOC框架结合连代码都不用改直接改配置文件就行了就可以切换实例然后调用CheckLogin即可。 举例2 类A类B类C。 类A中的方法需要传入类B的实例通常在类A中实例化一下类B但如果想让类A依赖类C你会发现改动非常大类A中的方法原先是类B的参数全部需要改。 所以解决方案类B和类C都实现接口I类A中方法的参数由原先的类B改为接口I这样类A想依赖谁只需要 I inew B() 或者 I inew C(),所有的方法都不用改也可以再升级一下这里不直接实例化利用IOC框架或者手写反射只需要改一下配置文件就能控制 到底是 new B 还是 new C 。 (2). 引入IOC框架的作用 解决的问题1现有的框架模式(Service层using引入EF上下文传入到BaseService类中)如何实现快速切换数据库 a首先在【Ypf.Data】层引入MySQL数据库所需要的程序集配置文件也改成连接MySQL的。(此处需要详细测试) b. 新建一个【Ypf.Service2】层同样实现对应业务只不过是连接不同类型的数据库(比如它连接的是MySql数据库)生成路径也输出到【Ypf.AdminWeb】层中最后只需要改一下AutoFac读取的配置文件“DllName”改为“Ypf.Services2”即可就可以实现切换数据。 总结该模式虽然能实现“相同业务、相同表”的不同类型的数据库切换比如SQLServer→MySQL但是需要重新写一个整层【Ypf.Service2】,虽然基本上是复制但是有一定工作量的。但是另外通过手写IOC也可以实现(反射简单工厂配置文件)看不到IOC框架的优势所在。 IOC强大之处在于框架本身为我们封装好了很多便于开发的方法拿AutoFac来说吧能灵活的控制创建对象的每次请求都创建、单例、一个Http请求内单例 四. 实战测试 这里准备两个数据库分别是YpfFrame_DB 和 YpfFrameTest_DB ①YpfFrame_DB中用到了表T_SysUser 和 T_SysLoginLog表结构如下 ②. YpfFrameTest_DB 表中用到了T_SchoolInfor表结构如下 开始测试 1. 测试增删改查包括基本的事务一体。 在【Ypf.IService】层中新建ITestService接口在【Ypf.Service】层中新建TestService类实现ITestService接口 定义TestBasicCRUD方法进行测试代码如下。 1 /// summary2 /// 1.测试基本的增删改查,事务一体3 /// /summary4 /// returns/returns5 public int TestBasicCRUD()6 {7 using (DbContext db new MyDBContext1())8 {9 BaseServiceT_SysUser T_SysUserService new BaseServiceT_SysUser(db); 10 BaseServiceT_SysLoginLog T_SysLoginLogService new BaseServiceT_SysLoginLog(db); 11 //1.增加操作 12 T_SysUser t_SysUser new T_SysUser() 13 { 14 id Guid.NewGuid().ToString(N), 15 userAccount 123456, 16 userPwd XXX, 17 userRealName XXX, 18 appLoginNum 1, 19 addTime DateTime.Now 20 }; 21 T_SysUserService.AddNo(t_SysUser); 22 23 //2.修改操作 24 T_SysLoginLog t_SysLoginLog T_SysLoginLogService.Entities.Where(u u.id 1).FirstOrDefault(); 25 if (t_SysLoginLog ! null) 26 { 27 t_SysLoginLog.userId xxx; 28 t_SysLoginLog.userName xxx; 29 T_SysLoginLogService.ModifyNo(t_SysLoginLog); 30 } 31 //3.提交操作 32 return db.SaveChanges(); 33 } 34 } 2. 测试一个方法中查询多个数据库。 在ITestService接口中定义ConnectManyDB方法并在TestService中实现该方法代码如下 1 /// summary2 /// 2. 同时连接多个数据库进行3 /// /summary4 /// param nameuserList/param5 /// param nameschoolList/param6 public void ConnectManyDB(out ListT_SysUser userList, out ListT_SchoolInfor schoolList)7 {8 using (DbContext db new MyDBContext1())9 using (DbContext db2 new MyDBContext2()) 10 { 11 BaseServiceT_SysUser T_SysUserService new BaseServiceT_SysUser(db); 12 BaseServiceT_SchoolInfor T_SchoolInforService new BaseServiceT_SchoolInfor(db2); 13 14 //执行数据库查询操作 15 userList T_SysUserService.GetListBy(u true); 16 schoolList T_SchoolInforService.GetListBy(u true); 17 } 18 } 分析想连接几个数据库就需要先在【Ypf.Data】层中新建对应数据库的实体、实体配置文件、EF上下文然后在【Ypf.Service】层对应的方法中实例化对应的 EF上下文然后传入到BaseService类中即可。 3. 测试一个方法中事务一体处理多个数据库的crud操作。 在ITestService接口中定义ManyDBTransaction方法并在TestService中实现该方法代码如下 1 /// summary2 /// 3. 同时对多个数据库进行事务一体的CRUD操作3 /// 注需要手动开启msdtc服务(net start msdtc)4 /// /summary5 public void ManyDBTransaction()6 {7 using (TransactionScope trans new TransactionScope())8 {9 try 10 { 11 DbContext db new MyDBContext1(); 12 DbContext db2 new MyDBContext2(); 13 14 BaseServiceT_SysUser T_SysUserService new BaseServiceT_SysUser(db); 15 BaseServiceT_SchoolInfor T_SchoolInforService new BaseServiceT_SchoolInfor(db2); 16 17 //执行业务操作 18 T_SysUserService.DelBy(u u.id 1); 19 T_SchoolInforService.DelBy(u u.id 1); 20 21 //最终提交事务 22 trans.Complete(); 23 } 24 catch (Exception ex) 25 { 26 var msg ex.Message; 27 //事务回滚 28 Transaction.Current.Rollback(); 29 throw; 30 } 31 } 32 } 分析同时连接多个数据库并对多个数据库进行事务性的crud操作这个时候必须用 【TransactionScope事务】前提要手动 【net start msdtc 】开启对应服务这样整个事务通过“Complete”方法进行提交通过Transaction.Current.Rollback()方法进行事务回滚各自db的SaveChange不起作用但还是需要SaveChange的。 4. 测试xxxSevice子类中也可以通过AutoFac进行IxxxService的模式进行属性的注入。 在【Ypf.IService】层中新建ITestService2接口在【Ypf.Service】层中新建TestService2类实现ITestService接口 定义GetUserInfor方法进行测试代码如下。 View Code 在TestService中定义ITestService2属性如下 在TestService中定义如下方法内部用TestService2进行调用可以调用成功从而证明xxxSevice子类中也可以通过AutoFac进行IxxxService的模式进行属性的注入。 5. 测试Log4net的分文件夹和不分文件的使用。 先分享配置文件 View Code 分享对应的封装类 View Code 代码测试 ! 作       者 : Yaopengfei(姚鹏飞)博客地址 : http://www.cnblogs.com/yaopengfei/声     明1 : 本人才疏学浅用郭德纲的话说“我是一个小学生”如有错误欢迎讨论请勿谩骂^_^。声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址否则保留追究法律责任的权利。分类: 11-框架搭建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详细介绍:为何选择Spring框架学习设计模式与编码技巧?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年试验机厂家最新推荐榜单:专精特新企业深度解析,含疲劳 / 压力 / 液压万能等设备优质厂家水泥压力/压剪/锚链拉伸整形机/链条拉伸整形机厂家推荐

在工业制造向高质量转型的关键阶段,材料性能检测的准确性与效率直接决定产品竞争力,试验机作为核心检测工具,其品质与适配性成为企业关注焦点。当前市场上,试验机品牌数量繁杂,部分企业缺乏核心技术、品控体系不完…

最有性价比的网站建设哪个网站做高仿衣服

如何在不恢复出厂设置的情况下解锁 Android 手机密码? 当您忘记 Android 手机的密码时,可能会有压力,尤其是当您不想恢复出厂设置并删除所有数据时。但是,有一些方法可以在不诉诸如此激烈的步骤的情况下解锁手机。我们将在这篇文…

2025 年最新推荐西安路灯厂家排行榜:市政 / LED / 智慧 / 太阳能 / 农村路灯优质企业全景指南

当前智慧城市建设与文化照明需求持续升级,路灯行业却面临诸多选购难题。市场上产品同质化严重,部分厂家缺乏核心技术,节能性与智能化适配性不足,工程交付质量与后期维护服务参差不齐。不同场景如市政道路、景区、农…

2025 最新红绿灯厂家推荐排行榜:实力厂家技术与口碑深度解析,交通信号设备优选指南交通信号/路口红绿灯厂家推荐

在智慧城市建设与交通强国战略的双重驱动下,红绿灯已从基础信号设备升级为智能交通系统的核心节点,其技术先进性、场景适配性与服务可靠性直接决定道路通行效率与安全水平。当前市场呈现 “传统品牌深耕稳守、新兴品…

2025 土工材料厂家最新推荐榜:中铁合作厂商领衔,技术 / 案例双维度厂家深度甄选指南土工布/土工膜/土工格栅/复土工合膜厂家推荐

在 “十四五” 交通强国建设收官关键期,土工材料作为基建核心支撑材料,市场需求持续爆发,中国土工膜市场五年复合增长率已超 15%。但行业扩容背后,质量参差、技术断层、服务缺失等问题凸显:部分厂商资质不全难以对…

网站怎么做png阴影动漫网站设计论文

目录 ​💡基本思想 💡图文介绍 💡动图演示 💡过程解释 💡代码实现 💡递归实现 💡非递归实现 💡总结 💡基本思想 归并排序(MERGE-SORT)是…

2025 年帐篷源头厂家最新推荐排行榜:涵盖应急救灾 / 户外充气 / 露营充气 / 野营等品类,精选实力企业助采购

当前户外露营热潮持续升温,应急救援需求也不断增加,帐篷市场随之快速扩张,但市场乱象却愈发明显。许多小型厂商缺乏核心技术支撑,生产的帐篷存在防水性能差、搭建过程繁琐、耐用性不足等问题,更有甚者以次充好、虚…

响应式网站建设代理青岛 两学一做 网站

一、背景 linux 内核出现内存类问题时,我们常用的调试工具就是kasan,kasan有三种模式: 1. Generic KASAN (这个就是我们最常用的,1 debug byte indicate 8 bytes use state, 对标用户层 asan) 2. Softwa…

建设部安全员证书查询网站网站建设方案书要怎么样写

要查看云桌面请求 Linux 服务器的网络快慢,您可以使用一些网络诊断工具和命令来评估连接的性能。以下是一些方法: 使用 ping 命令: ping 命令可以测试与目标服务器之间的网络连接。在终端中运行以下命令以测试服务器的响应时间: p…

Claude Code完整安装部署指南:支持Windows/Linux/macOS三平台详细教程

📋 目录概述 系统要求 Windows平台安装 Linux平台安装 macOS平台安装 配置与认证 验证与测试 常见问题解决 最佳实践 总结概述 Claude Code是由Anthropic公司开发的革命性AI编程助手,它将强大的Claude AI能力集成到…

2025 杀虫公司最新推荐榜:权威筛选公司,靶向消杀与长效质保选购全指南

后疫情时代,有害生物防制(PCO)需求持续攀升,但市场服务质量参差不齐,让家庭与企业陷入选择困境。部分机构依赖通用方案盲目用药,导致蟑螂、老鼠等虫害反复滋生,既浪费成本又留下药剂残留隐患;餐饮、医疗等特殊…

2025 年电缆桥架生产厂家最新推荐榜单:聚焦北方 / 河北区域及多类型桥架,精选优质品牌深度解析瓦楞/防火/模压/镀锌桥架厂家推荐

在电力传输、建筑基建等关键领域,电缆桥架作为支撑线路的核心设备,其质量直接决定工程安全与运维稳定性。当前市场中,部分厂家存在工艺粗糙、防腐性能差、承重不达标等问题,导致桥架寿命缩短、线路故障频发,增加企…

rtthread学习笔记系列 -- 13 线程

@目录13 线程13.1 线程创建13.2 线程启动13.3 线程挂起13.4 线程延时13.5 线程超时13.6 线程退出 && 线程删除https://github.com/wdfk-prog/RT-Thread-Study13 线程 13.1 线程创建初始化上下文信息 将栈初始化…

2025 年淋膜机厂家最新推荐排行榜:覆盖纸张 / 无纺布 / 高速 / 全自动等多类型设备,精选优质企业助力精准选购

在印刷包装行业持续升级的背景下,淋膜机作为核心生产设备,其品质与性能直接关系到企业生产效率、产品竞争力及成本控制。当前市场上淋膜机品牌数量众多,产品质量差异显著,部分设备存在升温慢、自动化水平低、能耗高…

wordpress幻灯片教程seo评价网

文章目录 一、简介二、yum 更换源三、安装内核头文件 一、简介 CentOS 是一个开源项目,发布了两个不同的 Linux 发行版——CentOS Stream 和 CentOS Linux 。 CentOS Stream 是即将发布的红帽企业 Linux 产品的上游开发平台。 CentOS 项目将于 2024 年 6 月 30 日…

内网网站建设主流语言wordpress知更鸟企业主题

传输层协议—TCP协议 文章目录 传输层协议—TCP协议TCP协议段格式四位首部长度TCP协议如何根据目的端口号将数据传输给指定进程?32位序列号和32位确认序列号可靠性问题 TCP报头标志位16位紧急指针16位检验和确认应答机制超时重传机制再谈三次握手四次挥手 连接管理机…

2021年度十大前沿科技研究盘点

本文汇总了2021年度最具影响力的十大科技研究成果,涵盖量子计算、机器人系统、计算机视觉、机器学习等多个前沿领域,展示了人工智能在物流、医疗、零售等场景的创新应用。2021年度十大前沿科技研究盘点 量子计算科学…

吉林网站推广公司dedecms建手机网站流程

Node.js 概念 Node.js 是一个开源与跨平台的 JavaScript运行时环境 ,在浏览器外运行 V8 JavaScript 引擎(Google Chrome的内核),利用事件驱动、非阻塞和异步输入输出 等技术提高性能。 可以理解为 Node.js就是一个服务器端的、非阻塞式 l/O 的、事件驱…

2025 商事律师咨询最新推荐榜:权威甄选专业法律服务品牌武汉公司法商事/武汉股东纠纷股权/武汉商事争议解决/武汉公司法股权律师推荐

数字经济与资本市场的深度融合,使企业面临的商事法律需求日趋复杂,从传统股权纠纷、合同审查到新兴的数据合规、区块链争议等多元场景,对法律服务的专业性、时效性提出更高要求。然而行业内存在服务同质化、新锐机构…