把理念变成框架

把理念变成框架

 

 

1,Frameset框架的历史

 

2000年推出frameset work 1.0 是针对于ASP的

1.1    是针对ASP.NET的

接着陆续推出2.0 3.0 3.5 4.0  4.5 ,  5.0

 

ASPX页面表示的是服务器上的页面

所以,一些控件是runat=”server”

 

2,垃圾回收

 

在c++中是有指针的概念的,它需要人工回收资源

Java和C#的出现,将手工回收变成了自动回收,于是出现了我们说的垃圾回收机制GC

那么GC是怎么自动回收资源的呢?

请看下面代码

 

Class B

{

Private int xx;

    Private int YY;

 

}

 

Class A

{

   Private int xx;

   Private int YY;

  

   Private test()

{

                   B b = new B();

                   b.xx = this.xx;

                   b.yy = this.yy;

}

}

 

说明:

当test()方法执行完以后,B对象释放,但是A对象的xx和yy此时并不释放.

即垃圾回收和代码块的作用域有关.

 

 

3,Static与数据库连接池

 

Static的资源,是存在类中的.当你重启IIS时, Static资源并不会消失.只有你在任务管理器中Kill掉它的一个exe(名字忘记了),Static资源才会消失

 

一般的程序员,做系统的架构是ASPX + ADO.NET + DB

他们一般会自己封装一个DBHelper.cs文件,来操作数据库

 

DBHelper.cs文件有这么几个功能

(1)     生成Connection

(2)     DataCommand

(3)     Get一个DataReader

(4)     Get 一个DataSet

 

这种方式是很垃圾的,为什么这么说?

就说(1)生成Connection吧,他们一般会有两种处理方式

(1)     Static出来, 调用时就是DBHelper.Connection

(2)     New Connection(), New一个出来

 

接着再Connection.Open()

告诉大家Connection中的Open方法是很慢的

 

那么上面的这种方式到底有什么问题呢?

请看下面解释

 

小明访问  new Connection()

小强访问  new Connection()

小华访问  new Connection()

…省略号…..

 

最后,这个系统New 出了好多好多Connection, 这时系统访问速度就会变的好慢好慢

 

SqlServer最多支持2000个连接数,它除了要给你的系统一些连接数目,还有一些是给它自身对其它应用的一些连接使用

假设可以提供给你的系统使用的连接数是500的话,当你New 出500个Connection或以上时,你的系统会很慢,很慢, 还是很慢呢

 

既然知道问题的所在了,现在就应该想办法去解决Connection的连接问题

 

我的办法是,使用数据库连接池

 

什么是数据库连接池?

请看下面两位童鞋的回答

小丹说:它是一个多线程

甲连接了这个Connection,乙就在等待着甲了,所以就会出现死锁

 

小华说:它有一个最大连接数

 

连接池有这么几个概念

(1)     最大连接数Max:  50个(比如说)

(2)     最小连接数Min:  20个

(3)     当前List里有30个连接数,其中20个是online状态的,另10个是offline(离线)的

 

当小华要访问时,它要有一个Connection,这时候连接池会做下面的工作:

(1)     检查List里面的连接数,是否已经达到最大连接数

(2)     如果List连接数 < Max,就查看List中是否有OfferLine状态的Connection

(3)     如果有offline的连接池,就把这个Connection给小华连接吧

 

(4)     如果List连接数 > = 连接数,页面就提示”已达到最大连接数”

(5)     系统开始时,连接池会自动开启最小个数的连接数

(6)     List会将一些offline状态的连接数,给释放掉

 

 

4,二级缓存

 

通过DBHelper.cs直接操作DB数据库,效率是比较低的

于是,我们使用了”缓存”来解决这个问题

 

 

 

如上图,说明

缓存是一个内存条,它存储着DB的一些数据,如果我们需要这些数据直接用DBHelper从缓存中去取,这样效率就比较高了

 

说明:还可以有三级缓存

 

那么,二级缓存就和DB和ORM映射联系起来了

 

 

 

5,Linq

 

上面,我们提到了3种概念

(1)     数据库连接池

(2)     缓存

(3)     ORM映射

 

把上面的理论变成框架

就产生出了Linq

 

Linq有两点

(1)     打开时,会自动产生5个Connection连接数

(2)     Refresh()方法

 

6,Sliverlight

 

Sliverlight不能直接连接数据库

所以,我们要结合Linq来使用

 

 

 

 

 

 7,Sliverlight技术

 

MVVM技术,它的含义:

M: Model

V: View

VM: ViewModel

 

现在演译说明一下

(1)     Model中有一个属性Age=10,现在改成Age=11

(2)     Model将Age=11传给ViewModel

(3)     View有一个TextBox值为10

(4)     ViewModel会把View中TextBox的值改成11

 

 

Domain Service服务

启动该服务,新建时Sliverlight项目时,只要钩选”启用 WCF RIA服务”这项

 

 

在AppManifest.xml文件中,可以自定义一些信息

AssemblyInfo.cs,定义版本等信息

 

 

Sliverlight项目中,是不能引用其它DLL的——只能引用新建的Sliverlight类库的dll

 

 

了解App.g.cs和App.g.i.cs的作用

 

 

在App.xaml.cs中

ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)方法,

实际是将错误输出到Web工程中的主页面function onSilverlightError(sender, args)方法里面的

 

 

8,服务器控件 

敬请期待....

posted @ 2015-04-02 16:17  华子的幸福生活  阅读(404)  评论(4编辑  收藏  举报