可重复使用程序代码 + 可重复使用模型 = 更高的生产力
来源:互联网 发布:mysql 快速创建索引 编辑:程序博客网 时间:2024/04/29 17:46
可重复使用程序代码 + 可重复使用模型 = 更高的生产力
许多朋友最近见到我的时候经常出现的话题之一就是ECO,他们告诉我ECO非常地令人兴奋,他们都非常想要试试ECO,但是令他们困扰的是除了中文参考数据不多之外,就是想询问我ECO的可使用性。例如他们很怕ECO只能使用在BDS 2006的应用程序中,其他的应用,例如MS的C#,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 7的Web Service客户端应用程序,我们可以看到如下图所示的执行结果,ECO的服务果然成功地被Delphi Win32的应用程序调用、使用了。
Yah, 我们在Windows 32下使用Delphi 7就完成了使用由.NET ECO/MDA/DDA实现的业务逻辑服务。ECO强大的可重复使用性再次令人印象深刻。
了解了上面的讨论之后,各位有使用VS.NET的朋友当然也可以使用VS.NET的VB.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
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1243388
- 可重复使用程序代码 + 可重复使用模型 = 更高的生产力
- 可重复使用程序代码 + 可重复使用模型 = 更高的生产力
- 可重复使用程序代码 + 可重复使用模型 = 更高的生产力
- 可重复使用程序代码 + 可重复使用模型 = 更高的生产力
- 可重复使用的JS函数
- iOS可重复使用的折叠式表视图
- MonoRail学习笔记十九:可重复使用组件ViewComponents的使用
- MonoRail学习笔记十九:可重复使用组件ViewComponents的使用
- 0+个方便,可重复使用的jQuery代码片段
- 10+个方便,可重复使用的jQuery代码片段
- HDU 1072 Nightmare 【BFS (路径可重复使用)】
- 可重复使用的存储过程(增,删,改,查,分页)
- python实现找到给定列表中满足给定和的所有子列表,元素可重复使用
- 阿里云服务器9折推荐码,最新,可重复使用
- 文件变量的重复使用
- UITableView cell的重复使用
- 布局的重复使用
- InputStream对象的重复使用
- asp.net Excel导入&导出
- 转一条个人网站上的新闻。
- Delphi.NET多层应用系统开发技术研讨会
- 从厦门出差已回台湾——噢,下次我可要学乖了
- JAVA GUI中日期选择控件的实现
- 可重复使用程序代码 + 可重复使用模型 = 更高的生产力
- G后感想
- 有朋自网上来,不亦乐乎!
- 最新的BDS 2006和Turbo版本的Hotfix
- Delphi/Delphi.NET多层应用系统开发技术(II)
- Install the component Admin for tomcat
- 意料之外的收获!
- 收获丰富的两个星期和ECO OR Mapping
- 博文视点温馨提示:敬请大家关注10月26日李维先生与您相约CSDN,畅谈ECO