本章内容是讲三种开发模式,web模式、Winform模式和Wcf模式的系统启动入口有什么区别,以及启动后系统初始化的内容;为什么要把这些单独提出来讲一章,因为我觉得本章非常重要,我们都知道程序中的main()函数,称之为主函数,是所有程序运行的入口;当你拿着一个程序肯定是从这个函数开始阅读,慢慢的深入了解整个程序的运行流程;而光看那些功能代码块是掌握不了系统运行时的一些机制的;

      只有掌握本章的内容后,那么在以后项目中遇到的问题基本上都能直接定位,并找到产生的原因,不然你会觉得所有产生的问题都莫名其妙,不知道从哪里下手调试;项目中的配置文件也是在系统初始化中使用的,要了解配置的值到底有什么作用也必须搞清楚系统初始化的过程,还有就是框架中的很多设计思想就是基于此处产生的,最典型的就是控制器的设计,为什么控制器要如此设计,看完后应该会深有体会;

接下来我就分别对框架中的几种模式的系统启动入口进行讲解:

1.Web版系统启动入口

2.Winform版系统启动入口

3.Wcf版系统启动入口

4.启动后初始化内容

 

源代码目录结构:

 十五、EnterpriseFrameWork框架核心类库之系统启动入口与初始化

       Web版是三层结构程序,但跟wcf版又不一样,分为浏览器、Web服务器和数据库,所有代码都是部署在Web服务器上的,Windows下的常用web服务器就是IIS了;Net下的web系统启动入口通常都是使用Global.asax文件;是可以把初始化代码AppGlobal放在此文件中,但是框架为什么没有这么做,因为开始的设计就是在EFWWeb项目中是不能写任何cs代码的,想想看如果EFWWeb项目没有cs代码,那么就只有html代码和javascript代码,这样EFWWeb项目就不需要编译,要编译的代码都放在逻辑层项目中,我们发布就变得非常方便,只需拷贝更新逻辑层项目的dll和EFWWeb项目的aspx文件和js文件;如果只修改了界面那编译都不用了;

       那么启动入口不在Global.asax文件中那又在哪了,框架利用了httpModules来实现;先看AppGlobalHttpModule对象的代码,继承net框架中的IHttpModule接口,在实现的Init方法中通过context.BeginRequest事件调用了AppGlobal.AppStart方法实现系统初始化;

 1 /// <summary>
 2     /// web系统启动调用此对象
 3     /// </summary>
 4     public class AppGlobalHttpModule : IHttpModule
 5     {
 6 
 7         #region IHttpModule 成员
 8 
 9         public void Dispose()
10         {
11             AppGlobal.AppEnd();
12         }
13         private HttpApplication _context;
14         public void Init(HttpApplication context)
15         {
16             _context = context;
17             context.BeginRequest += new EventHandler(context_BeginRequest);
18         }
19 
20         void context_BeginRequest(object sender, EventArgs e)
21         {
22             AppGlobal.AppRootPath = _context.Server.MapPath("~/");
23             AppGlobal.AppStart(AppGlobalType.Web);
24         }
25 
26         #endregion
27     }
View Code

相关文章:

  • 2021-11-17
  • 2021-07-04
  • 2022-12-23
  • 2021-11-18
  • 2022-02-13
  • 2022-12-23
  • 2022-12-23
  • 2021-09-11
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
相关资源
相似解决方案