RSS 2.0 Feed
2003-11 Entries
摘要:    Grove Develop Component Kit 包括 Grove Develop Component 和 Grove Tool Kit两部分;    Grove Develop Component是一套基于Microsoft .NET Framework的可重用开发组件,支持多种不同数据库项目,提供标准的二层,三层及多层等开发框架.     Grove Tool Kit 是针对Grove Develop Component提供的一套.NET Develop Environment的外接程序(Addin) ,能够帮助预览(生成)依赖于Grove组件的可重用代码,包括数据库映射的实体类(Entity Definition Class) ,XML实体描述(XML Definition for data store)等.到作者主页可以了解详情,这是在CodeProject的页面。...[阅读全文]

posted @ | Feedback (3) |

摘要:下面是我原先用的调用CDOEXM中IMailboxStore接口给用户创建Mailbox的代码:DirectoryEntry deUser; // deUser为域中的用户String sHomeMDB; // sHomeMDB为域中Exchange Mailbox Store的路径CDOEXM.IMailboxStore mailboxStore = (IMailboxStore) deUser.NativeObject;mailboxStore.CreateMailbox(sHomeMDB);deUser.Update();运行到CreateMailbox()这个方法时,Exchange返回来一个“致命性故障”,上面的代码实在是标准得不能再标准的代码,Microsoft在KB中提供的代码示例都是这么几句,郁闷...难道是把DirectoryEntry对象的NativeObject本地对象映射转换成IMailboxStore有问题?于是,再隔上一层,先转成ADSI中的IADsUser:ActiveDs.IADsUser adsUser = (IADsUser) deUser.NativeObject;CDOEXM.IMailboxStore mailboxStore = (IMailboxStore) adsUser;mailboxStore.CreateMailbox(sHomeMDB);adsUser.SetInfo();还是“致命性故障”...于是,Google...终于检索到一个网页,那可怜的哥们和偶一样,也是“Catastrophic failure”,但是好像他比偶聪明那么一点点,他用VB.NET把代码写了一遍,就发现正常了...就像这样:Dim oMailboxStore As CDOEXM.IMailboxStoreDim oADsUser As ActiveDs.IADsUseroADsUser = GetObject(adsuserPath) ' 这里的adsuserPath就是用户的LDAP路径oMailboxStore = oADsUseroMailboxStore.CreateMailbox(homeMdb)oADsUser.SetInfo()偶再把这段代码在VB.NET里面生成了一个类库,然后在C#中引用、调用,It also works!但是实在不爽啊...于是盯上了VB.NET中的GetObject()这个函数,暗自想,如果偶在C#里面也调用这个函数...于是:IADsUser adsUser = (IADsUser) Microsoft.VisualBasic.Interaction.GetObject(deUser.Path, null);IMailboxStore mailboxStore = (IMailboxStore) adsUser;mailboxStore.CreateMailbox(sHomeMDB);adsUser.SetInfo();嘿嘿,果真好了!值得一提的是,VB.NET的类型Late Binding是C#所不具备的,虽然它的意义存在争议,但有些时候的确很有用。...[阅读全文]

posted @ | Feedback (23) |

摘要:CSDN论坛挂了,Blogcn.com也挂了,Web Application的设计和性能调整看来越来越重要了。从思归介绍的那个PPT里面,的确可以看出些许问题。www.asp.net的数据:超过4000个文件,23%的aspx文件,46%的代码文件;整个站点同时运行了11个不同的Application,包括www.asp.net、weblogs.asp.net、IBuySpy等等;2003/5/15一天,约16GB的数据量,104887个独立访问者;升级前:2个WebServer,WindowsServer2000,双750M CPU,500M内存,1个DB Server,WindowsServer2000,单750M CPU,1G内存;数据库成为瓶颈,95%的CPU占用率,大量的论坛更新和临时表的建立拖住了服务器。升级后:2个WebServer,WindowsServer2003,双2.2G CPU,1G内存,1个DB Server,WindowsServer2000,双2.8G超线程CPU,2G内存,RAID-0磁盘镜像;升级后的效果:CPU占用率只有6%,SQLServer占用了1.5G内存。设计上的调整:不再从数据层返回DataReader,而是返回实体类;预先缓存(Cache aggressively);用DataSet替代DataReader,因为DataSet可以被缓存起来;每次数据库调用尽量返回多个值;......我自己的感觉就是,Faster CPU, More RAM, More Cache,呵呵。自评这个ppt里面最“有益”的三句话:Database background is critical. (数据库是祸根)Hardware is inexpensive, people aren't. (硬件便宜人力昂贵)Memory is inexpensive, buy lots for SQL. (内存很便宜,多买点给SQLServer)...[阅读全文]

posted @ | Feedback (6) |

摘要:1、部门项目开始上线内部测试,因为开发环境和运行环境的不同,问题多多,做了两天消防员。教训:开发阶段就保证开发环境尽量接近运行环境,可以避免后期的很多不可预期的问题和时间延迟。2、Blogcn.com服务器宕掉,他们据称用了4路Xeon的数据库服务器和2路Xeon的Web服务器,好像是用的ASP。我禁不住暗暗想,如果换成.Net的系统,是否能支撑更多的用户呢(抑或更少)?3、要看的书进展缓慢,每天都很晚睡,办公室喝咖啡的杯子因为承受太多热水冲击而裂开了......[阅读全文]

