avalon

宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒

导航

07 2012 档案

摘要:最近一个偶然的机会让我接触到了这个神奇的语言,这个语言的是完全面向对象的,而且是函数式的,他的作者的目标是设计一种强大而又漂亮的语言(a very powerful but at the same beautifully simple language),同时它也可以运行在JVM上(之前可以运行在.net上,但现在不支持 ╮(╯▽╰)╭)。他可以很轻松的调用Java的包,也可以被Java调用,所以Java程序员可以很轻松的用这个语言来实现他们目前的工作,但是如果把它当做Java使用的话,对他来说反而大材小用了。面向对象现在应该不需要说太多了,大家基本上能明白是哪些东西,说说函数式编程吧,对于. 阅读全文

posted @ 2012-07-23 15:48 expt 阅读(214) 评论(0) 推荐(0)

摘要:在使用Entity Framework(以后简称EF)的时候,会使用到其中的 Ado.net数据实体模型 类型的文件,如图:默认该文件会自动生成数据实体类,但是有时候我们又想自己修改一下生成的类文件怎么办,答案是使用上面的 EntityObject生成器。创建一个名为Model.TT的文件,然后打开该文件:修改你文件中的SourceCsdlPath = @"XpomsEntities.edmx", 这里的XpomsEntities是我的项目中的文件,文件名修改为你自己的项目文件。然后保存,编译,VS报错。这时候需要删除.edmx文件关联的.Designer.cs文件。现在开 阅读全文

posted @ 2012-07-03 16:18 expt 阅读(617) 评论(0) 推荐(0)

摘要:在前面说的框架的搭建过程中 ,自己做了一个简单的数据映射器,但是因为功能和稳定性的考虑,还是果断使用商业的ORM工具。虽然一开始考虑使用Entity Framework(以下简称EF,目前使用的版本为4.X),但是EF的扩展看起来似乎很困难,虽然后来证实了EF自定义驱动仅仅比Nhibernate多几个步骤而已,这个稍后说好了。Nhibernate的数据操作也是根据Ado.net基本的几个东西,DbConnection,DbCommand,DbDataReader,DbTransaction,根据自己的需要继承这个几个抽象类,然后实现其中的方法,就可以完成基本的数据操作了,同时这几个类也可以用在 阅读全文

posted @ 2012-07-03 16:16 expt 阅读(286) 评论(0) 推荐(0)

摘要:动态代理 DynamicProxy,这里说的动态代理是直接使用Castle.net 中提供的,并非自己实现的,在项目早期自己尝试过创建一个自己的动态代理类,虽然能够实现,但是功能上还是太弱了一些,如果追加功能就变得和Castle.net 的一样了,所以就直接采用人家的了。。。=============咯咯咯=============动态代理的工作模式:一般我们获取一个类型的实例都是通过 new 关键字,例如 var c = new Class1(); 通过动态代理的话,我们获取一个实例是通过代理方法获取的,generator.CreateClassProxy(type, interceptor 阅读全文

posted @ 2012-07-03 16:15 expt 阅读(351) 评论(0) 推荐(0)

摘要:这篇文章主要介绍整个框架中都在使用的接口,虽然设计目的是非侵入式的,但是多少还是有些接口要继承的。先说PluginInfo,这个类基本上只是用来记录插件信息的,需要说明的也就是ConfigFilePath,这个属性对应着该插件对应的配置文件,配置文件是简单的键值对,在启动时会将该配置读出,并复制给插件的Config属性。IPlugin接口,所有插件都要继承该接口,在初始化加载时,系统会扫描该类型,并初始化它,然后调用Initialize方法,其他方法看名字应该也差不多可以猜出含义来了。关于其中的Message的方法将会在后面的Message中说明。IApp接口是Appex的接口,该接口主要是S 阅读全文

posted @ 2012-07-03 16:09 expt 阅读(282) 评论(0) 推荐(0)

摘要:上一篇文章大体的说了一下设计的框架的整体思路,这篇文章将给出整体的设计思路与模块,个人才疏学浅,设计上肯定会有各种问题,还请大家多多指正。==============分割线=================在这个框架设计中,分为 核心模块,核心扩展模块和业务模块,业务模块可以调用扩展模块也可以不调用,扩展模块只是为了方便业务模块使用。核心模块:1) AppEx: 主框架的启动逻辑,实际上也是一个容器,负责存储服务模块的实例。 主要方法:Start(),RegService(object serivice, Type serviceType, Boolean isSignleModel),Ge. 阅读全文

posted @ 2012-07-03 16:04 expt 阅读(253) 评论(0) 推荐(0)

摘要:近期公司要求设计一个平台,要求所有的程序可以在这个框架内运行,也可以脱离这个框架运行,同时还要有较好的扩展性;第一次看到这个要求感觉这不就是Castle.net的功能嘛。。。但是经过讨论,公司还是决定自己做一个,所以较为简单的模仿了一个Castle框架,并增加了部分自己需要的功能。该框架主要功能及设计思路:1)所有的模块都插件化,包括主界面及启动模块Core模块之类的,好处是便于替换,已经通过网络更新。当然坏处是启动速度可能会慢一些。2)将UI与服务分开,UI尽可能的采用banding,服务则保存在系统的服务容器内。UI与服务之间采用通讯模块进行通讯。 这么做的优点是,我们这个项目是所有的文件 阅读全文

posted @ 2012-07-03 16:02 expt 阅读(256) 评论(0) 推荐(0)