感冒了

今天是上班第二天,结果却感冒了,十分郁闷。明天还要去体检,不知道会出现什么危险症状不?太恼人了!

从今天开始,要对InfoPath 2003进行一下研究,刚刚下载安装了InfoPath 2003的SDK,并且安装了里面的两个示例。是使用InfoPath来调用Web Service来得到/回填数据的。只不过由于是刚刚着手做,所以现在还没有实验成功。有哪位老大对这方面有研究的,希望能够不吝赐教一二笑脸

如果有对InfoPath应用感兴趣的朋友,可以点击左侧的Logo,查看相关的信息。如果对InfoPath开发感兴趣的朋友,可以到http://msdn.microsoft.com/office/infopath中下载相应的SDK文档。我们一起来研究一下吐舌笑脸

另外,博客堂杯征文活动已经告一段落了,准备与三位评委讨论一下大奖结果了。

千元大奖,你有兴趣吗?

悬赏寻求问题解决方案,所有博客堂网友及访客均有权夺奖吐舌笑脸

博客堂以后会定期推出一些技术问题,寻找解决方案,而且奖金都十分丰厚。希望大家能够在时间约束内给出解决方案。当然,所有解决方案我们只会取最佳解决方案的提供者给予奖励,而且不会公布此最佳解决方案的内容,请大家谅解。

本期问题如下:如何使用Windows Messenger或者MSN Messenger进行编程?

