Microsoft.NET企业级应用架构设计(第2版)

Microsoft.NET企业级应用架构设计(第2版) PDF 超清版

  • 大小:67.1 MB
  • 类型:架构设计
  • 格式:PDF
  • 出版:人民邮电出版社
  • 作者:Dino、Esposito
  • 更新:2020-08-23 08:30:58
vip 立即下载( 67.1 MB )
关注公众号免费下载
版权投诉 / 资源反馈(本资源由用户 蓟天元 投稿)

给大家整理了架构设计相关的资料,由人民邮电出版社出版,作者是Dino、Esposito,介绍了关于Microsoft.NET、企业级应用、架构设计方面,格式为PDF,资源大小67.1 MB,目前在架构设计类资源综合评分为:9.5分。

书籍介绍

软件架构是一系列相关的抽象模式,用于指导大 型软件系统各个方面的设计。埃斯波西托、索尔塔雷 罗编*的《Microsoft.NET企业级应用架构设计(第2 版)》就是一个关于软件架构的坚实、可重用且易于 访问的知识库。

本书分4个部分来介绍软件架构相关的内容。其 中,基础知识部分为软件架构打下基础;设计架构部 分关注表现层和业务层;支撑架构部分涵盖3个可用 于构建各种子领域的支撑架构;基础设计部分介绍了 多样化持久化、NoSQL数据存储、SQL、Entity Framework和关系型数据库等内容。

本书着重介绍软件架构相关的内容,非常适合软 件架构师和想成为软件架构师的人阅读,而且首席开 发者和各种.NET应用程序的开发者也能从本书获益 。

目录

  • 第1部分 基础
  • 第1章 今天的架构师和架构
  • 第2章 为成功而设计
  • 第3章 软件设计的原则
  • 第4章 编写优质软件
  • 第2部分 设计架构
  • 第5章 发现领域架构
  • 第6章 表现层
  • 第7章 神秘的业务层
  • 第3部分 支撑架构
  • 第8章 领域模型导论
  • 第9章 实现领域模型
  • 第10章 CQRS导论
  • 第11章 实现CQRS
  • 第12章 事件溯源导论
  • 第13章 实现事件溯源
  • 4部分 基础设施
  • 第14章 持久层

以上就是本次关于书籍资源的介绍和部分内容,我们还整理了以往更新的其它相关电子书资源内容,可以在下方直接下载,关于相关的资源我们在下方做了关联展示,需要的朋友们也可以参考下。

精选笔记:谈一谈jQuery核心架构设计

23小时28分钟前回答

jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javascript中的高级特性来构建如此伟大的javascript库。

1 初识jQuery

从核心功能来看,jQuery仅仅做了一件简单而又平凡的事:查询。它的语法如此简洁明了,以致于很多人在不知道javascript是什么的时候就已经会用jQuery了,用一个词形容就是:大道至简。 从设计层面来看,我们可以将jQuery提供方法分为两大类:静态方法和实例方法。静态方法就是直接通过$访问的方法,这些方法一般不对dom元素操作,而是提供了一些常用的工具,比如ajax请求、以及对字符串的一些常用操作,除此之外,jQuery还提供了对自身的扩展机制,你可以通过extend方法来编写你需要的组件。而实例方法和静态方法不一样,它是用来对jQuery查询的DOM元素进行操作,jQuery执行$()会构建一个jQuery对象,这个对象以数组的方法存储查询出的所有DOM元素,然后在这个对象的原型链上实现了对这些DOM操作的方法,比如each()方法就是用来遍历每一个DOM元素的。你可能会注意到,我刚说这个对象“以数组的方式”存储,那就是说,jQuery构建的这个对象不是数组,那这个对象到底是什么? 其实这个对象就是jQuery的核心,也被称作“jQuery对象”。因此,本文的重点就是对jQuery对象进行分析和讨论。

2 jQuery对象

一般情况下,我们会这样使用jQuery:

$('div').each(function(index){
  //this ...
});

$('div')执行完后回返回一个jQuery对象,each()方法是对这个对象中的DOM元素进行遍历,我们先看看$('div')的执行过程(本文源码摘自jQuery 3.0):

jQuery = function( selector, context ) {
 
 return new jQuery.fn.init( selector, context );

}

这个方法就是$('div')的入口方法,$是jQuery的简写,就相当于jQuery('div') ,可以看出,这个方法只做了一件事,那就是返回jQuery.fn.init()函数的实例对象,那jQuery.fn.init 又是什么呢,我们再看下面的代码:

init = jQuery.fn.init = function( selector, context, root ) {
 //... 
 return this;
}
init.prototype = jQuery.fn;

jQuery.fn.init和init引用了同一个方法,这个方法根据selector查询出符合条件的DOM元素,并返回,可你会发现,返回的是this,这个this是什么呢?我们待会分析,先看下面的这句话:

init.prototype = jQuery.fn;
这句话是什么意思呢,这句话是让init方法的prototype对象指向了jQuery.fn对象,那jQuery.fn又是什么鬼? 我们继续看代码:

jQuery.fn = jQuery.prototype = {

 // The current version of jQuery being used
 jquery: version,

 constructor: jQuery,

 // The default length of a jQuery object is 0
 length: 0,

 // Execute a callback for every element in the matched set.
 each: function( callback ) {
  return jQuery.each( this, callback );
 },
  
 splice: arr.splice
};

为了节省篇幅,我省略了其中一些代码,从这里可以看出,jQuery.fn 其实就是jQuery的原型对象,这个原型对象中定义了一些对this对象进行操作的方法。到这里,你是不是感觉到有点绕,不要着急,我们来梳理一下思路:jQuery首先定义了一个init方法,然后在init的原型对象prototype上定义了一系列操作方法。最后将init方法的实例对象返回。所以上面的过程可以简化如下(伪代码表示):

var init = function(selector,context,root){
 //...
 return this;
}

init.prototype = {
 length:0,
 each:function(callback){
  //...
 },
 splice:[].splice
}

jQuery = function(selector,context,root){

 return new init(selector,context,root);
}

那么问题来了,jQuery.fn中的方法为什么不直接定义在init的prototype上,而要定义在jQuery的原型对象上?

其实,这样做的目的是为了提高jQuery的查询效率,如果直接定义在init的prototype对象上,那么每执行一次查询,就会在内存中创建这样一个庞大的prototype对象,而如果把这个对象定义在jQuery的prototype上,在jQuery加载时,这个对象就会被初始化并一直存在于内存中,以后每次执行$()时,只需要将init中的prototype指向这个对象就可以了,而不用每次都去创建一遍相同的对象。

我们再来看看 init 函数中返回的 this 到底是什么,我在之前的博客中讲过,函数中的this总是指向运行期的调用者,那init的调用者是谁呢?在上面代码中似乎找不到调用者,这时我们就需要深入的理解new运算符的运行机制了,借用我之前在博客中对new运算符的描述,我们对new init()的执行过程进行如下分解:

new init(selector,context,root) = {

 var obj = {};

 obj.__proto__ = init.prototype;

 init.call(obj,selector,context,root);

 return typeof result === 'obj'? result : obj;

}

如果对new的运行机制不理解的请参考博文: javascript new 的运行机制

从上述分解过程可以看出,javascript在通过 new 来创建一个实例对象的时候,会先创建了一个普通对象obj,然后将obj的内部属性__proto__指向了init的原型对象,因此obj的原型链将被改变,而第3步使用call方法调用init(),所以init中的this指的就是这里的obj对象。

init()执行以后,会将匹配到的所有DOM对象以数组的方式存储到this对象中并返回,也就是返回了obj对象,而new运算符最终也会将这个 obj 对象返回以作为新的实例对象。所以new运算符返回的这个实例对象具备两个特点:一是包含了DOM查询结果集,二是其原型链继承了init的prototype,而 init 的 prototype 又指向了jQuery.fn对象,因此实例对象也具备了这些操作方法。

jQuery每执行一次查询就会创建一个jQuery对象,而在同一个应用程序中,所有jQuery对象都会共享同一个jQuery原型对象。因此,jQuery对象不仅包含了DOM查询结果集,还继承了jQuery原型对象上的操作方法。这样,你就可以在查询后直接调用方法来操作这些DOM元素了。这就是jQuery的核心架构设计,简单、方便、实用!

如果你还不理解上面的讲解,不要着急,我按照jQuery的设计思路写了一个完整的小项目jDate,你可以对比着理解!jDate项目已上传至GitHub,你可以点击这里查看完整代码:jDate ,如有不同见解,欢迎讨论!

3 jQuery 的缺陷

通过对jQuery的核心架构分析,我们会发现,每执行一次查询,jQuery就要在内存中构建一个复杂的jQuery对象,虽然说每个jQuery对象都共享同一个jQuery原型,但jQuery的查询过程远比你想象的要复杂,它既要考虑各种不同的匹配标识,同时又要考虑不同浏览器的兼容性。因此,如果你只是对DOM做一些简单的操作,建议使用原生方法 querySelector 替代 jQuery,不过在使用原生方法时,对于不同的应用场景你可能要做一些兼容性的工作,你要学会取舍,不要过度依赖jQuery!

