永久免费看黄A片无码软件,japanese 在线观看国产,强奷高H猛烈失禁潮喷播放,亚洲成精品自拍

rexian

咨詢電話:023-6276-4481

熱門文章

聯(lián)系方式

電 話:023-6276-4481

郵箱:broiling@qq.com

地址:重慶市南岸區(qū)亞太商谷6幢25-2

當(dāng)前位置:網(wǎng)站首頁 > 技術(shù)文章 > Silverlight WCF 初嘗小結(jié)

Silverlight WCF 初嘗小結(jié)

編輯:T.T 發(fā)表時間:2017-08-22 12:15:19
T.T

Silverlight是什么?怎么說呢?也許開發(fā)過WPF的人會有比較透徹的理解。Silverlight就像WPF提煉出來運(yùn)用到WEB上的插件。界面的開發(fā),程序部分的開發(fā)都集成了WPF的那一套,不過,既然是應(yīng)用到WEB上的,自然遵循了很多WEB的規(guī)則,因此也有些許區(qū)別于WPF,至少他們概念上就完全是兩個東西,這樣的比較就類似于WINFORM和 ACTIVEX。

 

Silverlight可以像FLASH一樣做出炫目的客戶端效果,同時擁有完善的開發(fā)構(gòu)架,程序員可以非常方便的處理Silverlight中的事件、調(diào)用系統(tǒng)庫,這是FLASH無法比擬的,當(dāng)然FLASH相對Silverlight來說,動畫和矢量的設(shè)計也許會更加得心應(yīng)手。

 

對于客戶端而言,Silverlight與FLASH基本上一樣,用戶都需要在瀏覽器上安裝相應(yīng)插件(Silverlight的插件小很多),展現(xiàn)出來同樣的有視覺沖擊力。所以對用戶而言,處了安裝的插件不同以外,其他似乎不存在什么太大的差異,這也是MS目的,只要用戶不認(rèn)為兩者有什么區(qū)別甚至Silverlight更好,那么,對開發(fā)人員的方便就是對MS的方便。

 

廢話多了。

 

如何搭建Silverlight的開發(fā)環(huán)境呢 ?

網(wǎng)上很多相關(guān)文章,給人的第一影響就是“麻煩”。沒錯,很麻煩,不像FLASH,安裝一個FLASH軟件就可以進(jìn)行開發(fā)。

Silverlight,需要很多部件支持。

  首先以目前的正式版本2.0來說,就需要VS2008 + SP1 ,VS的作用當(dāng)然是做程序部分的開發(fā),毋庸置疑,而且WEB的開發(fā)也用到它,所以先安裝個VS2008+SP1沒什么意見吧。

  之后,你會發(fā)現(xiàn)你的VS2008并不能創(chuàng)建 Silverlight應(yīng)用程序項目,為什么,因為你缺少 Silverlight Tool FOR VS2008 SP1 ,所以還要安裝一個 Silverlight Tool for VS2008 SP1。

  好了,可以在VS里創(chuàng)建Silverlight項目了,可以進(jìn)行開發(fā)了,VS支持界面預(yù)覽,但是不可編輯。而且用VS開發(fā)界面似乎不太現(xiàn)實,不用擔(dān)心,MS當(dāng)然也有它自己的界面開發(fā)工具  BLEND2 +SP1 ,BLEND里的示例是WPF的,所以可以知道,BLEND是開發(fā)WPF界面的,當(dāng)然用來開發(fā)Silverlight的界面也是小菜一碟。 VS08可以和BLEND2相互切換來完成界面和程序的開發(fā)。

    至此,就可以完成Silverlight的開發(fā)環(huán)境配置,配置好以后,.NET3.0 3.5會被默認(rèn)的安裝,這是需要注意的,因為開發(fā)過程中可能會用到3.0  3.5的庫,因此如果將項目發(fā)布到服務(wù)器后,也應(yīng)當(dāng)相應(yīng)的將.NET的這些版本安裝到服務(wù)器上。

 

 

好了,創(chuàng)建個Silverlight來玩玩吧。

 

創(chuàng)建Silverlight應(yīng)用程序項目的時候,VS會問你 是調(diào)試的時候生成測試頁來承載Silverlight還是自動創(chuàng)建個ASP.NET項目來承載Silverlight, 有什么區(qū)別呢 ?如果你只是做Silverlight的界面和客戶端的交互效果,用單獨(dú)的測試頁來承載就可以了,這樣方便調(diào)試,按個CTRL+F5就OK,但是如果你要用到WCF,或者通過ASP.NET做些動態(tài)的事情,那么就用ASP.NET項目來承載吧,這樣可以盡可能的模擬出將Silverlight承載到網(wǎng)站后的效果。

 

 

創(chuàng)建Silverlight后,你可以看到項目里有兩個XAML文件并相應(yīng)的對應(yīng)了.CS文件, 一個是APP.XAML另一個是Page.XAML,APP.XAML.CS的構(gòu)造函數(shù)是初始化Silverlight項目的,接下來 

private void Application_Startup(object sender, StartupEventArgs e)
        {
            this.RootVisual = new page();
        }

可以看到 new 后面的就是Page.xaml.cs所在的類。他的意思當(dāng)然就是創(chuàng)建Page示例,這樣你的Page就被實例化出來了,很像WINFORM吧。

 

 

之后的事情,個人認(rèn)為開發(fā)過.NET的人應(yīng)該都駕輕就熟了。需要注意的是,跟開發(fā)ASP.NET不同,  Silverlight的所有代碼是在客戶端運(yùn)行的,對于很多開發(fā)慣了ASP.NET的人來說可能一下子不習(xí)慣,不過如果你是做WINFORM的,那就當(dāng)我沒說。

 