问题描述:

  1. 给出微软在其网站上提供的关于Windows Messenger与MSN Messenger编程的白皮书或者其它技术资料的链接地址(或者第三方的技术资料亦可),越多越好。要附上个人对这些资料的介绍。
  2. 按照以下需求写一个简单的Windows Application(使用C#语言):
    • 集成Windows Messenger控件及MSN Messenger控件在其中;
    • 可以使用Passport帐号访问微软即时消息服务器;
    • 可以使用代理服务器设置;
    • (可选)可以访问企业服务器内的Microsoft Live Communication Server
  3. 时间:2003-12-7至2003-12-10
  4. 奖金:人民币一千元整

请大家奖自己的解决方案发往[email protected]

一起来打太极(4)

遇到麻烦了!

嗯,让我先来整理一下思路,如何讲清楚这个问题。好的,就让我们这样来说吧,首先我们创建两个Project,第一个Project是Class Library,即类库的,里面有一个实体类及一个控制类,假设实体类如何下:

public class User
{
    public User()
    {
    }
   private string name;
   private int age;
   private DateTime birthDay;
   public string Name
  {
      get{return this.name;}
      set{this.name=value;}
  }
  public int Age
  {
       get{return this.age;}
       set{this.age=value;}
  }
  public DateTime BirthDay
  {
     get{ return this.birthDay;}
     set{ this.birthDay=value;}
  }

然后再做一个控制类,里面就一个方法,这个方法返回一个User[]的数组。

public User[] GetUser(){…}

OK,第二个Project是一个ASP.NET的Web应用程序,并且引用上面的这个Class Library,在其默认ASP.NET页面上放一个DataGrid,然后这个DataGrid的数据源指定为上面那个项目中的控制类的方法,即将DataGrid1绑定到一个User[]数组上,大家可以试一下,这是可以成功的。因为DataSource的数据源可以为实现了System.Collections.IEnumerable接口的对象,而数组类型是继承自System.Array的,System.Array实现了System.Collections.IEnumerable接口。

但是接下来,我们引入Web Service,即先解除ASP.NET的Web应用对于Class Library的引用关系,然后Web Service引用Class Library,而ASP.NET通过Web引用建立与Web Service项目的联系。如下图所示

ASP.NET__WEB引用__Web Service___引用____Class Library

在Web Service项目当中,建立一个Web Method对Class Library进行一下Wrap:

[WebMethod] public User[] GetUser()
{
   //直接调用Class Library中的GetUser方法,并且返回其结果;

然后在ASP.NET的默认ASP.NET页面中调用此Web方法,进行数据绑定,现在再查看,肯定会得到一个异常,说无法绑定。

我追踪了一下午,基本上发现了问题所在:

  • 当加入Web Service的时候,ASP.NET将User类进行了一个包装,注意,这时候的User不是Class Library中定义的User类了,而是Web Service Client端由VS.NET自己定义的一个User类;
  • Web Service中的这个User类所创建的数组无法进行数据绑定,甚至无法将这个类的数组通过强制类型转换转换为Class Library中声明的那个User类的数组。

问题就是这样,但解决方案尚未出来,希望哪位大侠不吝赐教!

需求又出来新版本了,数据库设计也基本上出来了。不过今天晚上他们又要去需求方汇报,不知道需求是不是还会改?

周末拜见了岳父岳母大人,已经正式取得合法的恋爱执照了尴尬的笑脸

一起来打太极(3)

又到了我们的太极时间。这几天开心被关了禁闭了,不仅要入住公司安排的饭店,而且每天晚饭也不能出去吃了,必须吃大锅饭,晚饭吃完后,没有休息时间,而是要继续工作到晚上十点。

公司的开发人员已经非常疲劳了,在我看来,这简直是一批溃军。由此我在想,那些国企的领军人物似乎真的都没有什么管理才能。他们总相信时间是海绵里面的水这样的观念,为了拼时间,而不停的压榨员工的休息时间。可是这样就能换取进度吗?我想不是吗?

其实这个项目的症结,还是在于需求确认上。上周六,监理组来了三位工程师(我十分佩服这三位工程师,那个161页的需求说明书其实就是他们执笔的),与这边的系统分析人员就需求进行确认,结果整个需求在监理组这边根本通不过,监理组认为分析师根本没有理会他们文档的意思。

周一晚上及周二上午,需求方来了十多位高官(需求方来头不小,是有执法权的),再次对需求进行确认(周六到周一,需求又被修改)。但是十分可惜的是,仍然没有通过,甚至需求方那十个人自己也无法把需求拿准,在内部就出现内讧的现象。整个需求分析在周一开到凌晨零点半左右。到最后仍然可以说没有结果。

第二天(周二)的需求分析会我就没有再参加,而且我要求我们的开发人员也都不参加了,我到了需要痛下决心的时候,把需求锁死。虽然一没有完整而且稳定的需求,二没有数据库设计(数据库设计由专人负责,不在我的掌控之内,本来周一晚上要给我数据字典,但一直到今天为止,我没有见到相关文档),但按照进度,项目已经不可能再拖了。

所以我把需求锁定为周一的那个快速原型(即使该需求有错误及不合理的地方),我们开发人员的目标就是在下周一前完成这个快速原型的一个模块,使用上次介绍的N层框架。

需求锁死后,我们发现很多事情都变得反而简单了。每个人的任务也比较清晰,虽然由于.NET的陌生的原因,部分开发人员并不熟悉开发方式,但他们的团队精神让我钦佩,到现在,完成的情况如下:

  • 数据提供层:100%已经完成;
  • 实体类:将实体类划分为三个模块,由于一个模块与需求关系过紧,现在没有涉及。另外两模块,一个完成30%,一个完成50%;
  • 业务逻辑层:下周一要完成的模块的接口定义已经基本完成,而接下来的模块则由一个高级开发人员专门负责进行设计及开发,不参与当前模块的开发。今天下午已经进入具体编码过程;
  • Web Service层:由于只是一个业务逻辑层的暴露接口,此部分的设计已经完成,代码开发在业务逻辑层结束后,仅需要两小时就可以完成(现在以伪接口形式提供);
  • Web Skin:由于需求的不确定性,在上周就已经将所有的界面都以Web User Control完成了(由于对ASP.NET的掌握情况,质量并不高)。

我相信下周一我们所定的目标能够初步完成,但是这个目标出来后,仍然会有很多Bug(我在这个阶段只负责技术难题的解决,不参与具体代码的开发),我希望在周一及周二进行两天的Code Review。然后就这段时间代码编写所暴露出来的问题进行探讨,并且讲解一下ASP.NET优化方式(其实做这个项目的同时,我们也在对大家的.NET技能进行培训)。

总的来说,我现在已经有了信心。而正是我的开发团队给了我信心,所以我决定在本周五,请我的开发团队成员们一起FB一次,如果哪位朋友有时间,欢迎来参加呀。

周末我可能要请假回家,准备拜见丈母娘了。

 

 

一起来打太极(2)

了,被锁住了,明天开始卷铺盖到该公司自己的饭店里面入住,要住一个月,一直跟到这个项目结束为止,周六周日也要在那儿加班,好命苦呀。据说那个单位是军工企业,被美军卫星从天上照着,凡在此进入频繁者,不允许入境美国,呜呜呜,明年的MVP Summit参加不了了。

 这两天开始进入详细设计阶段,前段时间,项目组的几位负责人最终与需求方定下了需求,当然,我们在详细设计阶段,还是发现了很多需求不清晰的地方,不过,这种情况经常发生,不是吗?

今天上午搭建了代码编写环境,并且初步分派了任务。共分为三组,一组去进行数据库设计,一组进行业务逻辑层的搭建(含数据层),另外一组进行Web设计。

Web组的成员主要是将前期的实用设计界面(即使用HTML+JavaScript搭建的快速原型)翻译为ASP.NET界面,不过不需要写任何代码,只要把相应的模块转换为ASCX就可以,并且签入到VSS当中。

数据库组的人员按照需求方提供的数据字典建立数据库(数据库系统是Oracle 9i,不知道性能如何),并且建立表间关系、存储过程之类的。

而业务逻辑层组的人员主要搭建实体类及业务操作类,以及数据层,同时为了保证结构优化,数据库组与业务逻辑层组的人员每天要会面一次,讲解一下各自的见解。

为了便于日后的NLB或者CLB的扩展需要,Web层将不会直接调用业务逻辑层的东西,而是通过中间的Web Service进行调用(今天演示了一把Web Service的创建,他们感觉非常酷。因为有人原来是使用Java的,现在对.NET服了,用JBuilder写Web Service,光WSDL文件就让人厌烦)。

现在有几个问题,一直没有想好:

  • 业务逻辑层中的实体类用什么比较好?是创建自定义的实体类还是直接使用DataSet,使用DataSet便于绑定,而使用自定义的实体类则效率较高。那么使用强类型的DataSet呢?会有什么问题吗?需要今天研究决定。
  • 开发过程中如何齐头并进?因为三层结构是纵向分割的,所以会存在相互依赖的关系。难道先是所有人一起上来去做数据层,然后再搭建业务逻辑层,最后一齐完成Web层吗?我不希望这样,所以分为了多组,在两天内不会出现问题,但下周开始,则会有一组人没有事情做。这是我不愿意看到的。
  • 缓存是在页面级做好,还是在业务逻辑层实现好?如何把关键层次的运行效率调整好?前几天看了ASP.NET的那个PPT,然后又去访问了http://www.asp.net,发现并没有像他们鼓吹的有多大的改善,甚至跟CSDN一样,越调整,速度越慢了(CSDN这几天成笑话了)。
  • 如何掌控程序中的Bug?在目前的态势下,根本没有办法按照MS的那一套来做。虽然我提出过可以使用BMS XP来试试,但项目负责人担心如此一来会使项目组的编程方式发生更改(不过也是,光使用VSS我就感觉他们就不习惯了)。

希望有经验的人能够给我一些见解,我也会在后续的过程中把太极十八式打好,供大家参考。

一起来打太极(1)

斯林总会带来一些惊喜,在排版上一直比较前卫,相当于技术博客中的木子美吧咧嘴笑脸,(知道我为什么把他比喻为木子美吗?只是为了点击率,呵呵)。

这两天在协助一家公司进行.NET开发,我作为外聘人员进入这个开发团队,蹲点一个月。

昨天进入后,发现一个情况,团队成员共有六个人员,可是基本上没有人了解.NET,甚至使用过ASP、JSP、PHP的人都甚少,其中有两个女孩子似乎只在大学里面学过C语言,没有过实际开发经验。而我得到的项目需求却有整整六十五页,而且目前需求还处于不明晰的时期。所以,第一天开始,我的心就有一些凉,感觉项目可能要延期。

然后我又查看了团队成员的学习方法,在他们身边查看他们如何学习,得到以下情况(以下无任何对我们的团队成员不敬的地方,只是用以归纳现象):

  • 过于相信技术经典:这似乎是很多初学者的毛病,对大部分人来说,如果接触一门新的语言或者系统,他们往往去书店里面买来所有相关的书籍,而且价格越贵越好(当然,有些人是花公司的钱,不会心疼)。 
  • 不知道如何下手:或者是VS.NET提供的功能过于丰富,很多人在接到项目中无从下手,虽然看了很多书及许多示例,但真要自己干活的时候,却没有概念,甚至会使用一些莫名其妙的怪招。
  • 基本概念不清晰:由于.NET一次提出来的新概念实在太多,响叮当甚至提出“世界上最困难的事,莫过于要你三句话讲清楚什么是.net……. ”,所以很多人对于一些基本概念不清晰,甚至会有人问我“Code Behind是不是就是面向对象”;
  • 不习惯使用调试(Debug):我第一次帮成员调试的时候,竟然发现他们机器上无法进行调试,然后在我询问后,发现大部分人都没有使用调试功能,或者不喜欢用调试。第一个的原因是因为使用Proxy,但忘记设置本地地址不使用Proxy的选项了。而第二个人竟然建立了一个空的Web项目,所有文件都手工加上的,就是没有加Web.config及Global.asax这些文件。

今天上午我自己做了一个简单的示例程序,即留言本。我想这个是每个人都用过的东西,所以也适合做初学者实验使用。然后下午开始在会议室,利用这个Demo为大家讲解如何上手一个.NET Project的开发,主要是Web User Control的应用、配置文件的使用、多项目开发、面向对象等等,讲解了一个小时,然后让他们用一天时间做出这个项目来。(我习惯于用这个程序带领别人入门,不过这次我没有让他们使用Web Service)。

明天准备给他们讲一下Visual Sourcesafe的使用,然后开始动手程序框架的编写工作。

 

熟悉Office System 2003及Biztalk的人站出来

现在有一个工作,使用Office System 2003及Biztalk进行开发工作流的项目,要求对微软的各种产品比较熟悉的人参与。

不过与我上次说的那个招聘一样,仍然需要在这段开发期间是全职的,在开发完成后,则需要另行寻找工作。不过待遇绝对优厚,以我的经验来说,这样的工作一天相当于你原来的工作的三天。当然,如果你更有价值,则可以一天相当于别人的一个月也不定。

当然,更详细的信息我仍然没有,只是有人找我做项目,而我目前没有时间,所以就把好处让给大家了。如果有更多北京的SOHO的就好了吐舌笑脸

我现在在一个国有企业工作,唉,节奏慢得跟打太极似的,我决定明天开始利用这段时间钻研Yukon+Whidbey咧嘴笑脸

冲刺,冲刺,最后冲刺!

今天完成了两个微软的项目,不过却有些后发先至的味道,呵呵。

本来在上周的时候就接了那个Windows Application项目,可是却一直没有完工,主要是自己的懒惰,加上一些误解(以为项目由他人代为完成了呢),所以现在才正式完成。在这个项目的进行中,得到了大家的帮助,在这儿表示感谢。

本周又做了一个Biztalk 2004的项目,记得上次已经说过了,而且这回与上次的Biztalk项目最大的不同就是,我们使用的是Biztalk 2004中文版,而且项目周期特别急,满打满算才四天。周五早上十一点演示的,我没有参加演示,而是直接回家睡觉了,第二天睡醒了,打电话去问,得知郊果还不错,真是十分高兴!

这个月开始,好象一直没有闲着,明天又接了一个为期一个月的项目。新的项目是ASP.NET开发,而且也牵扯到工作流的开发,不知道能不能说服他们使用Biztalk,我现在对Biztalk上瘾了,虽然我并不拿手。

另外,还有两个项目,由于实在忙不开了,只好求助于大家了,如果谁有空余时间,可以与我联系一下,ASP.NET的,要求在开发期间是全职的,开发完了,就脱离劳动关系,所以大家一定要想好,有工作的人就不要想了。而且外地的也不要想了。如果实在没有人想,我准备直接与小峰联系了。

 

一夜未睡

终于在四天内结束了这一阶段的开发。

九月份在微软做了一个Biztalk 2004的Demo,这几天又是在做Biztalk的Demo。说实话,虽然原来改编过一本Biztalk的书籍,但对Biztalk了解的仍然不够,尤其是Biztalk 2004的变化非常大(内部消息,Biztalk 2004的汉化已经97%了,不过帮助仍然是英文版的),与VS.NET完全的集成式开发就让我非常的感兴趣。

通过这两次项目,我深深体会到,在一个团队的开发当中,需求分析是多么的重要。由于项目都比较小,而且工期非常紧,上次是两周,这次就四天。所以在前期只是初步定了接口,越做越发现问题,其实真正的编码往往都在最后几天。尤其这次的项目,真正的编码似乎只是这一夜而已。越做越发现原来的思路有问题,尤其团队成员间也只能通过开发的进度达到思路上的统一。

总体来说,我是幸福的吐舌笑脸

 

欢迎大家继续基于Office System 2003开发

看了Moslem的新闻检索系统,感觉他做得实在太棒了,我相信这儿大部分人都是这样的感觉吧?

而且最主要的是他提供了很多这方面的资料,所以建议大家可以开发一下以下的几个产品:

  • 针对KB的检索
  • 针对MSDN Library的检索
  • 针对微软新闻组的检索

而且最好是把上面这三个检索放在同一个服务中,这样以后我们碰到相关的技术问题,就可以从IE或者Office当中得到解决。同时,为了便于客户端的开发,建议把业务逻辑做成类库,这样我们可以在上面分别包装成其它的Web服务,向客户端提供检索。

有人愿意做这样的工作吗?

另外,目前Visual Studio Tools For Office System也已经发布了,还有VSIP Extra SDK等,大家也可以基于这些技术进行一些开发,或者把自己的一些开发思路贡献出来,让博客堂能够引导开发新潮流咧嘴笑脸