Ongoing

Kozen's Blog
posts - 9, comments - 50, trackbacks - 1, articles - 0

2005年10月26日

Use the LoadFile method to load and examine assemblies that have the same identity, but are located in different paths. Do not use LoadFile to load assemblies that you want to execute.
LoadFile does not load files into the LoadFrom context, and does not resolve dependencies using the load path, as the LoadFrom method does. LoadFile is useful in this limited scenario because LoadFrom cannot be used to load assemblies that have the same identities but different paths; it will load only the first such assembly.


即不同物理位置的相同程序集通过LoadFile加载后,实例化其中的对象后不能进行类型比较,因为没有相同的环境。所以在类似插件系统的程序集动态加载的实现中应该使用LoadFrom方法(btw:调用后不会自动加载依赖的程序集)。

posted @ 2005-10-26 14:24 Kozen 阅读(1568) 评论(1) 编辑

2005年4月7日

    业务元模型相对于业务需求、技术实现和表现形式而言,是比较稳定的,通过设计一个表达能力较强的业务元模型来描述业务,再使用MDA工具将其实现,这是件多么美好的事情啊!但如何才能真正实现呢,或者说如何较为完美的自动化的实现PIMPSM的转化呢?路漫漫其修远兮!

posted @ 2005-04-07 14:33 Kozen 阅读(592) 评论(2) 编辑

2005年1月16日

       最近试用了几种在广域网上访问SourceSafe数据库的工具,如VSS Remoting、SourceOffSite等,综合评估下来觉得VSS Remoting最好。但没有多人使用的License,不知哪问hacker能够提供破解,在下先谢了!

posted @ 2005-01-16 16:40 Kozen 阅读(2549) 评论(7) 编辑

2005年1月9日

        最近在开发一个n-tiers的应用系统,应用服务层主要以WebService作为服务的提供方式。为了提高系统的效率,在服务层做业务模型数据的缓冲是必要也是必须的。在具体设计缓冲的对象模型时,得出以下几点结论:

1。缓冲是可写的。即更新业务模型数据时,不仅需要更新到数据库,同时需要更新缓冲。比起模型变更后清空缓冲再重新加载的方法,此方法可以提供更好的性能,但必须保证缓冲和数据库的数据的一致性,这也无形中增加了对系统可靠性的高要求。

2。业务模型更新的唯一途径是经由系统提供的服务接口。对于直接操作数据库更改模型的做法应该杜绝,因为这与缓冲策略是背道而驰的。

3。以ADO.NET中的DataSet作为被缓冲对象的数据结构。通过使用DataView提供的筛选、排序等特性可以简化从缓冲中加载数据的实现。

4。被缓冲数据的粒度。对于同种类型的数据(通常在一张数据表中的数据),我认为一次性加载到缓冲中比较好,比起增量缓冲(即用一个加载一个)的做法,此方法实现简单、效率高,而且从系统长期运行后的效果看,最终同种类型的数据都将被遍历、即都被加载到缓冲中,那晚加载不如早加载,“早投资早享用”啊!但我也有所担心,使用DataSet一次性缓冲大量的业务模型数据,可能会占用大量的内存(我现在设计的系统估计得有200M左右),不知这会不会是成为系统性能的瓶颈。这有待系统成形、测试后才能得知,毕竟在系统设计的初期,概念的完整性和统一性以及实现的简单实用性才是最重要的,至于性能问题只是放在第二位的。

5。需要考虑应用服务集群时的缓冲策略。在有多个对等的应用服务形成集群服务时,当一个服务的缓冲更新时,集群中别的服务需要与其同步,以保证各个服务缓冲中的数据都是数据库中被缓冲业务模型数据的完整镜像。

posted @ 2005-01-09 22:50 Kozen 阅读(858) 评论(4) 编辑

在用.Net Framework 1.1编写一个程序集的时候,编译器禁止你在同一个名字空间中设计两个名称相同的类,这似乎是理所当然的事情。
但我最近发现,在两个不同的程序集中倒是可以分别设计两个名字空间和类型名称完全相同的类,并可将此两个程序集最终编译到同一个可执行程序中正常运行。对此我十分疑惑,若在运行时有一个程序集同时引用定义了该名称类型的两个程序集,那在创建该类实例的时候究竟以哪份类的定义为准呢?
继续思考中......

前段时间想通了这个问题,做点备忘吧。
其实在不同程序集中定义名称相同的类型也是可以理解的,或说是不能绝对避免的。
静态引用会有警告,而动态加载那就可以指定程序集后再加载类型。
事实上,同一个程序集若处于不同的物理目录也可在同一个AppDomain中加载两次,且由两个程序集对应的不同的Assembly对象通过反射创建的同个不同对象的类型也是不一样的。

posted @ 2005-01-09 22:16 Kozen 阅读(1119) 评论(10) 编辑

2004年10月15日

    最近使用WinXP共享目录的时候发现,若登录者操作系统为win2000\winxp\win2003,则无法访问WinXP操作系统的主机,即使输入正确的guest的用户名/密码仍然显示错误提示“未授权用户在此计算机上的的请求登陆类型”。

原因:是guest在本地安全策略中的用户权限中被禁止从网络登录所致。


解决方法:配置本地安全策略 \安全设置\本地策略\用户权限分配\中的“拒绝从网络访问这台计算机”,把guest删除、保存即可。

posted @ 2004-10-15 17:18 Kozen 阅读(3354) 评论(7) 编辑

2004年10月14日

posted @ 2004-10-14 22:30 Kozen 阅读(696) 评论(8) 编辑

posted @ 2004-10-14 16:08 Kozen 阅读(2384) 评论(3) 编辑

posted @ 2004-10-14 15:55 Kozen 阅读(1464) 评论(8) 编辑