RSS 2.0 Feed
2004-01 Entries
摘要:虽然公司放假已经几天了,今天忍不住溜到公司,嘿嘿,有人,于是上网来看看,估计春节假期除非自己买个Modem在家里拨号,否则是上不了网了,苦啊...今天春节不回家,在深圳过。不能上网只好在家里看书了,准备看完两本一直想看完但一直没时间看的书,呵呵。...[阅读全文]

posted @ | Feedback (4) |

摘要:一、SOA不就是Interfaced-Based编程吗?终于有人忍不住发出了质疑的声音,SOA,听起来很玄,其实不就是Interfaced-Based编程嘛?我们以前OO编程的时候不是一直都这么干的吗?充其量用Web Services来包装了一下,这就是所谓的“革命性”吗?有人就接道,“革命性”就是指的WEB Service啊,可以穿透网络啊。当然有人会反驳了,理由就是:Interfaced-Based不能能跨平台吗嘛,和SOA、AOP差别大了,而且SOA确切的说是“Message-Based”编程,而且别忘了还有AOP呢。二、有必要学XAML吗?XAML真是很火啊,特别是Dan Box和Chris Anderson出了两个MSDN TV短片之后。但是有人就说了,XAML是定义程序界面用的一种标记语言,就像今天用HTML定义Web界面一样,可以想象以后VS.NET肯定可以用WYSIWYG的方式来制作程序的界面,就像今天可以用N多的工具来制作Web界面一样,我们有必要去学这些XAML的标记、用法吗?反驳的人当然有了,“我们制作Web网页,而不懂HTML实际吗?看看现在做网页的那些工具所谓的WYSIWYG的效果...”、“有必要学数学吗?反正有计算器了...”但是,“HTML不同啊,当初就没个统一的界面标准,结果被大家搞乱了,而XAML是微软自己的,当然可以精确定义了...”、“数学和XAML没有可比性啊,可以拿IL比比,能读懂IL当然有好处,可是谁会用IL写代码呢?”...[阅读全文]

posted @ | Feedback (11) |

摘要:ObjectSpaces这个ORM框架可能已经被大家听过N次了,它诞生很早,但开发周期拖了很长,虽然很早它的测试版本就已经有人使用了,但只到.Net Framework 1.2才计划正式将它包含其中,并放在了Object.Data.ObjectSpaces这个NameSpace中。   ObjectSpaces的流传版本也是甚多,被很多人研究过的一个EAP(Early Adopter Preview)版的版本号是1.0.1081,我在Gotdotnet.com里面看过一个1.0.3328.4的版本做的东西,这里用的这个ObjectSpaces是现在大家普遍使用的.Net Framework 1.2 Alpha测试版里面带的,版本号同.Net Framework保持一致,1.2.30703.27。   从版本号的变更就可以看出,ObjectSpaces从开始到现在变化很大。上面提到的三个版本都各有差别,而且差别不小。现在最新的这个版本我想应该和最终版本差别不会很大了。我以前的一篇文章就是基于EAP版本的,比现在的简单不少。   进入正题:在IBuySpy的架构中,实际上是没有BLL(商业逻辑层)的,甚至没有创建Entity Class,数据通过DAL(数据访问层)从数据库中获得,然后将DataSet或者DataReader直接从DAL传递给构成IBuySpy页面的Module的ascx文件,再直接绑定到DataList之类的web control上。   我们这里将IBuySpy的Announcement模块的DAL用ObjectSpaces重新写过:   一、先来看看IBuySpy原来的Announcements模块   DAL:AnnouncementsDB.cs文件 界面控件页面:用于显示的Announcements.ascx控件和用于新增修改的EditAnnouncements.aspx页面   里面都是最最标准的写法,没什么讲的。   二、Entity Class   新创建一个Announcement类和一个AnnouncementCollection集合类,也没什么讲的。   三、建立ObjectSpaces的RSD、OSD、MSD   ObjectSpaces的核心就是用来描述Schema的三个xml文件: 一个描述数据库表结构的Relational Schema Definition,一个描述实体类结构的Object Schema Definition,和一个描述表结构和实体类映射关系的Mapping Schema Definition。 用ObjectSpace最主要(也是最烦人)的工作就是把这三个Schema写出来。EAP版里面还只有一个xml文件要写,现在要写三个了L。   AnnouncementRSD.xml AnnouncementOSD.xml AnnouncementMSD.xml   四、重写DAL   创建一个新的类文件AnnouncementOSDB.cs,包含一个新的类AnnouncementOSDB,里面的方法签名对照着IBuySpy原本的AnnouncementDB类就行了。原本的AnnouncementDB是用ADO.NET,返回DataSet、DataReader,我们的AnnouncementOSDB就用ObjectSpaces,返回实体集合类或实体类。   根据moduleId返回Announcement集合: public AnnouncementCollection GetAnnouncements(int moduleId)               {                      ObjectSpace os = new ObjectSpace(_sMapFilePath, _conn);                      // 条件是ModuleID等于参数moduleId,ExpireDate大于当前时间                      ObjectQuery query = new ObjectQuery(typeof(Announcement), "ModuleID = " + moduleId.ToString() + " and ExpireDate > #" + DateTime.Now.ToString() + "#");                      // 取数据                      ObjectReader reader = os.GetObjectReader(query);                        AnnouncementCollection result = new AnnouncementCollection();                      // 从ObjectReader中取值不需要另外造型                      foreach (Announcement ann in reader)                      {                             result.Add(ann);                      }                        return result;               }   根据参数返回一个Announcement:               public Announcement GetSingleAnnouncement(int itemId)               {                      ObjectSpace os = new ObjectSpace(_sMapFilePath, _conn);                      ObjectQuery query = new ObjectQuery(typeof(Announcement), "ItemID......[阅读全文]

posted @ | Feedback (6) |