WP7 - Windows Phone Class Lib與.NET Class Lib的差異

Windows Phone 7 – Windows Phone Class Lib與.NET Class Lib的差異

開發Windows Phone 7剛開始時,我一直遇到一個問題,就是想直接把.NET時期建立的Class Library放入WP7的專案中,

但VS2010總是提示了如下的訊息:

w1

那我就開始思考,「為何沒有辦法直接把.NET編譯好的Library直接加入至WP7的專案中,那又為何MS提供的一些Library卻可以?」

因此,在往下去探討之前,我們先來了解一下Windows Phone 7整個針對開發者所繪製出各模組元件之間運作架構圖:

從上圖可以發現到WP7如果透過是以Silverlight來開發的App,需特別注意在Silverlight支援的部分,由於Silverlight在WP7比較接近

提供呈現層與多媒體控制的部分(Silverlight Presentation and Media),當然Silverlight也有內鍵很多源的類別提供開發者完成任務,

另外,往下看到「Common Base Class Library」的部分,這部分都是常見的.NET Framework支援的項目,包括:Runtime、IO、Text等。

看到這裡,也許就開始疑惑了,這裡使用的Common Base Class Library與過去使用的.NET Library到底有什麼不同呢?

 

分別開二個不同的Library來看一下,

(a) 一般的.NET Library為例:

003 004

注意System的Dll檔來源。它採用的是.NET Framework為主要運作的架構。

 

(b) WP7的Library為例:

001 002

注意System的Dll檔來源。它採用的是Silverlight 4中專用於Windows Phone的System.dll。

 

由上述簡單的分類,可以看出二者最大的差別在於,整個在使用.NET Framework時,一定會參考的重要元素:

「System」與「System.Core」。這二個元素來源不同的dll,也代表著二者運作的runtime有所不同。

因此,不能直接把給.NET Framework的dll移動到WP7中的原因,是否可以了解了呢。

 

[解決方法]

針對已經開發的DLL檔,如果想要直接搬上WP7上使用,因為不同的Runtime架構,看起來是不太可行的作法,

但並不是沒有辦法解決,換個方法,我們一樣可以把原有的DLL檔,透過包裝的方式,讓WP7的App也可以使用。

(1) 將Dll包裝成為一個Web Service或WCF Service

透過此方式,需依賴手機具有上網的能力才能完成功能,例如:手寫輸入,我個人的猜測它是透過該方式來開發。

將dll包裝成新的Web Service好處可以讓原有的功能與邏輯可以繼續被保留下來,而且可以配搭網路的服務,

有效控管到時發佈出去的App使用量,或者在進行功能更新時,不需要重新發佈到marketplace等待審核。

----

以上是自己對於遇到為何過去開發一些好用的dll或第三方提供的dll沒有辦法正常使用於WP7的經驗,

當然我的經驗是比較少的,如果您在閱讀中有看過那些相關的解決方法,或是詳細的說明,也希望能分享給我。

 

[補充]

〉至於Windows Phone 7是否也使用Comptact Framework呢?

答案是Yes的。WP7內雖然透過Silverlight與XNA做為呈現層的部分,但底層仍保留部分.NET CF的模組,

用於控制Silverlight與XNA在runtime時期的一些流程與控制裝置運作硬體軟體處理邏輯。

至於原本透過Compact Framework開發的dll可否繼續使用呢?

這個我還沒有試過。我如果有新的測試結果,我會在補上來。

 

References:

.NET Compact Framework for Windows Phone 7 series

Windows Phone 7 Series Programming Model

Windows Phone 7 tools and the Compact Framework in Visual Studio 2010

Comparing Windows Phone with .NET Compact Framework 3.5

Windows Phone 7 - Compact framework?

Configuring your DomainService for a Windows Phone 7 application

Accessing WCF Data Services from WP7 CTP.

 

http://www.dotblogs.com.tw/ouch1978/archive/2011/03/16/wpf-stretch-listboxitem.aspx

http://msdn.microsoft.com/en-us/library/ff402535(v=vs.92).aspx

http://msdn.microsoft.com/en-us/library/gg490771.aspx

 

 

 

Dotblogs Tags: