ppt版本
找了眾多的方法,終於找到一種可以用的了
首先說明我使用的架構是User <=WCF=> Web Role <=Azure Queue=> Worker Role(Run MCR)
皆為64位元版本
在此只講Worker Role環境架設就好。
行前準備:
MCRInstaller.exe <== 自己想辦法得到
BootStrapper.exe <== Google "Windows Azure Bootstrapper"
vcredistx64.exe <== Google一下,可以抓到
AzureStorageExplorer4.exe <== Google "AzureStorageExplorer" (可以先在本機端上安裝)
動作:
1.將取得的MCRInstaller.exe
(在Windows Server 2008 R2的作業系統上執行安裝一次,建議安裝路徑為:D:\Program Files\MATLAB\MATLAB Compiler Runtime\v714\runtime\win64\ ,此範例使用64位元 R2010b版本,不同版本路徑會有差異,注意一下就好)
(沒電腦的話,開一台Worker role用遠端桌面登入安裝好後,再抓回來是個笨方法,但有時還蠻好用的...)
2.到剛安裝的路徑D:\Program Files\,把MATLAB整個資料夾用"zip"壓縮起來,在此命為MATLAB.zip
3.開啟AzureStorageExplorer,在你的Blob中建立新的Container名為initfile
4.將MATLAB.zip上傳到雲端Blob的initfile下
5.將vcredistx64.exe上傳到雲端Blob的initfile下
6.開啟你的雲端專案,在ServiceDefinition.csdef 的WorkerRole部分,設定Startup 和 Runtime如下:
7.在WorkerRole的環境中增加連接字串 "ConnectionString" ,並將他定為放置MATLAB.zip的Storage位置
8.在WorkerRole的專案中加入新的檔案名為InstallVcredistx64.cmd,設定"永遠複製",其檔案內容如下:
d:\vcredistx64.exe /q
9.在WorkerRole的專案中加入BootStrapper.exe (和 BootStrapper.exe.config),設定"永遠複製"。
10.將D:\Program Files\MATLAB\MATLAB Compiler Runtime\v714\toolbox\dotnetbuilder\bin\win64\v2.0\MWArray.dll加到WorkerRole的專案中,順便將自己要用的DLL一起加入,並設定"永遠複製"。
注意:自己的DLL也要用相同本版的Matlab編譯成的才行
11. 確認其他的專案也弄好後,就可以發佈了,發佈的服務位置最好和Storage相同,不然起始時會很慢。
by Keng-li.Lin
2012年3月8日 星期四
2011年8月24日 星期三
WCF Service中 使用 App_Data 資料夾
張貼者:
Kelly
於
8/24/2011 02:31:00 下午
使用 HostingEnvironment.ApplicationPhysicalPath (namespace: System.Web.Hosting)
可以取得WCF Service實體位置
故可使用 Path.Combine 來組合出App_Data的路徑,如下:
by Keng-li.Lin
可以取得WCF Service實體位置
故可使用 Path.Combine 來組合出App_Data的路徑,如下:
string App_Data_Path = Path.Combine(HostingEnvironment.ApplicationPhysicalPath,"App_Data");
by Keng-li.Lin
2011年8月23日 星期二
利用WCF服務實現傳輸大型檔案
張貼者:
Kelly
於
8/23/2011 01:56:00 下午
最近和學弟一起玩 Windwos Azure 雲端開發,使用WCF服務時發現的一個問題
"參數不能傳送較大的檔案"
原來是要把檔案用Stream 或 byte[]的方式放在服務參數的方式來實現Server - Client互傳檔案時
會一直出現記憶體配置錯誤
WCF服務契約中有預設傳送內容大小
所以要實現這的方式需要手動更改服務契約內容
如下修改範例~
1.打開Windows Visual Studio 2010(我只有這版...
新增一個C#的WCF服務應用程式,做為Server端(在此範例中取名叫 WCFServerSite)
另外在新增一C#的Windows Form應用程式,做為Client端(WCFClientStie)
2.在WCFServerSite的IService1.cs中增加一OperationContract
2.在WCFServerSite的Service1.svc.cs中定義 UploadData的內容
ps. 由於UploadData中使用到寫檔指令,須確認IIS是否有開起寫入權限。
3.將Service發布到IIS中(此範例所設定的發佈路徑是 http://localhost/WCFServerSite/Service1.svc)
Client端中參照的命名空間名稱設為SR
在Form中新增一Button和OpenFileDialog元件
Button內容如下:
確認Client端可正常使用服務參照,且使用一般小檔(1-3kb)傳輸。
4.修改Server端 Web.config設定
設定如下:
5.修改Client端 app.config設定
設定如下:
6.這樣就完成了~
盡量不要為求方便設定太大,少量多傳才是好的架構!
"參數不能傳送較大的檔案"
原來是要把檔案用Stream 或 byte[]的方式放在服務參數的方式來實現Server - Client互傳檔案時
會一直出現記憶體配置錯誤
WCF服務契約中有預設傳送內容大小
所以要實現這的方式需要手動更改服務契約內容
如下修改範例~
1.打開Windows Visual Studio 2010(我只有這版...
新增一個C#的WCF服務應用程式,做為Server端(在此範例中取名叫 WCFServerSite)
另外在新增一C#的Windows Form應用程式,做為Client端(WCFClientStie)
2.在WCFServerSite的IService1.cs中增加一OperationContract
// 增加新的服務
[OperationContract]
string UploadData(Stream SourceStream);
2.在WCFServerSite的Service1.svc.cs中定義 UploadData的內容
public string UploadData(Stream SourceStream)
{
byte[] buffer;
FileStream TargetFS = new FileStream( System.Web.Hosting.HostingEnvironment.MapPath("~") + "\\Temp.file", FileMode.Create);
try
{
BinaryReader BR = new BinaryReader(SourceStream);
BinaryWriter BW = new BinaryWriter(TargetFS);
do
{
buffer = BR.ReadBytes(1024);//可自行調整
BW.Write(buffer);
}
while (buffer.Length > 0);
BW.Close();
}
finally
{
SourceStream.Close();
TargetFS.Close();
}
return string.Format("Good Job");
}
ps. 由於UploadData中使用到寫檔指令,須確認IIS是否有開起寫入權限。
3.將Service發布到IIS中(此範例所設定的發佈路徑是 http://localhost/WCFServerSite/Service1.svc)
Client端中參照的命名空間名稱設為SR
在Form中新增一Button和OpenFileDialog元件
Button內容如下:
private void button1_Click(object sender, EventArgs e)
{
SR.Service1Client SRC = new SR.Service1Client();
openFileDialog1.ShowDialog();
try
{
MessageBox.Show(SRC.UploadData(openFileDialog1.OpenFile()));
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
確認Client端可正常使用服務參照,且使用一般小檔(1-3kb)傳輸。
4.修改Server端 Web.config設定
設定如下:
5.修改Client端 app.config設定
設定如下:
6.這樣就完成了~
盡量不要為求方便設定太大,少量多傳才是好的架構!
訂閱:
文章 (Atom)