試著寫一個小程序來玩玩吧。

 

東西做好了,當(dāng)然那就需要編譯。Silverlight在生成后會在BIN下生成一個APPMAINFEST.XAML,這是一些配置比如DLL的路徑,一個DLL,不用說了,邏輯代碼都在這。另外會有一個XAP,這是什么,其實就是剛才說的那兩個文件的一個壓縮包,可以ZIP RAR工具打開,他只是將后綴作為XAP,這樣在頁面上<object>調(diào)用的時候SOURCE就會指向XAP這個包。

 

就這么簡單,在WEB上用<object>承載這個生成出來的XAP包就可以顯示Silverlight了。

 

似乎太沒什么含量,感覺不出Silverlight的魅力。

那么就嘗試做個應(yīng)用了WCF的Silverlight吧。

 

WCF是什么?根據(jù)我了解的資料,WCF是一個統(tǒng)一的類似WEBSERVICE的解決方案,WEBSERVICE是WCF的一個子集。

他提供了更多更強(qiáng)的服務(wù)方案。

 

具體資料可以在MSDN上找到,廢話不多說了。

 

引用WCF等過程與以前引用WEBSERIVCE差不多,摸索下很快就了解了。

這里提一下需要注意的地方。

 

在引用 WCF后,Silverlight項目里會生成一個ClientConfig文件,如果WCF項目是單獨(dú)的,這個ClientConfig文件里不會寫入任何東西,你只會看見一個配置跟節(jié)點(diǎn)。

但是如果你的WCF是創(chuàng)建在某個ASP.NET項目里,這時候生成出來的ClientConfig文件里會有很多配置,例如綁定方式和服務(wù)ENDPOINT(服務(wù)提供的地址)。

 

 

以上綠色文字的地方是我之前的理解錯誤,ServiceReferences.ClientConfig內(nèi)是否自動生成配置信息是要看Silverlight引用的WCF是否啟用了Silverlight功能,而不是看WCF是單獨(dú)的項目還是在Web項目中的其中一項。所以在當(dāng)我們在在項目中創(chuàng)建一個“啟用Silverlight功能的WCF”后,在Silverlight項目中引用它時,ServiceReferences.ClientConfig文件就會自動配置出該引用的終節(jié)點(diǎn)和綁定。

 

 

實際上引用WCF之后,項目里只是創(chuàng)建了一個WCF所提供服務(wù)的類的結(jié)構(gòu),至于如何去綁定,去哪里請求服務(wù),都是由配置的Binding方式和ENDPOINTADDRESS來決定。

 

為什么引用一個單獨(dú)的WCF項目時不生成配置呢?因為在編碼過程中,程序員可以制定BIND和ENDPOINT,所以,個人認(rèn)為MS是為了讓你的應(yīng)用程序更加靈活,所以直接引用獨(dú)立的WCF項目是不會生成CLIENTCONFIG的配置的,然而,如果你的WCF服務(wù)是來自一個ASP.NET項目的話,那么Silverlight項目會認(rèn)為你將會把Silverlight承載到這個ASP.NET中的某頁去,因此就將BIND和ENDPOINT直接配置到了CLIENTCONFIG中。當(dāng)然,及時配置到了CLIENTCONFIG,在編碼中仍然可以指定BIND和ENDPOINT來覆蓋CLIENTCONFIG中的配置。

 

Silverlight在調(diào)用WCF服務(wù)是通過異步調(diào)用,因此代碼類似這樣:

 

private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        Binding binding = new BasicHttpBinding();
        EndpointAddress endPoint = new EndpointAddress(
                "http://localhost:52424/Blog.svc");

        BlogClient client = new BlogClient(binding, endPoint);
        client.GetPostsCompleted += new EventHandler<GetPostsCompletedEventArgs>(client_GetPostsCompleted);
        client.GetPostsAsync();
    }

    void client_GetPostsCompleted(object sender, GetPostsCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            Posts.ItemsSource = e.Result;
        }
    }

 

可以看到,當(dāng)你在WCF創(chuàng)建了一個類,調(diào)用的時候,該類會被命名成[類名]+Client,所以,看到別人調(diào)用的時候有個XXCLIENT,不要奇怪為什么上下文找不到其定義。

 

之后,類中的方法也會成為 方法+ASYNC  這是異步方法,在Silverlight中引用WCF就會出現(xiàn),而在ASP.NET項目中引用則沒有。

 

 WCF被Silverlight引用后,會生成一個事件,對應(yīng)方法  方法名+Compeleted,在事件上綁定好處理函數(shù),就完成了異步調(diào)用并異步返回了。

 

很簡單吧,比起AJAX來說,實在是方便很多。

 

注意看的朋友會發(fā)現(xiàn) 這里定義了個 Binding 類型的binding實例,和一個EndpointAddress 類型的endPoint,這就是之前我提到可以在編碼中手工指定 bind方法和Endpoint的地方,如果 ClientConfig里配置好了這兩個參數(shù),你也可以這樣寫

 

private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {

        BlogClient client = new BlogClient();
        client.GetPostsCompleted += new EventHandler<GetPostsCompletedEventArgs>(client_GetPostsCompleted);
        client.GetPostsAsync();
    }

 

 

當(dāng)然,及時ClientConfig里配置好了,也可以通過編碼的時候指定來更改這兩個參數(shù)。

 

 

如果完全理解了Silverlight+WCF怎么做,我想你可以輕松的完成一個小示例來享受下Silverlight的魅力。

 

但是可能大多數(shù)人在做Silverlight+WCF的時候會遇到一些郁悶的問題,典型的就是跨域訪問的問題。