.NET 应用架构指导 V2[14]
    
            
摘要:查询   查询是数据访问层中主要的操作。他们是将应用的请求翻译为对数据库的CRUD行为。因为查询如此关键,应该优化它们,来最大化数据库的性能。可以参考下面的设计原则:  使用参数化的SQL查询,可以减少安全问题,减少SQL注入攻击。不要使用用户输入的内容进行字符串的拼接。   考虑使用对象创建查询。例如:实现查询对象模式,或者使用ADO.NET支持的参数化查询。考虑为查询的执行优化数据库的数据结构...
        
阅读全文
摘要:.NET 业务框架开发实战之六 DAL的重构  前言:其实这个系列还是之前的".NET 分布式架构开发实战 ",之所以改了名字,主要是因为文章的标题带来了不少的歧义:系列文章中本打算开发一个简化业务发的流程的Framework,然后用这个Framework再来实战,开发一个分布式的应用。改了名字。给大家带来了不便,敬请见谅。  本篇的议题如下:  1. 确定DAL的接口的定义。  之前在开发DAL...
        
阅读全文
摘要:数据访问层简介    上图的深黑色框中的就是数据访问层,通常包括下面的部分:  数据访问组件。这些组件抽象了对于存储在数据库的内容的访问。将常用的数据访问集中化,是的应用很容易配置和维护。一些数据访问框架,还允许开发者在helper和数据访问组件的基础上实现自定义的访问组件。其他的数据访问组件,例如ORM框架,自动实现了数据访问组件,减少了开发者需要编写的数据访问代码。  服务代理。如果业务逻辑需...
        
阅读全文
摘要:部署方面的考虑  当部署业务逻辑层的时候,一定要考虑生产环境的性能和安全问题。可以参考下面的原则:  考虑将业务逻辑层和表现层部署在同一个物理层,最大化的提高性能,除非你由于伸缩性或者是安全的考虑,需要分层部署。    如果你一定要支持远程业务逻辑层,考虑使用TCP协议提高应用的性能。   考虑使用Internet Protocol Security(IPSec)保护在物理层传输的数据。   考虑...
        
