gordonliweiID:gordonliwei
167305次访问,排名441好友0人,关注者10
gordonliwei的文章
原创 43 篇
翻译 0 篇
转载 0 篇
评论 266 篇
李维的公告
最近评论
quzhoushijie:gby杭州机票
杭州打折机票
杭州特价机票
WoW GoldWoW Gold
myshijieye:饰品加盟
浙江整形医院
浙江省人民医院
myshijieye:粉末涂料
购物篮
充电器
艺术漆
myshijieye:健康管理
飞凌
网络跳线
配线架
文章分类
    收藏
      相册
      作品集
      个人网站链接!
      博文视点读书热线(期书早知道)
      李维个人网站!
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 可重复使用程序代码 + 可重复使用模型 = 更高的生产力收藏

      新一篇: 最新的BDS 2006和Turbo版本的Hotfix | 旧一篇: 从厦门出差已回台湾——噢,下次我可要学乖了

      可重复使用程序代码 + 可重复使用模型 = 更高的生产力

      许多朋友最近见到我的时候经常出现的话题之一就是ECO,他们告诉我ECO非常地令人兴奋,他们都非常想要试试ECO,但是令他们困扰的是除了中文参考数据不多之外,就是想询问我ECO的可使用性。例如他们很怕ECO只能使用在BDS 2006的应用程序中,其他的应用,例如MSC#VB.NET,或是WinCE是否能够使用。我告诉他们未来ECO会支持WinCE,此外ECO是纯粹的.NET应用程序,其他的.NET语言或是应用程序当然也可以使用,甚至连Win32的应用程序都可以使用ECO提供的服务。怎么做? 那当然就是使用Web Services了。

      让我简单地用一个Win32的应用程序范例来说明如何使用ECO服务吧。下图是我经常使用的一个范例业务逻辑模型,请各位注意的是,我甚至可以使用OCL来定义类的方法运算,这样一来,这个类图就更容易移植到其他平台,例如Java平台。

       

      现在在BDS 2006中建立一个ECO ASP.NET Web Service应用程序(见下图):

       

      然后在产生的Web Services中(*.asmx文件)加入如下的Web Services方法:

      [WebMethod]

      function GetDevCoSeminarCount : Integer;

      [WebMethod]

      function GetDevCoSeminar : TDevCoSeminarList;

      然后实现如下:

      function TDevCoSeminarService.GetDevCoSeminar: TDevCoSeminarList;

      const

        SEMINARCOUNT = 'DevCoSeminar.allInstances';

      var

        OclService: IOclService;

        ResultElement: IElement;

      begin

        OclService := EcoSpace.GetEcoService(typeof(IOclService)) as IOclService;

        ResultElement := OclService.EvaluateAndSubscribe(nil, SEMINARCOUNT, nil, nil);

        Result := CreateDevCoSeminarDTOs(ResultElement);

        DoneWithEcoSpace;

      end;

       

      function TDevCoSeminarService.CreateDevCoSeminarDTOs(

        ResultElement: IElement): TDevCoSeminarList;

      var

        al : TDevCoSeminarList;

        anElement : IElement;

        aSeminar : DevCoSeminar;

        aDTO : TDevCoSeminar;

        iIndex : Integer;

      begin

        SetLength(al, ResultElement.GetAsCollection.Count);

        iIndex := 0;

        for anElement in  ResultElement.GetAsCollection do

        begin

          aSeminar := anElement.AsObject as DevCoSeminar;

          aDTO.FName := aSeminar.Name;

          aDTO.FLocation := aSeminar.Location;

          aDTO.FSrDate := aSeminar.srDate.ToLongDateString;

          aDTO.FMaxCount := aSeminar.MaxCount;

          al[iIndex] := aDTO;

          Inc(iIndex);

        end;

        Result := al;

      end;

      接着编译这个ECO Web Service应用程序,等待稍后的Win32客户端应用程序调用,使用它提供的服务。

      现在我再使用Delphi 7(或是BDS 2006中的Delphi For Win32)建立一个VCL Form应用程序,启动WSDL Importer向导输入刚才开发的ECO Web Service应用程序的WSDL

       

      接着在VCL窗体中实现如下的程序代码来调用ECO Web Service应用程序:

      procedure TForm1.Button1Click(Sender: TObject);

      var

        aWS : TDevCoSeminarServiceSoap;

        wsResult : ArrayOfTDevCoSeminar;

        icount : Integer;

        aSeminar : TDevCoSeminar;

        sData : String;

      begin

        aWS := GetTDevCoSeminarServiceSoap;

        edtCount.Text := IntTostr(aWS.GetDevCoSeminarCount);

        wsResult := aWS.GetDevCoSeminar;

        for iCount := Low(wsResult) to High(wsResult) do

        begin

          aSeminar := wsResult[iCount];

          sData := aSeminar.FName + ':' + aSeminar.FSrDate + ':' +

                   aSeminar.FLocation + ':' + IntToStr(aSeminar.FMaxCount);

          ListBox1.Items.Add(sData);

        end;

      end;

      上面的TDevCoSeminarServiceSoap就是WSDL Importer向导封装远程Web Service应用程序的wrapper类。编译并且执行这个Delphi 7Web Service客户端应用程序,我们可以看到如下图所示的执行结果,ECO的服务果然成功地被Delphi Win32的应用程序调用、使用了。

       

      Yah, 我们在Windows 32下使用Delphi 7就完成了使用由.NET ECO/MDA/DDA实现的业务逻辑服务。ECO强大的可重复使用性再次令人印象深刻。

      了解了上面的讨论之后,各位有使用VS.NET的朋友当然也可以使用VS.NETVB.NET或是MS C#来使用ECO提供的服务了。

      使用了ECO技术,ECO不但是“Write code once and Run everywhere”,甚至是“Model 你的business logic once and reuse everywhere”,“Reuse Code + Reuse Model”那不是让开发人员的生产力更为提高吗? 

       

       

       

       
       
       
       

       

       

       

       

      李维先生简体版博客由博文视点陈元玉编辑负责繁转简以及版式设计,如有疑问敬请您与编辑联系,联系方式:chenyy@broadview.com.cn

      发表于 @ 2006年09月19日 09:08:00|评论(loading...)|编辑

      新一篇: 最新的BDS 2006和Turbo版本的Hotfix | 旧一篇: 从厦门出差已回台湾——噢,下次我可要学乖了

      评论

      #小豆豆 发表于2006-09-19 14:59:00  IP: 218.247.136.*
      JAVA的开发人员急需象ECO这样的开发工具。JAVA开源的框架太多,各有专攻,缺乏统一的RAD方法论的支持,造成JAVA程序的成本太高。JAVA程序员的梦想是有一个象ECO或vs2006一样有开发效率的开发工具,且多提供一些UI的组件。
      #糖醋鼻子 发表于2006-09-19 23:31:00  IP: 222.223.195.*
      嗯嗯
      WebService的威力确实很大
      尤其是有了ECO这个强大的框架,再加上AJAX或者其他多元素的客户端软件(DELPHI Win32、Flex、XXX)哇!好丰富啊。最重要的就是,最复杂的业务逻辑终于有主心骨了。
      另外,李老师能否提供一些ECO的资料,教程或者文档什么的。英文的也行,好想系统的学一下。谢谢
      #cnodin 发表于2006-09-27 08:53:00  IP: 222.76.228.*
      说真的,Borland做这种小例子看着挺让人兴奋的,但是真正在项目中使用总感觉不太稳定。
      #quzhoushijie 发表于2008-07-21 08:24:44  IP: 60.176.212.*
      gby杭州机票
      杭州打折机票
      杭州特价机票
      网站推广
      搜索引擎
      网站优化
      网站改版
      google优化
      杭州百度代理商
      杭州百度包年
      杭州网络推广
      杭州网站推广
      搜索引擎优化
      杭州网站优化
      杭州网站改版
      杭州google优化
      杭州SEO
      杭州网站建设
      建德网站建设
      杭州网站改版
      富阳网站建设
      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © 李维