text: 横切关注点
  横切关注点指的是一些具有横越多个模块的行为，使用传统的软件开发方法不能够达到有效的模块化的一类特殊关注点。
  简介
  在‘面向切面’软件开发中，横切关系是程序中和其他模块有联系的‘切面’。这些关系在程序模块化的设计和实现中无法被自然地分解到模块中，导致或代码过于分散，或代码冲突，或者两者都有。
  举个例子来说，编写一个处理医生记录的app，这些记录的索引是核心模块，同时关于存储记录或用户信息的数据的历史日志，或者登录的验证系统，由于和app中大部分模块都有关系所以成为了‘横切关系’。
  背景
  横切关系是那些和程序中大部分模块都有联系的部分，它们形成了切面开发的基础单元。这样的横切关系部分不能自然地适配面向对象编程理念和面向过程编程理念。
  程序内那些冲突或者内部依赖过度一般都和横切关系有直接联系，由于过程性和功能性编程语言的结构完全是步骤化调用，也就没有语法可以同时进行功能实现和横切关系处理，这样一来，解决横切关系的代码就在程序中分散或者重复执行，最终导致了程序模块化的丧失。
  AOP(面向切面编程)的目的是将这些横切关系封装进切面来保持程序的模块化，也就可以保持自然地模块独立性和处理横切关系代码的可复用性。通过这些对横切关系的设计处理，作为对于面向对象编程的一个补充，软件工程的模块化和维护简单化的优势仍然可以保持。
  模块
  软件模块（Module）是一套一致而互相有紧密关连的软件组织。它分别包含了程序和数据结构两部分。
  现代软件开发往往利用模块作合成的单位。
  模块的接口表达了由该模块提供的功能和调用它时所需的元素。
  模块是可能分开地被编写的单位。这使他们可再用和允许广泛人员同时协作、编写及研究不同的模块。
  面向切面的程序设计
  面向切面的程序设计（aspect-oriented programming，AOP，又译作面向方面的程序设计、观点导向编程、剖面导向程序设计）是计算机科学中的一个术语，指一种程序设计范型。该范型以一种称为侧面（aspect，又译作方面）的语言构造为基础，侧面是一种新的模块化机制，用来描述分散在对象、类或函数中的横切关注点（crosscutting concern）。
  切面的概念源于对面向对象的程序设计的改进，但并不只限于此，它还可以用来改进传统的函数。与切面相关的编程概念还包括元对象协议、主题（subject）、混入（mixin）和委托。
  最广为人知的面向侧面的程序设计语言是由施乐帕洛阿尔托研究中心开发的AspectJ，该语言可以和Java编程语言结合在一起使用。
  在.NET Framework的环境，则有通过MSIL动态注入来实现AOP的PostSharp库，但是到3.0版为为止，官方文件中只注明适用于C#与VB.NET，不适用于C++/CLI。