阅读全文
摘要:截图:因为类图很直观,所以恐怕C++成员首先接触到的应该就是类图了.在这篇文章中我们要将下面一个在MFC程序中随处可以见到类用UML图表现出来. class CGraphicObject {  CRect m_rectBound; public:  BOOL SetRect(CRect rect);  CRect GetRect(); }; 创建类图在模型资源管理器中选择[Static Model...
        
阅读全文
摘要:业务逻辑层简介     上图的粗黑色边框的部分就是业务逻辑层,可以包含下面的内容:    application facade应用外观。这个可选的组件为业务逻辑组件提供一个简单的接口,通常会将多个业务操作合并为一个操作,使得业务逻辑层更容易使用。可以减少依赖,因为外部调用者不需要知道业务逻辑组建的实现细节和他们之间的关系。   业务逻辑组件。在任何应用中,业务逻辑的定义都会集中在获取数据、处理数据...
        
阅读全文
摘要:主要的技术及常用的模式。  移动应用  在设计移动应用的时候可以参考下面的原则:  如果你想要构建一个基于windows的完全在线、偶尔在线、离线的应用,可以考虑使用windows compact framework。   如果你想构建一个支持各种移动设备,或者是需要WAP协议,compact HTML的联网应用,可以考虑使用ASP.NET 。  富客户端应用  在设计富客户端应用的时候可以参看下...
        
阅读全文
摘要:前言:我们一步步的从简单的开始讲述,还是沿用我一直的方式:慢慢演化,步步为营。 本篇文章的议题如下: 1.Task基础介绍 2.Task的创建 3.获取Task的执行结果  4. 补充细节  1.Task基础介绍 首先我们还是来看看一段简单的代码:  这里展示的只是一段简单的代码,不能显示出并行编程的特点。但是我们还是从最基本的开始看,慢慢进入深一点的话题。  如果你曾经用过.NET 中的多线程编...
        
阅读全文
摘要:本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍。   本篇文章的议题如下:  1. 并行编程和多线程编程的区别。  2. 并行编程技术的利弊  3. 何时采用并行编程   1.并行编程和多线程编程的区别。  1.1并行编程。   现在随着多核计算机的普及,并行编程技术,也就是多核编程技术也逐渐称为开发的主流。为此,在.NET 4 中就引入了“并...
        
阅读全文
摘要:前言:本来打算这篇文章来写DAL的重构的,现在计划有点改变。之前的文章,园子里的朋友给出了不少的反馈,特别感谢金色海洋和Virus两位朋友的一些反馈。周末的这两天,对文章中开发的那个Framework做了一些改进,虽然说系列文章会慢慢的给出代码,但是这两天的一些想法让我很兴奋,迫不及待的和大家分享一下,也当是对文章中以后给出的Framework先睹为快吧。   本篇文章涉及技术不多,主要是些想法(...
        
阅读全文
摘要:前言:上一篇文章讲述了一些实现DAL的理论,本篇主要是DAL实现的的初步的尝试。  本篇的主要议题如下:  1.设计DAL的基本操作  2.对基本的操作的进一步的思考  3.查询对象的一些思考  1.设计DAL的基本操作Richard认为:在设计一个架构或者Framework的时候,有几点很重要:  a.总体把握的能力。  b.抽象的能力。  c.分析的能力首先,从总体上来看,Richard认为D...
        
阅读全文
摘要:前言:之前的几篇文章断断续续的介绍了Task的一些功能:创建,取消。本篇介绍Task的休眠,本篇的内容比较的少。  本篇的议题如下:  1. Task的休眠。  1. Task的休眠  有时候,我们常常希望一个Task在等待一段时间之后再运行,也就有点类似之前多线程编程中的Sleep。我们可以设置一个Task休眠多长时间,当这个时间过了,Task就自动的唤醒接着运行。  下面就讲讲休眠的方法:  ...
        
阅读全文
摘要:前言:首先,感谢园子里的朋友对文章的支持,感谢大家,希望本系列的文章能够真正的对大家起到一点帮助的作用。再次感谢大家。 大家也许想问,什么时候出代码,代码一定会出的,我不想一上来就开始抛出一大堆的代码,然后讲解,架构的设计在思考的过程,思考到了,代码也就水到渠成了。上篇文章讲述在设计之初,Richard所画出的一些草图,本篇对之前的草图做了进一步的思考。  本篇的议题如下:  1. 草图的一些问题...
        
阅读全文
摘要:本篇的议题如下:  1. 第一个数据层草图的提出  2. 对数据访问层的思考  3. 第二个数据层草图的提出  1.数据层草图的提出  Richard开始着手设计,一开始他没有就立刻在自己的计算机开始敲代码。而且采用笔+纸开始构思。 因为他认为:写程序不是什么时候都得上机,脑子里面想什么的才是最重要的,往往很多时候,在设计程序时,首先在头脑中就已经把整个功能已经实现了,甚至代码的详细编写都已经在头...
        
阅读全文
摘要:前言:本系列文章主要讲述一个实实在在的项目开发的过程,主要包含:提出问题,解决问题,架构设计和各个逻辑层的实现以及新问题的出现和代码的重构。本系列文章以故事的形式展开,而且文章列举的很多项目的名称,大家也不用太关心,很多都是虚拟的。  本篇主要讲述项目的一些背景。 新人Richard被分配到了一个企业自动化信息管理项目组--Automation Information Management Pro...
        
阅读全文
摘要:本章将讨论将逻辑组件分组之后分布在不同的层,这样的一种应用。层集中关注单个逻辑和功能组件,不考虑组件的物理存放位置。逻辑层可以放在不同的物理层,也可以放在同一个物理层。本章将会交给你如何将你的应用分解为不同的逻辑层,如果选择合适的功能布局,应用如何支持多种客户端类型。   分清楚逻辑层和物理层的区别是非常重要的,逻辑层描述的是功能逻辑和组件的分组,物理层描述的是功能和组件在不同机器上的部署分布。尽...
        
阅读全文
摘要:输入、输出和设计步骤   设计输入可以帮助确定你的架构一定要满足的需求和限制。通常输入就是用例和使用方案,功能需求,非功能需求(包括质量特性,例如:性能、安全、可靠性、和其他的),技术需求,目标部署环境,和其他限制。  在设计的过程中,你将会建立多个架构的用例,架构问题包括特殊的关注点,满足在设计过程中定义的需求和限制的候选架构方案。常用的方法就是不断的重新设计,直到满足所有的需求,保持了所有的限...
        
阅读全文
摘要:本篇详细介绍架构的步骤   1、确定架构的目标  架构的目标就是你的结构和设计过程的目的和限制,练习的范围,帮助你决定什么时候算是完成了。在你确定架构的目标的时候,可以参考下面的几个关键点:  首先确定架构的目的。你花在架构和设计的每一个阶段的总时间,将会依赖于这些目的。例如:你是否建立原型?是否测试潜在的路径?是否为一个新的应用已经开始长期的架构过程?  确定谁将会消费你的架构。确定你的架构是否...
        
阅读全文
摘要:本节主要讨论在目前的应用中,经常使用的高层的模式和原则。通常会涉及架构风格,包括模式,例如:C/S,分层架构,组件为基础的架构,消息总线架构,SOA架构。对于每一种架构,都会从整体、主要原则、主要优点,和帮助你的应用选择合适的架构风格上讲述一些信息。描述不同类型的应用的风格很重要。例如:一些架构模式描述部署模式,一些描述结构和设计问题,另外一些描述通信因素。因此,在本章中,一个典型的应用将会组合包...
        
阅读全文
摘要:每次客户端请求都会创建页面实例,它的执行使自身及其包含的控件经历页面生命周期的各个阶段。页面的执行起始于HTTP运行库调用ProcessRequest时,该方法将启动页面并控制它的生命周期。生命周期由一系列阶段和步骤组成。一些阶段可以通过用户编码的事件进行控制,而一些需要对方法进行重写。其他阶段(更确切地说是子阶段)没有被公开,因而开发者无法控制。页面的生命周期可以分为三个阶段:建立阶段、回发阶段...
        
阅读全文