以上就是本文的全部内容,希望对大家学习jquery有所启发。

架构设计相关资源

  • 《电气控制与PLC》教案,习题答案

    《电气控制与PLC》教案,习题答案

    编辑推荐 《电气与PLC》遵循以能力培养为核心,以技能训练为主线,以理论知识为支撑的编写思想,以管用、适用、够用为原则,按照基于工作过程的教学模式编写而成,充分体现了教材的科学性、先进性、实用性和可劋作性。《电气与PLC》是一本理论与实训一体化的教材,集理论知识、技术应用、工程设计和创新思维于一体,以35个实训贯穿始终,内容涵盖了PLC的组成、工作原理、编程工具、指令系统、特殊功能模块、变频器及其综合应用。《电气与

    大小:19.54 MBPLC配套资源

  • 计算机操作系统教程(第4版)

    计算机操作系统教程(第4版) 课后答案

    操作系统是现代计算机系统中必不可少的基本系统软件,也是计算机专业的必修课程和从事计算机应用人员必不可少的知识。 本书是编著者在清华大学计算机系多年教学和科研的基础上对第3版改编而成的,全书共12章,主要内容包括操作系统用户界面、进程与线程管理、处理机管理、内存管理、文件系统与设备管理等基本原理及Linux和Windows两个主流操作系统的内核介绍。 与第3版相比,本书进一步深入浅出地对操作系统的基本原理进行了描述,而且,本

    大小:4.3 MB操作系统课后答案

  • Visual C++ 实用教程(第3版)

    Visual C++ 实用教程(第3版) 课后答案

    本教程包含实用教程、上机操作指导、模拟测试题和附录等部分。本教程内容主要包括AutoCAD 2007(中文版)操作环境、绘图流程、基本绘图命令、基本编辑命令、图案填充、文字、块及外部参照、尺寸和公差、显示控制、设计中心查询及其他辅助功能、输出、三维建模等。实用教程一般包括(菜单、按钮和命令)操作方法和操作实例,每一章后的习题主要是为了搞清基本概念和方法;上机操作指导通过综合实例先引导操作,然后提出问题思考,给出练习

    大小:437 MBC++教程课后答案

  • 编译原理(第二版)

    编译原理(第二版) 课后答案

    《编译原理和技术》介绍了编译器构造的一般原理和基本实现方法,反映了直至90年代的一些重要成果,其内容包括词法分析、语法分析、中间代码生成、代码优化和目标代码生成等。除了介绍传统程序设计语言的编译技术外,《编译原理和技术》还介绍了面向对象语言和函数式程序设计语言的实现技术。作为原理性的教材,《编译原理和技术》旨在介绍基本的理论和方法,而不偏各于某种源语言或目标机器。全书内容充实,图文并茂,各章节之间循序

    大小:9.59 MB编译原理课后答案

  • 《嵌入式系统软硬件协同设计实战指南:基于Xilinx ZYNQ(第2版)》工程文件

    《嵌入式系统软硬件协同设计实战指南:基于Xilinx ZYNQ(第2版)》工程文件

    本书分为基础篇和进阶篇两大部分,基础篇主要介绍Zynq SOC架构,ARM Cortex-A9 处理器, 开发工具链等,器件Boot过程,并配备了大量基础实验,包括板卡的启动,编译嵌入式Linux系统,完成ARM和FPGA的简单片内通讯等;在进阶篇中详解了处理器和FPGA间接口种类和工作方式,分析了如何完成两者间高速的数据交互,通过实例介绍了如何在FPGA中定义用户自己的IP核并完成驱动编写供处理器上运行的Linux使用等,例如如何完成HDMI接口,如何将摄像头数据传递给处理

    大小:3.3 MB嵌入式配套资源

资源下载

相关声明:

架构设计学习笔记

23小时6分钟前回答

Laravel程序架构设计思路之使用动作类

前言 当我们谈论到应用程序的架构的时候,经常会问到一个经典的问题,那就是“这段代码应该放在哪里比较好”。 因为 Laravel 是一个相当灵活的框架,所以要回答这个问题其实没那么容易。我应该把我的业务逻辑写在 Model 层,还是 Controller 层,或者是其他地方? 当你的应用程序仅有一个接入点,把业务逻辑写在 Controller 层是可以的。但是现在更普遍的的情形是,有很多接入……