2007 年 09 月 的封存

Highlander歷險計劃2 : 如何使用Delphi.NET建立,使用BlackfishSQL的預儲程序(Stored Procedure)下篇

最後PerfTest010行呼叫CallStoredProcedure來呼叫真正執行企業邏輯的預儲程序。由於這是一個範例文章,因此我使用了比較笨的方法來呼叫INSERTINTOTESTDATA這個預儲程序,目的是為了展示用戶端也可以使用如下的方法呼叫預儲程序。

CallStoredProcedure中先使用連結物件建立一個新的命令物件,再藉由執行CALL
INSERTINTOTESTDATA(:iCount)
命令來呼叫INSERTINTOTESTDATA,由於INSERTINTOTESTDATA需要接受一個建立資料筆數的參數值,因此008012行就是建立,設定參數物件最後013行呼叫命令物件的ExecuteNonQuery方法呼叫INSERTINTOTESTDATA預儲程序。

001   
procedure TDataStoreStoredProcTest.CallStoredProcedure(iCount :
Integer);

002    var

003     
Command: DbCommand;

004     
CountParameter: DbParameter;

005    begin

006     
Command := FConnection.CreateCommand;

007     
Command.CommandText := ‘CALL INSERTINTOTESTDATA(:iCount)’;

008     
CountParameter:= Command.CreateParameter;

009     
CountParameter.ParameterName := ‘iCount’;

010     
Command.Parameters.Add(CountParameter);

011   

012     
CountParameter.Value := TObject(iCount);

013     
Command.ExecuteNonQuery;

014    end;

至於InsertIntoTestData方法就是使用命令物件以及參數物件執行INSERT INTO SQL敘述在測試資料表中隨機產生測試資料。從InsertIntoTestData中可以看到使用Delphi.NET撰寫預儲程序可以使用Delphi.NET程式語言和框架服務來提供強大的計算能力。

class procedure
TDataStoreStoredProcTest.InsertIntoTestData(const Connection: DbConnection;
const iCount: Integer);

var

  FCommand:
DbCommand;

 
IdParameter: DbParameter;

 
NameParameter: DbParameter;

 
EmailParameter: DbParameter;

  AddressParameter:
DbParameter;

 
PhoneParameter: DbParameter;

 
MDateParameter: DbParameter;

 
Transaction: DbTransaction;

  Index:
Integer;

begin

  FCommand :=
Connection.CreateCommand;

 
FCommand.CommandText := ‘INSERT INTO TBLTESTDATA (ID, NAME, EMAIL, ADDRESS,
PHONE, MDATE) VALUES (:ID,:NAME,:EMAIL,:ADDRESS,:PHONE,:MDATE)’;

  IdParameter
:= FCommand.CreateParameter();

 
IdParameter.ParameterName := ‘ID’;

 
NameParameter := FCommand.CreateParameter();

 
NameParameter.ParameterName := ‘NAME’;

 
EMailParameter := FCommand.CreateParameter();

 
EMailParameter.ParameterName := ‘EMAIL’;

 
AddressParameter := FCommand.CreateParameter();

 
AddressParameter.ParameterName := ‘ADDRESS’;

 
PhoneParameter := FCommand.CreateParameter();

 
PhoneParameter.ParameterName := ‘PHONE’;

 
MDATEParameter := FCommand.CreateParameter();

 
MDATEParameter.ParameterName := ‘MDATE’;

 

 

 
FCommand.Parameters.Clear;

 
FCommand.Parameters.Add(IdParameter);

 
FCommand.Parameters.Add(NameParameter);

 
FCommand.Parameters.Add(EmailParameter);

 
FCommand.Parameters.Add(AddressParameter);

 
FCommand.Parameters.Add(PhoneParameter);

 
FCommand.Parameters.Add(MDateParameter);

 

  Transaction
:= Connection.BeginTransaction;

  for Index
:= 1 to iCount do

  begin

   
