2014年5月19日 星期一

C# 取得程式路徑的幾個方法

1.獲取和設置當前目錄的完全限定路徑。
string str = System.Environment.CurrentDirectory;


Result: C:\xxx\xxx


2.獲取啟動了應用程序的可執行文件的路徑,不包括可執行文件的名稱。
string str = System.Windows.Forms.Application.StartupPath;

Result: C:\xxx\xxx


3.獲取新的 Process 組件並將其與當前活動的進程關聯的主模塊的完整路徑,包含文件名。

string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

Result: C:\xxx\xxx\xxx.exe


4.獲取當前 Thread 的當前應用程序域的基目錄,它由程序集衝突解決程序用來探測程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;

Result: C:\xxx\xxx\


5.獲取應用程序的當前工作目錄。

string str = System.IO.Directory.GetCurrentDirectory();

Result: C:\xxx\xxx


6.獲取和設置包含該應用程序的目錄的名稱。
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

Result: C:\xxx\xxx\


7.獲取當前進程的完整路徑,包含文件名。
string str = this.GetType().Assembly.Location;

Result: C:\xxx\xxx\xxx.exe


8.獲取啟動了應用程序的可執行文件的路徑,包括可執行文件的名稱。string str = System.Windows.Forms.Application.ExecutablePath;

Result: C:\xxx\xxx\xxx.exe

2014年5月16日 星期五

Web Service 怎麼寫



Web Service 初探(一)

Web Service入門 #1,透過VS 2005/2008/2010 撰寫一個Web Service





WebService是放在IIS上提供給Client做資料存取、交換用的
撰寫的方式很簡單,上面兩個教學很輕鬆讓你撰寫出來
也誠如其名,他跟WINDOWS服務一樣,永遠等待著、服務著,只是在網路上而已


而WCF是WebService的一種,更進化的,推出之後,讓大家更多一種選擇,而且WCF更強大,他甚至不用跑在IIS之上,可以在任何程式中把這個WCF給new出來,就讓這個程式提供這個服務,可以跟其他人交換,機制上也更完整,更安全。

NO
功能
Web Service
WCF (原名 Indigo)

.NET Farmework
.NET 1.1 以上
.NET 3.5 以上

Hosting
可建置於 IIS
可建置於 IIS, Windows Activation Service, Self-hosting, Windows Service

Programming
定義 [WebService] Attribute 於類別
定義 [ServiceContract] Attribute 於類別

Model
使用 [WebMethod] Attribute 公開可見的方法
使用 [OperationContract] Attribute 公開可見的方法

Operation
One-Way, Request - Response 於 Web Service 中支援各種操作
One-Way, Request - Response, Duplex 於 WCF 中支援不同類型的操作

XML
使用 System.Xml.Seriallzation 命名空間進行序列化
使用 System.Runtime.Serialization 命名空間進行序列化

Encoding
XML 1.0, MTOM(Message Transmission Optimization Mechanism), DIME, Custom
XML 1.0, MTOM, Binary, Custom

Transports
透過 HTTP, TCP, Custom 溝通
透過 HTTP, TCP, Named Pipes, MSMQ, P2P, Custom 溝通

Protocols
配合 WSE 可支援 WS-*,提供安全性
支援 WS-*,提供安全性、可靠性、交易

State Management
無狀態
可管理狀態

Other

整合 Enterprise Sevices(COM+)、.Net Remoting、Web Service(ASMX)、WSE3.0 和 MSMQ

2014年3月11日 星期二

RIA是什麼?

Rich Internet Application是一種在網際網路上運行的應用程式,有著如同桌面應用程式的行為、功能、快速回應、直覺與體驗,也融合了網際網路應用程式的容易開發的與低成本的特性。RIA結合桌面應用程式與網路的優點。(Macromedia, 2003)

Q:RIA和Flash網站有什麼不同?
A:Flash網站與RIA的最大差異在於RIA能夠操作資料並與之互動,而傳統的Flash網站僅止於視覺化的呈現。(McMullin, J. & Skinner, G., 2003)
Q:RIA有什麼好處?
A:
對企業的好處:
提高交易量
應用更夠更快的上線
降低應用開發與維護成本
對資訊部門的好處:
降低基礎設施建置成本
提昇開發效率
支援工業標準
對使用者的好處:
互動而即時的體驗能夠降低使用者挫折
降低新手的學習曲線
單一畫面的使用者介面能夠節省時間
(Macromedia, 2003)

2014年3月10日 星期一

Team Foundation Server 之初始化設定


