RSS

Monthly Archives: 十一月 2003

解决了那个SharePoint的小问题

昨天因为在SharePoint中应用Office2003带的那个“STSUpld.UploadCtl”本地文件导航和上传控件的问题而发了点牢骚,今早一打开偶的Blog就看到ccboy在“严肃”的教育偶,“SPS是一个非常有文化背景的产品–奇特的出生”,然后受到发条木偶的启发,赶紧跑去http://download.microsoft.com看看是否有更新版本下载。

搜索的结果让偶吃了一惊,SharePoint Services的版本已经更新了,最新发布日期是两天前,SharePoint SDK也更新了,最新发布日期是10/27,显然比正式版刚发布时偶下载的新多了。于是赶紧下载回来,定位到文档中“STSUpld.UploadCtl”那一页,内容多了N多,后面还提供了一个Sample,哈哈,狂笑…

让偶郁闷的是,MSDN中SharePoint Service的在线SDK居然仍然是刚发布时的那个版本,偶一直都盯着那里,以为文档的更新应该会最先在在线文档中体现出来呢,晕…

 

Posted by on 2003/11/28 in 未分类

4 Comments

Tags:

MS对SharePoint的支持力度…?

因为想在部门基于SharePoint的项目里面做一个嵌在页面里面的客户端文件浏览和多文件上传的东东,所以前两天用VB写了个ActiveX控件在弄,正在想方设法提高文件上传的效率,今天上午就在文档里面发现客户端在安装了Office2003后,会自动安装一个“STSUpld.UploadCtl”的ActiveX控件,SharePoint Portal Server里面就是用这个“标准”的控件来进行多文件的上传。

于是偶就“兴高采烈”的开始计划用这个东东了,接下来马上发现,除了一页基本上没有多大用处的控件说明之外,没有任何文档说明如何用这个东东,页面里面如何用这个东东来把文件上传上去,没有任何资料,不管是SharePoint的SDK还是MSDN还是Google…

在进行基于SharePoint Service 2.0进行开发的过程中,我“深刻”的感受到微软对这个产品好像并不是非常重视,根本没有提供全面的技术文档支持,于是暗自怀疑,SharePoint这个东东不知微软到底支持度如何…要知道,基于微软的平台做东西,最害怕的就是微软的产品策略和支持策略。

或者,微软只是希望我们直接用SharePoint Portal Server,而不鼓励基于SharePoint Service的开发?

 

Posted by on 2003/11/27 in 未分类

5 Comments

Tags:

朋友landws做的一个ORM Component

    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 by on 2003/11/21 in 未分类

2 Comments

被CDOEXM折磨了一把

下面是我原先用的调用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.IMailboxStore
Dim oADsUser As ActiveDs.IADsUser

oADsUser = GetObject(adsuserPath) ‘ 这里的adsuserPath就是用户的LDAP路径
oMailboxStore = oADsUser

oMailboxStore.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 by on 2003/11/19 in 未分类

21 Comments

Web Application的设计是很重要的

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 by on 2003/11/18 in 未分类

6 Comments

一周的工作又过去了…

1、部门项目开始上线内部测试,因为开发环境和运行环境的不同,问题多多,做了两天消防员。教训:开发阶段就保证开发环境尽量接近运行环境,可以避免后期的很多不可预期的问题和时间延迟。

2、Blogcn.com服务器宕掉,他们据称用了4路Xeon的数据库服务器和2路Xeon的Web服务器,好像是用的ASP。我禁不住暗暗想,如果换成.Net的系统,是否能支撑更多的用户呢(抑或更少)?

3、要看的书进展缓慢,每天都很晚睡,办公室喝咖啡的杯子因为承受太多热水冲击而裂开了…

 

Posted by on 2003/11/14 in 未分类

3 Comments

这两天忙得焦头烂额

部门的SharePoint项目开始在机房的服务器上正式测试了。在使用WinServer2003作为域控器的开发环境中跑得好好的程序到了使用Win2000Server作为域控器的运行环境中就出了问题,代码死活无法通过AD在域里面建立用户。全盘用微软的东东就要承受代码在不同环境中运行有可能产生意想不到的后果的烦恼。到现在仍然没有解决这个问题,下午技术经理无奈的说先把后续的一些代码写完,这个问题可能是域控器上的安全策略引起,他会再去看看。

因为太忙,这两天都没顾上收邮件,今天下午把Foxmail打开,130多封邮件,其中非垃圾邮件数量为2,一封是博客堂发送的随笔留言信息,一封是在CodeProject订阅的邮件。自己同时想到,即时通讯软件的流行和人们随时在线的特点使得像MSN Messenger、QQ这样的软件在工作、生活中的重要性越来越大。不少“新一代”的网民从来没有使用过电子邮件,而代之以QQ的离线信息。

http://www.Blogcn.com也瘫了两天了,估计是上面的木子美太火,火得服务器终于受不了了,可怜我寄宿在上面的生活Blog也一起瘫掉了。

 

Posted by on 2003/11/12 in 未分类

评论关闭

Tags:

受到大家影响,也开始关注MS的KB了

今天下午调试一段程序时,一个问题不得其解:

在域中一台服务器(非域控器)上运行的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 by on 2003/11/10 in 未分类

评论关闭

“Edit-and-Continue”特性

在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 it wasn’t in there. ”

帖子后面又有一个人说,在PDC大会上,在一个与专家交流的机会中,他和一些人与鼎鼎大名的Anders(Delphi、VJ、C#的设计者,偶的偶像)进行了交流,当时就有人提出了为何C#没有加入这个特性的问题,Anders表示并不欣赏这种编码和调试技术,所以估计C#不大可能会增加这个特性了。

参见:
http://www.asp.net/Forums/ShowPost.aspx?tabindex=1&PostID=385629

 

Posted by on 2003/11/06 in 未分类

评论关闭

Exchange这东东…

这两天都在看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 by on 2003/11/06 in 未分类

20 Comments