IdParameter.Value := TObject(Index);

   
NameParameter.Value := GetStringData(10);

   
EMailParameter.Value := GetStringData(30);

   
AddressParameter.Value := GetStringData(60);

   
PhoneParameter.Value := GetStringData(10);

   
MDateParameter.Value := DateTime.Now;

   
FCommand.ExecuteNonQuery;

  end;

 
Transaction.Commit;

end;

編譯完成的Delphi.NET Package專案,向BlackfishSQL伺服器註冊使用Delphi.NET撰寫的預儲程序

編譯預儲程序之後,編譯Package專案讓它在BlackfishSQL的執行目錄下產生Dll,之後我們需要向BlackfishSQL伺服器註冊使用Delphi.NET撰寫的預儲程序,這有好幾種方法,可以撰寫程式來註冊或是使用SQL WindowIDE中。

要使用SQL WindowIDE中註冊,先點選IDE中的Data Explorer,點選欲註冊的BlackfishSQL資料庫,點選滑鼠右鍵,選擇SQL Window如下所示:

http://tkfiles.storage.live.com/y1pzGurgrznJM2cqqyMtPEyLXCThcKxFLEM-AC8VONuitYSdX_RlC9ZwXwu0-LwXfhJ_Jaf_K0iDZg

接著在SQL Window下方使用下面的命令(其實這就是前面在實作預儲程序時於CREATE METHOD中使用的命令:

CREATE METHOD INSERTINTOTESTDATA AS
“pDelphiNETBKDemo::uBlackfishSQLStoredProcTest.TDataStoreStoredProcTest.InsertIntoTestData"

並且點選SQL Window左上方的執行按鈕就可以完畢註冊預儲程序的工作

http://tkfiles.storage.live.com/y1pzGurgrznJM14U7ntekHlcM4n_EjBR3Mz4hW9zZZA50IoPj1bJoKhixJSX3mlSbrszfAg14P08VY

撰寫用戶端Delphi/Delphi.NET應用程式呼叫使用Delphi.NET撰寫預儲程序

完成註冊之後我們就可以在用戶端執行Delphi.NET的預儲程序了,最簡單的方法就是使用dbExpress中的TSQLStoredProc元件,但是目前RAD Studio 2007中有一個小臭蟲讓TSQLStoredProc元件暫時無法執行Delphi.NET的預儲程序,Steve已經答應會在稍後出的Update中修正。目前的要在用戶端執行Delphi.NET的預儲程序只能暫時使用前面CallStoredProcedure展示的方法,另外在BlackfishSQL開發者手冊中供說明了三種方式可以讓各位參考。

http://tkfiles.storage.live.com/y1pzGurgrznJM18oaliwYqa9GTXmyyNwmVHN8TONn8Oz_ApmkTHj1mmboWKCxZ-pNswkKGfjK-HC68

OK,到這裡一切就完成了,現在您就可以享受Delphi.NET預儲程序帶來的高執行效率了。真是一篇相當長的部落格文章啊,也算是一篇技術文章吧,我們下次應該開始討論使用ECO建立VCL.NET的桌面型或是C/S架構的應用程式了,Bye And Have Fun!

2 則迴響

Highlander歷險計劃2 : 如何使用Delphi.NET建立,使用BlackfishSQL的預儲程序(Stored Procedure)上篇

BlackfishSQL是內附在RAD
Studio 2007
中的純.NET資料庫,可以執行為桌面端資料庫,本機Server資料庫,C/S資料庫或是分散式資料庫,也可以直接執行在Delphi.NET的應用程式程序中,非常有彈性。我在產品發表和其他的Demo中也引起了許多人的興趣,有許多朋友希望能夠知道更多有關BlackfishSQL的技術,因此我前一陣子已經把一個錄像和BlackfishSQL的開發參考手冊上傳到我的Delphi網站讓有興趣的朋友可以下載參考。

BlackfishSQL一個最吸引人的地方就是可以使用Delphi.NET語言來撰寫BlackfishSQL的預儲程序,觸發器和UDF(User Defined Function)。在RAD Studio
2007
中包含了一個BlackfishSQL觸發器的範例可以參考,但卻沒有預儲程序的範例。

其實在BlackfishSQL開發者手冊中就有如何使用Delphi.NET撰寫預儲程序的說明而且相當的清楚,不過由於BlackfishSQL開發者手冊

1.        
建立Delphi.NET Package專案

2.        
設定Delphi.NET Package專案編譯後dll輸出的目錄為BlackfishSQL伺服器執行的目錄。例如RAD Studio 2007安裝後BlackfishSQL執行目錄在RAD Studio 2007bin目錄。

3.        
Delphi.NET Package專案中建立一個程式單元(Unit),在此程式單元中使用Delphi.NET撰寫預儲程序

4.        
編譯完成的Delphi.NET Package專案,向BlackfishSQL伺服器註冊使用Delphi.NET撰寫的預儲程序

5.        
撰寫用戶端Delphi/Delphi.NET應用程式呼叫使用Delphi.NET撰寫預儲程序

使用Delphi.NETBlackfishSQL撰寫預儲程序有許多的好處,例如

n         
我們可以使用Delphi/Delphi.NET程式語言寫完所有的程式碼,而無需在資料庫中使用另外的語言來撰寫預儲程序/觸發器/UDF

n         
因為是使用Delphi.NET撰寫預儲程序,因此我們可以在預儲程序中使用所有Delphi.NET程式語言以及.NET Framework提供的強大功能以及框架服務,例如可以使用Delphi.NET撰寫需要複雜的計算的資料處理工作

n         
使用Delphi.NET撰寫預儲程序可以提供超快速的執行效率

例如下面的表格是我使用三種方式藉由dbExpressBlackfishSQL中隨機產生1000筆測試資料的執行結果,可以看到在這樣的運算中使用BlackfishSQLDelphi.NET預儲程序甚至比直接使用Delphi Win32原生的dbExpress驅動程式還快了10倍的速度。因此雖然Delphi.NET + dbExpress.NET是最慢的,但是一筆資料處理的平均速度也只有0.3秒左右,尚可接受,不過如果我們讓Delphi.NET直接呼叫BlackfishSQLDelphi.NET預儲程序,那麼就可以比使用原生Win32+dbExpress更快了。

 

新增1000筆測試資料到BlackfishSQL資料表

Delphi 2007 + dbExpress

3.665

Delphi.NET + dbExpress.NET

34.79

Delphi.NET + Delphi.NET BlackfishSQL預儲程序

0.33

http://tkfiles.storage.live.com/y1pzGurgrznJM0f84L20Rn8PZsFkH7j_rRhSH_e0KViMlCyV1I1G9V3WGOeRNJPOHJ268emnR5L_Tg

雖然我使用了非常簡單的運算來產生測試資料,但是這些測試資料仍然需要執行一些計算,因此這顯示了使用Delphi.NET預儲程序的好處,因為我們可以直接使用Delphi.NET程式語言在預儲程序中進行必要的運算,因此不但比使用SQL撰寫預儲程序來得有彈性,也提供了比SQL更強大的計算能力。

不過使用Delphi.NET撰寫預儲程序和傳統使用SQL撰寫預儲程序的不同是開發人員必須在使用Delphi.NET撰寫的預儲程序中使用ADO.NET技術來處理資料而不是使用SQL

瞭解了上述基本的觀念和使用撰寫預儲程序的好處和限制之後,我們就可以開始詳細的說明如何完成上述的5個步驟並且就以我撰寫的新增測試資料做為範例來說明。

建立Delphi.NET Package專案

這個步驟很簡單,只需要點選File|New|Others功能表,在Delphi.NET Projects分類中選擇建立Package圖像:

http://tkfiles.storage.live.com/y1pzGurgrznJM1MnXycuc4ENQrN4tG9NOQFiCWlEWo5dNl147PSBxeXkYE3kw2TSfQpSZZC_oNc2h0

設定Delphi.NET Package專案編譯後dll輸出的目錄為BlackfishSQL伺服器執行的目錄。

在專案管理員中點選滑鼠右鍵,點選Options|Directories並且設定Output directoryBlackfishSQL的執行目錄:
http://tkfiles.storage.live.com/y1pzGurgrznJM2P-E1fxJ9oxvfVGVAtdacsYL9jehKAy9c-9kB8PVKRlX4ywoUY09kcqybypwZdXxs

Delphi.NET Package專案中建立一個程式單元(Unit),在此程式單元中使用Delphi.NET撰寫預儲程序

點選File|New|Others功能表,在Delphi.NET Projects|New Files分類中選擇在Package專案中建立一個新的程式單元:

http://tkfiles.storage.live.com/y1pzGurgrznJM10piEIEmDHv_3c_mIZw_ywZ_htO2-YMixe2ADyO5RW1OiVe5H3nfmkZd8kLqDGTzs

接著我們需要在程式單元中建立一個Delphi.NET類別,對於要讓用戶端呼叫的預儲程序,我們需要在這個類別中建立一個靜態類別程序或是靜態類別函式,實作這個靜態類別程序或是靜態類別函式並且稍後註冊靜態類別程序或是靜態類別函式,之後用戶端才能夠以預儲程序呼叫他們

例如在我的範例中,我在程式單元中建立了一個TdataStoreStoredProcTest,並且在其中宣告了兩個靜態類別程序,這兩個程序事實上都可以讓用戶端以預儲程序呼叫,不過InsertIntoTestData接受一個DbConnection參數,因此InsertIntoTestData是準備做為In-process預儲程序呼叫,或是由用戶端呼叫PerformTest,再由PerformTest呼叫InsertIntoTestData

 
TDataStoreStoredProcTest = class

  public

    class
procedure PerformTest(iCount : Integer); static;

    class
procedure InsertIntoTestData(const Connection: DbConnection; const iCount:
Integer); static;

PerformTest在接受了用戶端以預儲程序呼叫之後它會呼叫InsertIntoTestData進行最後的新增測試資料的工作,除此之外我也讓PerformTest進行了一些其他的工作以便展示如何刪除和建立資料庫相關的物件。PerformTest首先在第005建立TDataStoreStoredProcTest物件,因為PerformTest是類別靜態程序,稍後我們需要建立DbConnection/DbCommand物件,而這些物件需要儲存在TDataStoreStoredProcTest物件中,否則類別靜態程序是無法存取物件樣例變數的。

006行呼叫TDataStoreStoredProcTestConnect方法以便讓Delphi.NET預儲程序連結BlackfishSQL

001    class
procedure TDataStoreStoredProcTest.PerformTest(iCount : Integer);

002    var

003     
Test: TDataStoreStoredProcTest;

004    begin

005      Test
:= TDataStoreStoredProcTest.Create;

006     
Test.Connect;

007      try

008       
Test.DropSchema;

009       
Test.CreateSchema;

010       
Test.CallStoredProcedure(iCount);

011     
finally

012       
Test.DisConnect;

013      end;

014    end;

Connect方法首先使用DbProviderFactories取得連結BlackfishSQLFactory物件,再由Factory物件建立和BlackfishSQL的連結物件,開啟連結,010行設定連結物件到PerformTest在第005建立TDataStoreStoredProcTest物件的FConnection變數中,最後Connect011行使用連結物件建立命令物件,再把命令物件設定到TDataStoreStoredProcTest物件的FCommand變數中以便稍後使用。

001   
procedure TDataStoreStoredProcTest.Connect;

002    var

003     
Factory: DbProviderFactory;

004     
Connection: DbConnection;

005    begin

006      
Factory := DbProviderFactories.GetFactory(BlackfishSQLInvariantName);

007      
Connection := Factory.CreateConnection;

008      
Connection.ConnectionString := MyConnectionString;

009      
Connection.Open;

010      
FConnection := Connection;

011      
FCommand := Connection.CreateCommand;

012    end;

下面便是TDataStoreStoredProcTest類別中宣告的FConnectionFCommand兩個物件變數。

  private

   
FConnection: DbConnection;

    FCommand:
DbCommand;

  end;

接著PerformTest008行呼叫DropSchema把測試資料庫中的建立的範例預儲程序和範例測試資料表刪除。DropSchema分別呼叫DropProcedure刪除範例預儲程序和呼叫DropTable刪除測試資料表。DropProcedure就使用前面建立的命令物件執行DROP METHOD方法刪除參數指定的預儲程序,DropTable也使用前面建立的命令物件執行DROP METHOD方法刪除參數指定的資料表:

001   
procedure TDataStoreStoredProcTest.DropSchema;

002    begin

003     
DropProcedure(‘INSERTINTOTESTDATA’);

004     
DropTable(‘TBLTESTDATA’);

005    end;

006    

007   
procedure TDataStoreStoredProcTest.DropProcedure(const ProcedureName:
String);

008    begin

009     
FCommand.Parameters.Clear;

010     
FCommand.CommandText := ‘DROP METHOD ‘ + ProcedureName;

011      try

012       
FCommand.ExecuteNonQuery;

013     
except

014      end;

015    end;

016   

017   
procedure TDataStoreStoredProcTest.DropTable(const TableName: String);

018    begin

019     
FCommand.Parameters.Clear;

020     
FCommand.CommandText := ‘DROP TABLE ‘ + TableName;

021      try

022        FCommand.ExecuteNonQuery;

023     
except

024      end

接著PerformTest009行呼叫CreateSchema再重新建立範例預儲程序和範例測試資料表。CreateSchema也是使用前面建立的命令物件執行這兩個工作,它分別呼叫CREATE
TABLE
方法和CREATE METHOD方法。

001   
procedure TDataStoreStoredProcTest.CreateSchema;

002    begin

003      FCommand.CommandText := ‘CREATE TABLE
TBLTESTDATA(ID INT PRIMARY KEY, NAME VARCHAR(10), EMAIL VARCHAR(30), ADDRESS
VARCHAR(60), PHONE VARCHAR(10), MDATE TIMESTAMP)’;

004     
FCommand.ExecuteNonQuery;

005     
FCommand.CommandText := ‘CREATE METHOD INSERTINTOTESTDATA AS
“pkDelphiNETBFSPDemo::uBlackfishSQLStoredProcTest.TDataStoreStoredProcTest.InsertIntoTestData"‘;

006     
FCommand.ExecuteNonQuery;

007    end;

注意,這裡有一個關鍵就是如何建立稍後實作的Delphi.NET預儲程序。在呼叫CREATE METHOD方法時開發人員必須給這個預儲程序取一個名稱,例如上面的程式碼中取的預儲程序名稱就是INSERTINTOTESTDATA,之後我們必須告訴CREATE METHOD方法實作預儲程序的Delphi.NET程序的完整名稱,這個完整名稱是由預儲程序存在的Package名稱,程式單元名稱,類別名稱以及實作的方法名稱組成。下面的圖形說明了這個規則:

CREATE METHOD INSERTINTOTESTDATA AS
“pkDelphiNETBFSPDemo::uBlackfishSQLStoredProcTest.TDataStoreStoredProcTest.InsertIntoTestData"

http://tkfiles.storage.live.com/y1pzGurgrznJM3FDr4W_X9XnwQxy--OcjROx_RrhBUEBmMTqRdwQ3jL5ivf1IWatPtl1Bh4r2zW5yc

3 則迴響

RoR和ECO : 讓我們建模吧!

我剛Post3rdRailRoR的文章之後,實在不能不提ECO,因為兩者實在有太多相同的地方,我也使用RAD Studio 2007ECO IV做了一個和RoR
Weblog
類似的錄像並且Posthttp://liwei.csdn.net/Delphi.asp讓有興趣的朋友下載,最好是把3rdRail+RoRRAD Stduio+ECO兩個錄像一起觀看,您就可以瞭解在這兩個技術中Model是軟體開發的中心,有了正確,完善的Model之後,其他的就可以很迅速的開發了。

 

 

RoR

ECO

使用的軟體工程

MVC

MDA/DDA

用戶端

Web Client

Web
Client/VCL.NET

支援Ajax

Yes/Rjs

Yes/Atlas/.Net
Ajax library

使用程式語言

Ruby

Delphi.NET/C#

OR Mapping

Yes/ActiveRecord

Yes/ECO
Framework

Database Migration

Yes

Yes

Model Design

Yes/Codes

Yes/Together

12 則迴響

3rdRail : RoR開發工具的王者現身

3rdRailCodeGearBorland脫離之後自行研發的全新Ruby On Rails IDE3rdRail不但展現了真正傳統Borland的研發能力,由一個小團隊使用SCRUM軟體工程自主發展,3rdRail這個產品也充分展現了CodeGear R&D現在活力十足的旺盛戰鬥力,我似乎也在3rdRail身上看到10幾年前Borland的光彩重現

3rdRail是基於DLTKWTP開發出來的RoR IDE,如果您熟悉DLTK/WTP因此而認為3rdRail基於這兩個比較原始的架框開發出來的IDE一定沒什麼大不了,那麼您可能會跌破眼鏡,因為3rdRail開發團隊不但充分的運用了這兩個架框,而把他們發揮到了令人無法置信的境界。在我已經有4年歷史的Notebook中同時執行3rdRailNetBeans時,3rdRail不但執行得比較快,在功能豐富度上更是超越了NetBeans。更重要的是3rdRail做為RoR IDE,不僅提供了傳統IDE以專案為角度的開發方式,更重要的3rdRail是第一個允許RoR開發人員以Rails的角度來開發RoR專案,在3rdRailRoR開發人員可以享受到以RoR/MVC為開發流程的first-class整合發展環境。

3rdRail開發團隊在研發之初便採用了SCRUM和敏捷開發的軟體工程,讓整個開發周期以不可思議的速度和品質前進,3rdRail也充分的證明了SCRUM和敏捷開發在一個小型開發團隊中可以有令人不可置信的高效率,當然一個擁有高度聚合性和充分合作的開發團隊是使用SCRUM和敏捷開發的成功基石。

3rdRail的發展也非常的有趣,充分反映出3rdRail架構師視野的轉變。在今年一開始時,3rdRail的研發名稱是RedDiamnd,其實它的意思就是CodeGear想研發一個Ruby IDE,但隨著3rdRail開發團隊以驚人的速度不斷在每一個Sprint中超越目標之後,3rdRail的研發名稱稍後便改為rBuilder,意思是它是Ruby Builder,也可以是RoR Builder,這時已經展現了3rdRail開發團隊的雄心,他們要在1.0的版本中便達成研發出一個RoR IDE的意圖,因為那時的3rdRail早已超越只是一個Ruby程式語言的IDE而已。當3rdRail進入1.0的研發的末期時便正式改名為:3rdRail,這不是意謂3rdRail將為Rails帶來第3波的革新呢?

3rdRail推出之後已經讓許多著名的Ruby/RoR專家大為驚訝,因為3rdRail的表現實在不像是一個1.0的產品,也讓許多著名的Ruby/RoR專家決定試著使用3rdRail來進行RoR專案的開發,例如到目前為止已經有下面的一些重量級的Ruby/RoR專家對3rdRail做出了如下的評語:

"As the author of Ruby and a
developer, I am more than pleased that the CodeGear’s development tool
joins the Ruby developer community. As Borland tools helped me a lot when I
just began to do programming, it is a great honor to see that a CodeGear tool
supports the language that I designed." Yukihiro Matsumoto, Ruby
程式語言的發明人, upon which Ruby on Rails is based.

 

"CodeGear’s
new 3rdRail IDE represents an important step in tooling for Ruby on Rails.
They’ve gone beyond macros and generators and dealt with Rails code on a
logical rather than merely textual level. This opens up a whole new world for
things like advanced refactorings. And in general provides an environment
that’s familiar to anyone coming from IDE-heavy environments like .Net or J2EE
[Java 2 Platform, Enterprise Edition]." David Heinemeier Hansson, Ruby on Rails
的發明人

 "CodeGear has announced their new Rails IDE
— 3rdRail — and it is awesome.
This is only the beginning. It is a great beginning, and worth the $299
introductory price in my book, but it is only the beginning. These guys brought us
Delphi, including the VCL — the best component
framework ever.
They brought us JBuilder, and a lot more."

"I
never thought I’d see another Rails IDE which impressed me as much as NetBeans
Ruby has, but it seems I was wrong
. 3rdRail, a new release from Borland’s tool division,
CodeGear, has recently been released. This Eclipse-based IDE is specifically
designed to streamline Rails development to the greatest degree possible."
Daniel Spiewak on EclipseZone.
http://www.eclipsezone.com/eclipse/forums/t101561.rhtml

 

在過去幾個月中我一直在使用3rdRail來學習,使用RoR,每次使用3rdRail都充滿了愉悅,也在每個星期的Sprint周期結束之後期待3rdRail的每一個新的Beta版,現在我終於可以使用3rdRail的正式版來進行RoR的開發和研究了。我建議對RoR開發有興趣的朋友到下面的URL下載3rdRail的試用版:

http://www.codegear.com/products/3rdrail

 

我也使用3rdRail做了一個錄像,這個錄像展示的當然就是著名的如何使用RoR10鐘內建立一個簡單的部落格,各位看看結合RoR3rdRail的開發是多麼的方便,有興趣的朋友可以在下面的URL下載。

http://liwei.csdn.net/3rdRail.asp

 

Have Fun!

7 則迴響

Highlander歷險計劃1

最近CodeGear的新產品又熱鬧上場了,這1季的兩個產品RAD Studio 20073rdRail都是許多人等待許久的產品。RAD Studio 2007集合了Delphi 2007 Win32/C++Builder 2007
Win32
,支援 .NET Framework 2.0Delphi.NET以及我個人最喜歡的技術:ECO IV 3rdRail則是CodeGear第一個推出的ROR IDE,也是我前一陣子幾乎每天都在使用的IDE之一。雖然這2個產品我個人都非常喜歡,但我也知道對於許多大中華的朋友來說可能有著不同的感覺,因為產品可能很好,但是卻不會使用,因為沒有中文的文件,CodeGear的手冊也還沒有盡如人意。

我個人無法改變這個現象,只能反映給CodeGear儘快的強化產品手冊讓客戶都能滿意。在那之前我會使用個人的時間儘量的補充技術文章以及錄像好對使用CodeGear產品的朋友有一點幫助。在Highlander推出之後,我就一邊玩著ECO IV,順便使用ECO IV寫個小工具來幫助我管理我想完成的工作。當然這的事情在許多的軟體中已經提供了,但我的想法是一方面使用ECO IV來寫讓我自己更瞭解ECO IV,另外則是我想使用SCRUM的軟體工程來幫助我。例如在下面的工作表格中列出了我想完成的工作,對於每一項工作我使用一個Product Backlog來追蹤管理,而每一個Product Backlog則有數目不同的Sprint Backlog來一步一步的完成。

工作

上傳RAD Studio 2007Slides和範例檔案

修改個人網站

….

Product
Backlog

上傳產品發表會相關檔案讓客戶下載

增加個人網站內容

….

 

Sprint
Backlog : Sprint 0

連結網站Server

壓縮SlidesDemos

上傳壓縮檔案

撰寫部落格文章通知客戶

 

於是我開始了下面的步驟來撰寫這個應用程式並且萌想了乾脆開始一個Highlander的旅程計劃,這個計劃將提供許多的錄像以及部落格文章或技術文章來輔助。例如我使用ECO IV加上VCL.NET實作了下面的工具程式來幫助我執行Highlander的旅程計劃:

http://tkfiles.storage.live.com/y1pzGurgrznJM1NaCLHAGHm6cxIDq1moLV96sSUxrP8Bt-lNPJbZpYZxIHkfMjIKVqBCBjqC5kVXZE

我從建立Highlander的旅程計劃模型開始,一開始模型很簡單,隨著Sprint的進行模型開始複雜化,但是藉由ECO IVOR MappingDatabase Schema演化功能持續的在Sprint周期中進行開發。

一開始我只為工作事項建模,接著加入Product Backlog:

http://tkfiles.storage.live.com/y1pzGurgrznJM0Gm4XZpuDrbcBCnr3UVjgFK7kp4BTKNwM9VYAkyIc7yy4qiWC3BhRGSxWvqW7gK5k

再加入Backlog Item:
http://tkfiles.storage.live.com/y1pzGurgrznJM3XwMVodSkEnpqtBTbnb7RWnSGtd_yhpz8CKRKdYdb9EQs36WiSSO2tFxKT2v8zVKc

整個VCL.NET程式似乎和以前使用VCL架框開發的一模一樣,因為ECO IV可以和VCL的資料感知元件連結,讓ECO IV藉由Handle取得的物件集(Object Set)就像傳統的資料集(Data Set)一樣。但我是使用MDA/DDA的方式開發系統。當VCL.NET應用程式可以順利的執行並且維護資料後,我再結合ASP.NET來進行查詢和簡單的資料維護的工作,ECO IV的模型可以立刻的重覆使用在Web介面的應用中:

http://tkfiles.storage.live.com/y1pzGurgrznJM2MUSvQeaaE_Im2ADPQavicWn6mfWQzm3awYR0bQTjY74LaObMY21CxvgCSgmYHz_4

這整個系統使用的資料庫就是BlackfishSQL,因此在稍後的文章中我們也會討論BlackfishSQL技術。在我們討論BlackfishSQL資料庫的技術細節之前,我已經做了一個錄像讓各位可以立刻的瞭解如何使用BlackfishSQL進行開發的工作。我建議有興趣的朋友先下載觀看,您可以在下面的URL中下載:

http://liwei.csdn.net/down/Delphi/BlackfishSQL/BlackfishDemo1.rar

在您瞭解了如何在RAD Studio 2007中使用BlackfishSQL之後,您也可以到CodeGear或是我的Delphi技術網站下載BlackfishSQL的開發者手冊。我的Delphi技術網站在 :

http://liwei.csdn.net/Delphi.asp.

或是從我的個人網站http://liwei.csdn.net/.index.asp
中進入

這個網站是我剛使用自己閒暇的時間建立的,沒有什麼美工也沒有什麼fancy的功能,但我會繼續的把我自己寫的和Delphi/Delphi.NET相關的東西上傳到這裡。

接著我會陸續的上傳ECO IV的錄像,由於我個人時間的關係,因此每個錄像可能不會很長。下次就讓我從Product
Backlog
開始:

  

項目

敘述

優先順序

1

建立企業邏輯模型

最高優先

2

根據企業邏輯模型建立資料庫綱要

最高優先

3

建立VCL.NET專案

最高優先

4

開發應用程式

最高優先

5

建立ASP.NET專案

高優先

6

….

 

 

 

 



之後再進入詳細的,進入ECO IV Sprint周期吧,現在要去做錄像了,Bye

19 則迴響

RAD Studio 2007產品發表會Slides和範例下載

由於昨天我連不上提供下載的網站因此直到今日才完成上傳檔案的工作,在此向昨日欲下載的朋友說聲抱歉。對於RAD Studio 2007產品發表會Slides和範例有需要的朋友可於下面的URL下載:

http://liwei.csdn.net/down/RADStudio2007SlidesAndDemos.zip

22 則迴響