关于我们
书单推荐
新书推荐
|
SOD框架“企业级”应用数据架构实战 全书主要从系统架构师的角度,讲述应用系统中所有有关数据问题的解决方案,这些方案小到一个具体的API使用,大到整个系统架构的设计,从解决方案的合理性、易用性和扩展性来逐步设计扩展,一步一步分析当前遇到的问题,给出这类问题的最佳实践的解决方案。通过对这个问题的分析解决过程,引导普通的开发人员摆脱烦琐的、枯燥无聊的数据增删改查工作,完成从菜鸟到专家的蜕变过程。 本书适合于有一定编程开发基础知识的程序员进一步学习掌握与数据应用相关的开发知识,更适合于有一定开发经验的程序员巩固提高数据开发方面的理论知识,也适合于打算进阶系统架构师的朋友学习设计和使用系统架构。 本书适合于有一定编程开发基础知识的程序员进一步学习掌握与数据应用相关的开发知识,更适合于有一定开发经验的程序员巩固提高数据开发方面的理论知识,也适合于打算进阶系统架构师的朋友学习设计和使用系统架构。 我曾经与朋友开玩笑说,写一部信息技术方面的著作并不会太难:会“翻墙”,会Google,能读懂MSDN,能读懂软件说明书,多逛逛技术网站就行,如果还能懂点儿英文,则会更好、更方便。 这玩笑开得有点大,因为符合这玩笑的“书”,除了外行人用来摆谱,大多数都被读者或读者请来的清洁工阿姨丢进了垃圾桶。 这玩笑开得有点大,但还不算太离谱:我已经很久没有再去逛书店,没有再读书了,因为,我真的买到过、读到过这样的书,有些受伤。 本书作者邓太华先生是我的朋友,网上认识的,许多年了,网名叫“深蓝医生”。 他给我的感觉是,为人诚实低调,思路开阔,技术上有很强的“实战”能力,值得学习,也值得深交。 但我从来没有想到他会著书立说。当我这种因受过“书伤”而不再喜欢读书的人得到这本《SOD框架“企业级”应用数据架构实战》初稿后,很是诧异,但作为朋友,我还得硬着头皮带着审视的目光去试读。 仅仅粗略地读了一遍,我的诧异开始变成惊异:这才是我希望读的书! 这时我才发现,“深蓝医生”,名不虚传:不但能“医”计算机,“医”网络,“医”程序,还能医治我这种越来越不愿意买书,越来越不喜欢读书的“读书渐冻症”! 因为,这本书,有技术的面子,原理的里子,哲理的神髓。 绝大多数程序员都会与数据操作打交道,特别是服务器端的开发者,增删改查(增加、删除、修改和查询的简写)更是家常便饭:要针对不同的需求进行不同的增删改查,针对不同的业务进行不同的增删改查,针对不同类型的数据库进行不同的增删改查。 天天写INSERT、DELETE、SELECT、UPDATE,烦不烦? 代码稍有差错,查非所问,烦不烦? 代码虽然写对了,但有细枝末节没有照顾到,性能狂降,烦不烦? 同一个操作,针对不同类型的数据库系统写了无数段大致相似但又略有不同的代码,烦不烦? 手工增删改查,SQL语句如春日里京城的柳絮,满天乱飞,真的好烦! 程序员绝不喜欢机械地重复做那些烦人的琐事,于是有人化繁为简,发明了“对象关系映射”:ORM。接着便有了Entity Framework、Dapper、CYQ.Data、Hibernate等很多很多的ORM框架,当然,还有邓先生的SOD框架。 ORM一出,程序员对数据库操作的烦恼立即消散了80%。 但您真的懂ORM吗?不懂或不太懂或懂而不精,那好,继续读下去。 本书从数到数据,从数据到数据库,从数据库到SQL增删改查,从SQL、数据对象到对象映射,有汉学有西学,由里到外,由浅入深,放开笔墨,全方位阐释了ORM的前世今身、ORM背后的核心理念与关键技术,提供了大量的原创代码与示例,最终给读者呈现出一个立体的、有血有肉但又透明无碍的整套ORM技术。 其实,这本书,我看重的不仅仅是ORM技术,因为细读下去,您会惊异地发现,它其实在向您表达编程对象与数据的关系,实体对象、业务对象、视图对象与数据交互的关系,企业级大型应用的数据架构与解决方案,这些已经远远超过了ORM的概念,深入到了数据的本质以及驾驭数据的实战能力。 序一 SOD框架“企业级”应用数据架构实战本书更令人敬佩的是,“技术、原理、哲理”三位一体,高度融合。看似一本技术教程,但它不是为技术而技术,而是在谈技术的同时,作者始终不离本质,努力给读者阐释技术背后的原理乃至“大道至简”等更深层次的编程哲理,读者能得到的,不仅仅是编程的技术,还有编程的智慧,这来自于作者对于“数理”的深刻洞察,来自于作者传统文化的底蕴。 有人说,读书能读出“味道”来。我认为,“读书有味”的前提是那本书的内容本身就要有“味”。 这本书,目前我仅粗读了一遍,已经尝到味了,很鲜。可以肯定,更多的读者不但能尝到这份美味,还会有更丰富更深层的受益。 微软最有价值专家刘冰(宇内流云)2020年元旦于成都 序三 “简单就是美。” “平凡即是伟大。” 上面两句话不知道是哪位名人说的,又或者是广大劳动人民总结的,反正我很小的时候就常常听到这两句话。这两句话也成了我的人生格言,而且事实上我也是一个生活过得比较简单的平凡人。当然,这不能说我跟“伟大”有什么关系,我觉得绝大部分人都是像我一样的平凡人,但正是这绝大多数的平凡人,创造了我们现在这个美好的世界,因此,说他们伟大一点也不过分。在我身边,有一群平凡的程序员,用他们日复一日,加班加点,简单而平凡的工作,编写了许多有价值的商业软件,付出了青春和汗水,但除了相应的薪水,他们还有什么更大的回报吗?不排除程序员中有一些出类拔萃的人,他们取得了工作上的成功,在能力上获得了很大的提高,当了公司高管又或者是自己创业,事业上取得了一定成就。但是,这样出类拔萃的程序员是很少的,在本书第1章中,我根据《2018年中国程序员生存现状报告》进行了分析,年薪超过30万元的程序员不超过10%,而年薪10万~15万元有5~10年工作经验的程序员占比最高。如果按照社会上普遍的以收入来衡量一个人是否成功,那么大部分程序员的职业人生都是不成功的,他们并没有随着工作年限的增长而获得相应的成长,这是一个无奈的现实。然而,换一个角度来看,大部分程序员虽然每天都做着简单而重复的增删改查(增加、删除、修改和查询的简写)工作,但他们用平凡的工作为自己服务的公司创造了利润,为社会创造了价值,这也算是一种成功吧! 身处平凡阶层的每一个人都有一个想成功、想成长、想取得成就的美好愿望。 然而,您可能没有名校背景,没有大厂(比如BAT系的公司)履历,没有做过像样儿的大项目,没有拿得出手的成果,像现在流行的大数据、人工智能、机器学习、区块链这些炙手可热的新技术更是不懂,在这种诸多不利的情况下,如果自己再不想办法改变,又怎么能轻易地实现上面那个愿望呢?这应该是大部分的普通程序员所面临的现实问题。我,也曾经是这其中的一员,但这不妨碍我自己实现上面那个愿望。回顾自己做程序员的时光,我觉得自己没有虚度光阴,在某一方面我有能拿得出手的东西,并获得了一定的成功和成就,得到了显著的成长。我的“秘籍”就是,如果你觉得一个东西有点复杂,你就先用简单的方式把它做好,做深入,慢慢地你就会发现,原来用简单的方式也可以构建一个复杂的系统,等你回过头来再去看之前你觉得复杂的东西,你就会惊奇地发现:原来这样做跟我的设想一样啊!(PS:其实这并不是什么“秘籍”,这正是LISP黑客所擅长的工作方式,即先从最小的地方用最简单的方式将它运行起来,采用自底向上的方式一步一步地构建自己的语言,这种定制的语言抽象程度越高就越接近问题的本质,从而最终构建出一个复杂的系统。我对LISP这种工作方式很推崇,我的SOD框架中的OQL语言的设计就深受这种思想的启发。) 其实,只有经过长期而不断的努力,才能突然领悟到别人设计的精妙,思想的深邃,才会发现这些设计思想都是自然而然的,一气呵成的,有时甚至会恍然大悟:原来是这样啊,为啥我之前没有想到呢? 前言 SOD框架“企业级”应用数据架构实战对于别人看一眼就能懂的问题,我总是要从简单的东西开始慢慢来领悟,直到某一天才豁然开朗。这期间我走了不少弯路,付出了比别人更多的努力,我常常自嘲自己是“笨鸟先飞”。我想“笨鸟”应该像“聪明”的鸟儿一样总是少数,那么身处绝大多数普通“鸟儿”中的“您”,一定能够很快看懂我这本书所提供的这些简单的方案,把自己每天做的增删改查工作,做得更好更深入,然后去构建自己强大的复杂的应用,“飞”得比我更高、更远。我说的这个方案便是本书要介绍的数据开发框架——SOD框架,它追求的目标是简单与效率的平衡,体现在代码的精简,开发、维护的简单与追求极致的运行效率。SOD框架是我十几年开发经验的总结,我想我应该将这些经验分享给大家,这便是我决定写这本书的理由。 ◆ 这不是一本编程入门的书籍 编程入门的书籍汗牛充栋,它们大多都围绕着如何使用某一个具体的编程语言的功能来介绍的,是面面俱到、保姆式的教学过程。显然,本书不是这样,它紧紧围绕编程最常见的“数据”问题,由浅入深地从介绍数据的概念开始,到数据的组织、存取和应用,再深入到数据的架构问题,并给出了丰富的数据开发的综合解决方案示例。所以,需要先对编程有一定的基础之后才能应用本书介绍的知识来编程,在有一定的开发经验之后,再来阅读本书才能发现数据与编程的关系,才能更加深刻地认识编程的本质,正所谓“温故而知新”。因此,本书不是一本编程入门的书籍,但可以作为一本没有任何数据开发经验的“新手”学习数据开发的入门书籍,当然也适合有一定开发经验的程序员为进一步提高数据开发与架构能力来阅读。 ◆ 这是一本浅析数据本质的书 当你有比较丰富的开发经验之后,想进一步提高开发能力,朝着资深开发工程师或者架构师方向发展的时候,需要对数据有比较深刻的认识,本书尝试以抽象的方法来认识数的概念,漫话数的起源,探讨数的表示与存储、数据与消息、数据与数据库、数据与编程等的关系,尝试从多个角度来认识数据和它背后的逻辑,以期接近数据的本质。 ◆ 这是一本数据开发实用的编程书 开发一个存取数据的应用程序,除了熟练使用SQL,还需要了解数据库和数据驱动程序,需要掌握数据访问组件,需要熟悉数据访问模式、框架和工具,比如熟练设计和使用一个ORM框架,另外还需要掌握数据与窗体控件的开发,甚至熟悉数据绑定技术,使用MVVM框架。总之,本书介绍了与数据开发相关的主要知识和开发经验,能够让你在数据开发方面提高效率,少走弯路,得心应手。 ◆ 可以将本书视为一本学习应用“数据架构”的书 当设计一个软件的系统架构时,会包含业务架构、应用架构、数据架构和技术架构等方面,其中数据架构是系统架构的重要组成部分,数据架构不是数据结构,它不单是研究数据库的设计问题,在现在多层软件架构和分布式架构中,数据架构更需要关注数据的处理问题,也就是不同结构的数据如何表示、如何分布、如何存储、如何传输转换等方面的问题,这样数据架构就与三层和多层架构、DDD/DCI架构、分布式架构、微服务架构等问题密切相关了。本书尝试从数据在各种架构中的应用来向读者介绍如何设计和使用一个架构,并给出实际的案例来说明。因此,本书可以作为您进阶系统架构师的一本很好的实战指导书。 ◆ 本书的写作特点 本书是一本既不只讲理论,也不只讲实战的书,我觉得“理论指导实践,实践检验理论”是学习的好方法,在用中学,在学中用,有的放矢,目标明确,理论和实践相互促进,这样就能更好地学习。所以,笔者花费了一点笔墨来介绍数据相关的理论,然后通过一个具体的数据框架(SOD框架)来介绍数据的开发和应用,将框架的设计原理与具体的实例代码相结合,这样理论与实践相结合,使读者更容易学习和掌握数据开发的知识和技巧,并在自己实际的开发中游刃有余。 ◆ 本书的读者对象 本书适合于有一定编程开发基础知识的程序员进一步学习和掌握与数据应用相关的开发知识,更适合于有一定开发经验的程序员巩固提高数据开发方面的理论知识,也适合于打算进阶系统架构师的朋友学习设计和使用系统架构。虽然本书使用SOD框架做例子,但它和书中的示例大多是使用 .Net平台语言来写的,并且它的应用和设计思想也适合JAVA、C++等非 .Net语言平台的程序员朋友参考使用。 另外,我在本书中花费了一点笔墨来介绍数和数据的本质、数据的应用发展历史等内容,用轻松而又富有想象的文字趣味性地介绍数据的概念和应用,比如尝试从中国传统文化中的河图、洛书、易经八卦来漫话数字背后的理论架构。所以,这部分内容也可以作为介绍数字文化和数据应用的科普内容,供非计算机行业的人士阅读。比如我将这部分内容整理并做成了用于介绍少儿编程思想的幻灯片,在北京市朝阳区某小学讲授此幻灯片,看似高深的理论,通过这种趣味性的教学方式使这些内容连小学生都很容易理解了。 ◆ 本书的结构 第1章软件开发中的“二·八定律” 通过对程序员行业调查报告进行的分析,大多数程序员并没有随着工作年限的增长而成长,5年工作年限后能力不再明显增长,30万元年薪也成了一道坎。造成这种现象的原因就是大部分项目是没有多少技术含量的,大部分时间是在做重复的增删改查工作,并且这样的项目还有不少是996的,使程序员透支了青春和健康。 第2章数据的基础概念和应用 通过对河图、洛书的研究,抽象数的概念,漫话数的起源,探讨数的表示与存储、数据与消息、数据与数据库、数据与编程等的关系,尝试从多个角度来认识数据和它背后的逻辑,以期接近数据的本质,这样对数据开发、数据架构就能有更深刻的理解。 第3章数据库应用开发 首先对数据库类型做一个简要分类;然后对比介绍访问不同数据库的各种驱动程序,介绍使用数据访问组件的最佳实践;接着简单回顾数据库应用开发的基础知识;最后介绍数据查询与映射的技术(SQLMAP),解决一般项目开发中SQL满天飞、查询复杂难以维护、项目软件无法轻松支持多种数据库等问题。 第4章对象关系映射 首先从对象与关系的阻抗问题开始介绍ORM应用中的难题;然后以SOD框架为例,介绍ORM中实体类的设计,怎样跟踪实体对象的修改状态,以及一般ORM查询的方式;最后介绍框架中的ORM查询语言(OQL)的设计和使用。 第5章数据窗体开发 在企业应用开发中,处理各种表单数据的数据窗体开发需求很常见。SOD框架利用.NET原生控件内置的数据绑定技术,将常见的表单处理过程封装成一套智能表单,自动完成表单数据的读取和保存,使得开发ASP.NET Web Form/WinForms上的数据窗体有完全一致的开发使用体验。借鉴MVVM原理,SOD的WinForms数据表单也实现了与WPF MVVM框架同样的功能,本章介绍这个技术实现的原理和应用示例。 第6章分布式系统架构与数据开发 分布式系统相对于单机系统,能够提供更大的、可伸缩服务的能力。在分布式系统架构中,不论是传统的三层和多层应用架构,还是DDD/DCI架构或者洋葱架构,数据的存储和访问都发生了很大的变化。本章以这些常见的架构为例,介绍在分布式系统环境下,如何处理并发更新、读写分离、分库分表、分布式事务等数据开发和架构设计等问题,并且通过一个实例来讲解将多种架构结合在一起的分布式混合架构方案。 第7章企业级解决方案应用示例 企业开发的关键特征是企业项目通常持续较长时间,项目以业务为中心而不是以技术为中心,所以企业级开发要求使用的技术相对灵活,便于维护。对于企业项目开发中的数据开发而言,大部分项目数据量虽然没有大型互联网项目的数据量那么大,但是数据结构和数据关系复杂,数据的事务一致性要求高,不同数据库平台之间的数据同步和复制功能也很常见,并且对联机事务处理的性能要求越来越高。本章通过介绍内存数据库、异构数据库同步和应用层事务数据复制的内容,让读者了解SOD框架对于企业级项目解决方案简单而又灵活的支持能力。 附录ASOD框架和开源社区 简要介绍SOD框架的发展历史,对跨平台和.NET Core的支持,以及探讨向其他语言平台移植的可能性。最后介绍了SOD框架的开源社区情况,使读者了解本书的程序示例和源码的出处,使他们可以加入框架的开源项目。 ◆ 关于作者 邓太华,曾经使用笔名“深蓝医生”在CSDN和博客园写了很多博客文章,现为某电商项目创业公司创始人。非计算机专业,2002年误打误撞进入IT领域,先是做计算机硬件和网络维护,后成为专职程序员。2004年到北京发展,2008年开始担任软件架构师,因此在系统架构方面有超过10年的工作经验。 在做技术的过程中遇到了各种“坑”,将解决这些“坑”的经验汇集起来便有了PDF.NET框架:一个专注于数据开发的框架。2010年将PDF.NET开源,2014年更名为SOD框架。此外,还推出了一个基于WCF的消息服务框架——iMSF,是基于长连接TCP双工通信的支持消息推送和Actor模型的消息服务框架(此框架在2015年开源)。除了研究技术问题,对管理和业务问题也比较感兴趣,2013年提出了“三维度(场景+角色+时间)”理论,是一种符合国人思维方式的业务分析方法论。 ◆ 致谢 首先要感谢前腾讯 .NET技术专家、连续15年微软MVP、腾讯云TVP、华为云MVP,现深圳市友浩达科技CEO 张善友先生, .NET跨平台应用领域专家、微软MVP、知名Linux Web服务器软件Jexus作者刘冰(宇内流云)先生,资深JAVA开发专家申毅先生对本书的赞誉,感谢他们在百忙之中为本书作序,他们的见解对软件开发有深刻的洞察力和预见性,这是他们成功的特质。其中,要特别感谢刘冰先生给予本书的极高赞誉,他写序三易其稿,这种严肃认真的态度让我深受感动,这可能就是他的作品功能强大、稳定可靠且深受欢迎的原因吧。 本书得以出版,需要感谢北京航空航天大学出版社的编辑,他们让一个从未想过要写书的普通程序员决定写一本书来系统总结以往只是写在博客中的技术经验,将它分享给更多的读者。另外,需要感谢所有支持SOD框架的用户朋友,写这本书算是对你们以往支持我做好这个开源框架的一种回馈。此外,最需要感谢的是我的家人,支持和鼓励我在艰难的创业过程中写完这本书,家人的理解和关爱太重要了,没有你们就没有我人生中的这第一本书。 当然,这段简短的致谢完全不足以感谢所有对我写这本书有帮助的人,在本书的附录中我将详细列举他们曾经帮助过我的事情,对他们的支持再次感谢。 ◆ 如何使用本书 正如本书的书名一样,这是一本实战类型的书,尽管其中有一半多的文字都在讲述数据开发相关的理论知识,但最终的目的还是让理论更好地指导实践,所以强烈建议在阅读本书之前先看附录A.4节SOD框架开源社区的内容,从SOD框架的源代码仓库克隆一份源码来编译运行,在源码中基本都能找到本书中出现的代码示例,实际运行这些代码能够让你对本书的内容有更直观的印象。虽然书中的内容至少有一半来自我的博客文章,但写书时不能把原文中大段的代码直接粘贴过来占据过大的篇幅,所以建议您结合我的博客文章一起来阅读本书会收到更好的效果。 尽管本书中给出的示例代码基本上都在源码中运行或者测试通过,但限于我写作的水平或者源码已经修改或更新,书中的这些示例代码可能与您实际运行的代码有所差异,那么以框架最新的源码为准。另外,由于我本人的能力限制,在介绍相关理论知识时可能存在一些错误或者偏差,如果您在阅读本书的过程中有任何问题,希望能反馈给我,联系方式在本书附录A.4中。 深蓝医生2020年1月 邓太华,曾经使用笔名“深蓝医生”在CSDN等博客网站上写了很多博客文章,现为某电商项目创业公司创始人。非计算机专业,2002年误打误撞进入IT领域,先是做计算机硬件和网络维护,后成为专职程序员。2004年到北京发展,2008年开始担任软件架构师,因此在系统架构方面有超过10年的工作经验。 在做技术的过程中遇到了各种“坑”,将解决这些“坑”的经验汇集起来便有了PDF.NET框架:一个专注于数据开发的框架。2010年将PDF.NET开源,2014年更名为SOD框架。此外,还推出了一个基于WCF的消息服务框架——iMSF,是基于长连接TCP双工通信的支持消息推送和Actor模型的消息服务框架(此框架在2015年开源)。除了研究技术问题,对管理和业务问题也比较感兴趣,2013年提出了“三维度(场景+角色+时间)”理论,是一种符合国人思维方式的业务分析方法论。 第1章软件开发中的“二·八定律”1 1.1大部分项目是没有技术含量的1 1.2大部分时间是在做重复的增删改查工作4 1.3工作996,生病ICU5 1.4迷茫的开发人员9 第2章数据的基础概念和应用10 2.1数据漫话史——抽象、表示与存储10 2.1.1“数”的起源10 2.1.2原始的数字15 2.1.3河图与十进制16 2.1.4八卦与二进制19 2.1.5易经与量子理论31 2.1.6数据、信息和知识36 2.1.7数据的载体——存储介质44 2.2算法+数据结构=程序52 2.3数据与面向对象编程55 2.4数据与函数式编程56 2.5数据的成本58 2.5.1CPU寄存器和内存数据58 2.5.2进程内缓存和分布式缓存59 2.5.3持久化数据源62 2.6数据与消息62 2.6.1命令、事件与消息62 2.6.2实时消息与消息队列64 2.7XML与数据文件66 2.8关系数据库与NoSQL70 2.9大数据71 第3章数据库应用开发73 3.1数据库分类73 3.1.1嵌入式数据库73 3.1.2服务器数据库75 3.2数据库驱动程序76 3.2.1ODBC76 3.2.2OLEDB78 3.2.3ADO.NET79 3.2.4SOD84 3.3数据访问组件的最佳实践89 3.3.1数据访问模式89 3.3.2配置数据连接93 3.3.3管理数据连接对象96 3.3.4优化数据命令对象100 3.3.5查询中使用长连接104 3.3.6使用跨组件的事务107 3.3.7跟踪SQL执行情况114 3.4数据库应用开发基础123 3.4.1常见的SQL工具123 3.4.2SQL标准126 3.4.3SQL方言128 3.4.4存储过程129 3.4.5参数化查询130 3.5数据查询与映射136 3.5.1SQL满天飞的窘境136 3.5.2SQLMAP的架构规范137 3.5.3集中管理SQL查询141 3.5.4定义SQL与程序的映射144 3.5.5处理复杂查询152 3.5.6自动生成代码155 SOD框架“企业级”应用数据架构实战第4章对象关系映射160 4.1对象与关系的阻抗160 4.1.1话语环境的思想冲突160 4.1.2结构的不匹配163 4.1.3继承关系的难题164 4.1.4复杂的类关系167 4.1.5正视“阻抗误配”168 4.2数据的容器——实体类170 4.2.1实体类的元数据映射170 4.2.2数据类型的映射173 4.2.3DBNull与null175 4.2.4强类型映射与弱类型映射176 4.2.5日期类型的处理177 4.2.6枚举类型的属性179 4.2.7实体类与DTO的映射181 4.3实体类的创建184 4.3.1默认方式创建184 4.3.2动态创建实体类185 4.3.3映射任意查询结果186 4.3.4映射存储过程190 4.3.5实体类生成工具193 4.3.6Code First197 4.4数据的更改状态199 4.4.1更改通知接口199 4.4.2查询更改状态201 4.4.3重置更改状态202 4.5实体类属性的访问203 4.5.1设置数据203 4.5.2获取数据205 4.5.3数据访问事件208 4.5.4索引器210 4.6实体对象查询212 4.6.1实体对象查询与数据访问组件212 4.6.2查询单个实体对象214 4.6.3查询实体对象列表(List)216 4.6.4查询父子实体219 4.6.5更新和删除实体对象223 4.6.6高效插入实体对象列表的最佳实践224 4.6.7微型ORM228 4.7ORM查询语言——OQL231 4.7.1实体对象查询的缺陷231 4.7.2JAVA框架中的ORM查询语言233 4.7.3LINQ——EF框架的ORM查询语言233 4.7.4OQL——SOD框架的ORM查询语言236 4.7.5简单查询入门237 4.7.6链式表达式与多级表达式245 4.7.7操作符重载249 4.7.8指定查询的实体类属性253 4.7.9查询条件表达式255 4.7.10构建复杂的查询条件261 4.7.11灵活的排序方式266 4.7.12简单的分页方法269 4.7.13聚合运算277 4.7.14多实体类联合查询279 4.7.15高级子查询287 4.7.16分组过滤289 4.7.17使用数据库函数292 4.7.18使用数据库锁295 4.7.19批量更新和插入299 4.7.20动态条件查询303 4.7.21使用接口查询306 4.8大数据量查询309 4.9实体类的序列化311 4.9.1应用场景建议311 4.9.2XML序列化313 4.9.3JSON序列化316 4.9.4二进制序列化318 第5章数据窗体开发321 5.1智能表单321 5.1.1数据控件322 5.1.2查询控件324 5.1.3验证控件327 5.1.4命令控件329 5.1.5数据绑定331 5.1.6表单数据填充331 5.1.7表单数据收集333 5.1.8表单数据保存334 5.2Web Form数据窗体开发335 5.2.1Web数据控件336 5.2.2Web窗体数据绑定342 5.2.3Web窗体表单处理346 5.2.4Web窗体列表和分页控件355 5.3WinForms数据窗体开发356 5.3.1WinForms数据控件356 5.3.2WinForms窗体数据绑定359 5.3.3WinForms窗体表单处理361 5.4WinForms/WPF MVVM框架367 5.4.1MVVM原理简介367 5.4.2MVVM窗体接口373 5.4.3MVVM命令处理接口375 5.4.4MVVM窗体示例382 第6章分布式系统架构与数据开发398 6.1三层和多层应用架构398 6.1.1分层的网络架构398 6.1.2软件三层架构399 6.1.3SOD分层解决方案401 6.1.4多层应用架构403 6.2DDD架构403 6.2.1软件复杂多变的难题403 6.2.2领域模型设计406 6.2.3领域驱动架构407 6.3DCI架构409 6.3.1DCI架构的本质410 6.3.2DCI架构的实现411 6.3.3业务分析三维度理论412 6.4洋葱架构416 6.5分布式混合架构实战418 6.5.1系统分层模型419 6.5.2应用软件架构422 6.5.3模块式架构426 6.5.4混合式三层架构436 6.5.5消息服务框架437 6.6并发更新442 6.6.1电商平台的“减库存”难题443 6.6.2Entity Framework的乐观并发447 6.6.3并发更新小结449 6.7多数据源查询449 6.7.1分布式环境中的多数据源449 6.7.2集成开发工具的多数据源查询451 6.8读写分离457 6.8.1应用场景457 6.8.2快照复制458 6.8.3事务复制460 6.8.4读写分离应用架构461 6.9分库和分表464 6.9.1垂直(纵向)切分464 6.9.2水平(横向)切分466 6.9.3分库分表衍生的问题468 6.9.4使用分区表473 6.9.5使用链接服务器477 6.9.6SOD框架分库分表480 6.10分布式事务493 6.10.1分布式事务简介493 6.10.2分布式事务实现层面493 6.10.3二阶段提交协议(2PC)496 6.10.4三阶段提交协议(3PC)498 6.10.5基于微服务的3PC分布式事务500 6.10.6实例——电商下单的分布式事务514 第7章企业级解决方案应用示例535 7.1内存数据库535 7.1.1架构设计536 7.1.2数据的持久化538 7.1.3构造“数据仓库”539 7.1.4移花接木540 7.1.5打造“数据集市”542 7.1.6使用“内存数据库”实例544 7.2异构数据库同步546 7.2.1异构数据库平台546 7.2.2数据同步流程和方案547 7.2.3SOD框架数据同步方案550 7.2.4实例介绍——数据导出554 7.2.5实例介绍——数据导入561 7.2.6实例介绍——演示程序568 7.3应用层事务数据复制579 7.3.1数据复制简介579 7.3.2应用层事务日志581 7.3.3应用层数据复制591 7.3.4实现方案设计593 附录ASOD框架和开源社区613 A.1SOD框架发展历史613 A.2.NET Core跨平台支持615 A.3向其他平台移植的可能性619 A.4SOD框架开源社区621 A.4.1GitHub和码云621 A.4.2Nuget程序包622 A.4.3社区资源625 A.4.4社区反馈627 后记628
你还可能感兴趣
我要评论
|