posted @ | Feedback (3) |

摘要:今天下午调试一段程序时,一个问题不得其解:在域中一台服务器(非域控器)上运行的ASP.NET代码取域中的AD信息时出错,而这段代码在域控器上运行正常,于是怀疑应该是权限认证问题,但又无从着手,于是想到了KB...打开http://support.microsoft.com站点,把代码错误信息输入进去,搜索,呵呵,马上找到一篇相关的文章,正好是描述在ASP.NET代码中访问AD信息的,问题解决。原来,运行在非域控器上的ASP.NET代码为了能够获取AD中的所有信息,必须将一个有相应权限的“主令牌”传递给AD,而如果IIS上使用的“Windows集成认证”,那么用户的密码将被Hash加密,这个加密的密码是不能被IIS传递给AD的,而如果使用“Basic认证”,因为这时密码并未被加密(所以微软推荐我们Basic认证需要和SSL配合使用),所以可以被IIS用来生成一个传递给AD的令牌,于是就可以获得所需的信息了。...[阅读全文]

posted @ | Feedback (0) |

摘要:在Asp.Net论坛上有一篇帖子,发贴人表示听说VB.NET中将增加一个Edit & Continue(就是说,你可以在程序运行时停止在一个断点时,修改代码,然后按照新的代码接着运行,而不需要停止运行后重新编译)的功能,而C#中并没有计划加入这个功能。下面是一个对MS成员的访谈片断,中间说道Edit & Continue特性是在.net framework内实现的,就是说,C#要实现这个功能是完全可行的。但是这个特性对C#程序员并不重要,所以..."PM: As far as other languages go, I understand edit-and-continue is implemented in the framework, but not all .NET languages are required to implement it. For example, C# won't. AB: That is correct. ....... This was high on the list of VB.NET developer requests, and relatively unimportant to C# developers surveyed. But we understand our customers will be up in arms if we deliver Whidbey without edit-and-continue. Edit-and-continue has always been part of the soul of Visual Basic, so VB developers have expected it to be there. Not surprisingly, they were a little shocked when......[阅读全文]

posted @ | Feedback (1) |

摘要:这两天都在看Exchange的SDK,需要在ASP.NET页面里面对网络内另一台Exchange Server做一些操作,比如给指定域用户创建MailBox、进行帐号管理之类的。想起Zee在他的Blog上说的,Exchange 2003简直愧对2003这个版本号,我现在总算是也体会了。虽然Microsoft什么产品都在向.Net靠拢,但是Exchange2003却没有任何.Net的接口,依然只能通过Com Interop来调用CDOEX、CDOEXM这些东东,和Exchange 2000相比没什么改变。于是,部门技术经理还是决定沿用Exchange 2000来做服务器。昨天在Zee的帮助下,总算对Exchange编程有了一点点了解,今天又把SDK里面需要用到的几个Task的内容狠狠的看了一下,渐渐了入了门。Exchange SDK里面的例程几乎都是用VB调用COM组件的,我发现VB的确是一个好东东,把很多东西能够简化到这么容易的地步,尤其对COM的封装,VB的开发组真是厉害哦...顺便也说说Active Directory(对Exchange Server远程操作也离不开AD),.Net里面虽然有一个专门的System.DirectoryService这个NameSpace包含了AD的一些东东,但是有时候还是直接通过DirectoryEntry的NativeObject属性直接得到ADSI里面的IADs接口对象,再直接操作ADSI来得爽。不然很多操作都得来Invoke,还不如直接点呢......[阅读全文]

posted @ | Feedback (21) |

摘要:在线预览Delphi.net的开发界面:http://dotnet.borland.com/bdntv/delphi/octane_teaser_winforms8x6.html可以看到,这个IDE界面和C#Builder基本上是相同的,可以想象,C#Builder和Delphi.net以后可能会像VS.NET中的C#和VB.NET一样整合起来。不过如果Delphi.net仍然只是达到C#Builder的水平,估计很难和VS.Net竞争。C#Builder的架构版里面提供了一个ECO(Enterprise Core Objects),是一个进行MDA(模型驱动)开发的东东,从Borland提供的演示(http://dotnet.borland.com/bdntv/csharpbuilder/eco8x6.html)来看,的确是一个不错的东东,可惜Borland的技术文档根本没有跟上,在C#Builder里面也只提供了一个在线的ECO教程的在线链接,而且这个在线教程也基本上就是跟着这个演示走了一遍,没太多帮助。 C#Builder和Delphi.net中可能可以和VS.Net比比的东西:Janeva,可以在.net中直接引用J2EE组件ECO,一个MDA开发架构集成的Together,不过Together也有For VS.Net版本,而且VS还有XDE...[阅读全文]

posted @ | Feedback (0) |