微軟的Team Foundation Server(以下簡稱TFS)是個非常好用的版本控管系統. 但是相對的. 設定上也很複雜. 在很容易地安裝步驟之後. Server端跟Client端都提供很多細膩的設定. 在觀念上跟預期的有所不同. 在Server端可以建立 [ 專案集合 ]. 但是要建立專案必須從Client端的Visual Studio 201X(以下簡稱VS)當中連上之後來建立專案.(備註一). 而建立專案之後就可以設定工作區來設定本地端跟Server端的對應關係. 有時候Server端會有多個階層. 在對應關係當中就要選擇好.要從正確的階層. 不然有可能會從最高層對應到本地端. 會造成本地端多了幾層目錄. 這樣在某些限定絕對路徑的專案就無法正確的執行了. 所以要懂得如何設定路徑對應關係就變得很重要. 這部分請參考 詳細說明.














那麼怎麼讓Client端透過VS連到TFS呢?請在該TFS上建立系統使用者. 並且設定密碼(請該使用者過來設定他在Client端的使用者密碼. 兩者要一致). 然後在專案集合中將該使用者加入正確的權限群組即可.


































備註一 :


在建立專案的時候必須注意到版本的問題.若Team Foundation Server大於VS的版本. 就會發生權限不足的情況而無法建立專案. 此時的解法是去下載跟Server相同版本的Team Explorer for Microsoft Visual Studio. 版本相同才能連接到TFS去建立專案.

2013年12月25日 星期三

什麼是響應式設計?


拜行動裝置上網普及,因此目前 Responsive Web Design 響應式設計 這個 Web 設計方式很熱門,而要做到這個設計,必須要先認識CSS3 Media Queries,這個可以讓你根據裝置或瀏覽器的長寬不同,而可以有不同的CSS呈現,比方,當夠寬的時候,會呈現三個Column(不是真的欄,是排版的欄)。縮小的時候,可能剩下兩個或甚至一個,而原本有橫向的多個選項,也可能被合併成一個按鈕或LIST,點了才會展開,......等等


所以,什麼是響應式設計呢?就是會彈性的根據你裝置的尺寸不同,呈現不同的外觀,相同的內容,並讓使用者在最適當的、最少需要用手指放大滑動的一種設計概念。

2013年11月14日 星期四

JS的Timer

JS給了網頁兩種Timer,其實是一樣的東西,只是用法跟行為有一點點不同罷了


setInterval()跟一般常見的Timer沒有太大的差異,就是持續的間隔一段時間就執行一段程式(一個函式)
setTimeOut()則是隔一段時間之後,一段程式(一個函式)會被執行一次,就這麼一次。




先介紹setInterval()吧,常用兩種呼叫型態,一個是就直接把要做的程式,寫在參數裡function()中,通常要做的事情應該不多才會這樣寫吧,不然不美觀啊。底下的範例,就是每三秒鐘執行一次alert。


var MyTimer = setInterval(function(){alert("Hello")},3000);

另外一個,則是先把函式寫好然後以函式呼叫當成參數。比方底下的例子就是每五秒呼叫一次 doSomething()看裡面要做什麼事情。



var MyTimer = setInterval( "doSomething()", 5000 );


function doSomething ( )

{
  // (do something here)

}


怎麼清除或停掉這個Timer呢?很簡單,就是 clearInterval( MyTimer );對,就在剛剛你疑惑的地方,呼叫函式其實setInterval()其實會傳回一個 Timer物件(或ID)就是用來當你想清除或停掉他的時候用的。






相同的寫法,可應用在setTimeOut()上,非常的簡單。我就不重複寫了

2013年11月6日 星期三

更改 JQuery UI Dialog 的標題 Title (在已經 Create 了之後)

第一時間想到的是更改該 Div 的 Title 屬性,但是,不是這樣用的,也就是說


<div class = "Div_Message" title = "我是訊息對話框" >

</div>

這個對話框在經過以下建立過程之後

$( '.Div_Message' ).dialog( 
{
autoOpen: false,
resizable: false,
width:500,
height:300,
modal: true
         } );

被$('.Div_Message').dialog( 'open' );把視窗叫出來之前
即便用了$( '.Div_Message' ).prop( "title",  "我把訊息改掉" );也沒有用



因為語法不是這樣用的
被$('.Div_Message').dialog( 'open' );把視窗叫出來之前
應該要$('.Div_Message').dialog('option', 'title', '我把訊息改掉'); 才對


2
3
4
5
// getter
var title = $( ".selector" ).dialog( "option", "title" );
// setter
$( ".selector" ).dialog( "option", "title", "Dialog Title" );