欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
最先進(jìn)的技術(shù):Windows Workflow Foundation
發(fā)布日期: 2006-4-28 | 更新日期: 2006-4-28
下載本文的代碼:CuttingEdge0603.exe (663KB)
本頁(yè)內容
常見(jiàn)業(yè)務(wù)方案
應用 Windows Workflow Foundation
技術(shù)支持解決方案
人為因素
技術(shù)支持前端
狀態(tài)持久性
恢復工作流實(shí)例
結論
在 2006 年 1 月號中,Don Box 和 Dharma Shukla 介紹了 Windows® Workflow Foundation,并討論了框架的整體體系結構及其構成組件(請參閱WinFX Workflow:Simplify Development With The Declarative Model Of Windows Workflow Foundation [英文])。這篇文章促使我想進(jìn)一步討論這個(gè)主題,并介紹如何使用 Windows Workflow Foundation 來(lái)處理自動(dòng)進(jìn)程與人工活動(dòng)貫穿相交的這種常見(jiàn)業(yè)務(wù)方案。它為開(kāi)發(fā)和執行基于復雜過(guò)程的多種應用程序提供了框架。典型示例包括文檔管理應用程序、企業(yè)對企業(yè)應用程序和企業(yè)對消費者應用程序。用戶(hù)可以使用 Visual Studio® 2005 幫助設計基礎工作流以及有關(guān)的頂級應用程序和程序集。
常見(jiàn)業(yè)務(wù)方案
對于訂單處理、采購申請、差旅費用之類(lèi)的任務(wù),各組織通常會(huì )設有許多內部進(jìn)程。工作流使這些獨立進(jìn)程以透明、動(dòng)態(tài)、有效的方式按順序進(jìn)行。
讓我們看一個(gè)典型的技術(shù)支持工作流進(jìn)程。在技術(shù)支持人員接到客戶(hù)電話(huà),并開(kāi)立記錄客戶(hù)姓名、來(lái)電時(shí)間和問(wèn)題簡(jiǎn)要說(shuō)明的票證時(shí),進(jìn)程即算開(kāi)始。創(chuàng )建票證之后,該技術(shù)支持人員會(huì )將這件事放在一邊,并等待其他來(lái)電。下班時(shí),他將注銷(xiāo)計算機,然后回家。此時(shí),在另一個(gè)部門(mén)中(可能位于其他城市),一組技術(shù)人員正專(zhuān)注解決這些未解決的問(wèn)題。每個(gè)工作的技術(shù)人員要選取申請,然后解決該申請或將該申請升級到第二級幫助。如何編寫(xiě)代碼來(lái)實(shí)現此進(jìn)程?
可以使用 Windows 窗體應用程序來(lái)收集電話(huà)的相關(guān)輸入數據,并在數據庫中創(chuàng )建一個(gè)記錄:即包含時(shí)間、說(shuō)明、狀態(tài)和唯一 ID 的票證。第二個(gè) Windows 窗體應用程序的用戶(hù)將看到待處理申請的實(shí)時(shí)列表,然后選取一個(gè)申請。然后,接線(xiàn)員將盡量解決問(wèn)題(回電給客戶(hù)、檢索申請的信息、發(fā)送電子郵件或執行一些遠程活動(dòng)),并指明問(wèn)題是已解決還是需要進(jìn)一步研究。此決策可由一個(gè)命令性操作表示,例如單擊某個(gè)按鈕更新同一基礎數據庫中的票證。最后,如果還涉及其他類(lèi)別的用戶(hù),自定義前端將使這些用戶(hù)能夠指明問(wèn)題已成功關(guān)閉或中止。
盡管此過(guò)程明確地表達了工作流需要用戶(hù)進(jìn)行某些決策,但可以使用以標準編程語(yǔ)言和數據庫編寫(xiě)的傳統順序代碼輕松實(shí)現。
返回頁(yè)首
應用 Windows Workflow Foundation
如果用戶(hù)具備由各活動(dòng)組成的基于工作流的系統(如 Windows Workflow Foundation),則可利用命令性代碼和聲明性活動(dòng)地圖的強大組合以及綁定它們的聲明性規則來(lái)實(shí)現應用程序。主要好處在于用戶(hù)可以為解決方案建模(甚至以直觀(guān)方式建模),將 Windows Workflow 嵌入運行時(shí)服務(wù)器來(lái)解釋圖表,并使 Windows Workflow 遵循在創(chuàng )建塊中定義的鏈接。進(jìn)程越復雜,為其設計和實(shí)現的流程就越簡(jiǎn)單。進(jìn)程動(dòng)態(tài)更改越容易,用戶(hù)需要編寫(xiě)和維護的代碼數量就越少。讓我們了解一下如何實(shí)現技術(shù)支持方案的 Windows Workflow Foundation 解決方案。
返回頁(yè)首
技術(shù)支持解決方案
通過(guò)創(chuàng )建票證,創(chuàng )建的技術(shù)支持工作流程即開(kāi)始,然后在等待連接用戶(hù)或技術(shù)人員給予響應時(shí)停止。無(wú)論票證是關(guān)閉還是升級,工作流都將獲得外部事件,并更新應用程序的內部狀態(tài)以跟蹤該事件。因此,工作流需要與外界進(jìn)行交互。這類(lèi)異步活動(dòng)是 Windows Workflow Foundation 解決的實(shí)際工作流進(jìn)程的固有問(wèn)題之一。因為需要與系統外部的實(shí)體進(jìn)行交互,所以宿主應用程序和工作流可以定義約定,以進(jìn)行任何必要的數據交換。此處顯示的 IHelpDeskService 接口說(shuō)明了在工作流及其宿主之間建立的通信接口:
[DataExchangeService]public interface IHelpDeskService{event EventHandler<HelpDeskTicketEventArgs> TicketClosed;event EventHandler<HelpDeskTicketEventArgs> TicketEscalated;void CreateTicket(string description, string userRef, string createdBy);void CloseTicket(string ticketID);void EscalateTicket(string ticketID);}
現在,開(kāi)始編寫(xiě)名為 HelpDeskService 的服務(wù)類(lèi),如圖 1 所示。HelpDeskService 類(lèi)將添加到工作流運行時(shí),表示宿主應用程序和工作流之間的接觸點(diǎn)。宿主應用程序將調用該類(lèi)的公共方法以激發(fā)對工作流的外部事件。激發(fā)的事件會(huì )以信號形式通知將指導操作流的特定于域的事件。IHelpDeskService 接口上的方法僅表示工作流可以通過(guò) InvokeMethod 活動(dòng)在外部組件上調用的部分代碼。以此方法計算出的 HelpDeskService 的邏輯能夠在很大程度上增加工作流的靈活性,因為它基本上可以使工作流回調宿主,以真正實(shí)現基本操作。通過(guò)包含實(shí)現 IHelpDeskService 接口的類(lèi),不同宿主可以使用不同算法和存儲媒體創(chuàng )建、解決或升級票證,同時(shí)保持工作流邏輯不變。用戶(hù)可以在其他程序集中編譯接口和類(lèi),也可以?xún)H將這些文件保留在定義工作流的同一程序集中。
HelpDeskWorkflow 是 Windows 窗體應用程序駐留的順序工作流。圖 2 顯示的是其圖形模型。它開(kāi)始于 InvokeMethod 活動(dòng),該活動(dòng)導致應用程序基于用戶(hù)提供的信息創(chuàng )建票證。然后,票證將放置在數據庫中,等待技術(shù)人員選取,以進(jìn)行解決或升級。
圖 2 Visual Studio 2005 中的技術(shù)支持工作流
創(chuàng )建票證之后,工作流將進(jìn)入等待狀態(tài),可能會(huì )等待很長(cháng)時(shí)間 - 甚至幾小時(shí)或幾天。這段時(shí)間內會(huì )出現什么情況?是否應該將工作流實(shí)例加載到內存中?如果工作流空閑,可以將其從內存中卸載 - 這一進(jìn)程稱(chēng)為“鈍化”。本地服務(wù)(如技術(shù)支持服務(wù))保留宿主應用程序和休眠工作流之間的主要接觸點(diǎn)。
返回頁(yè)首
人為因素
當人為因素與宿主應用程序進(jìn)行交互并執行一些操作來(lái)喚醒工作流時(shí),本地服務(wù)將向運行時(shí)發(fā)布請求來(lái)恢復鈍化的工作流。Windows Workflow Foundation 工具箱包含一個(gè)稱(chēng)為 Listen 的活動(dòng),該活動(dòng)只是使工作流空閑并偵聽(tīng)傳入的喚醒呼叫。圖 2 中標有 WaitForSolution 的塊是 Listen 活動(dòng)的實(shí)例。
如果沒(méi)有一個(gè)或多個(gè)子分支(每個(gè)分支表示一個(gè)可掛接在此點(diǎn)的可能發(fā)生的事件),Listen 活動(dòng)基本上沒(méi)有意義。在該技術(shù)支持示例中,Listen 活動(dòng)包含兩個(gè)分支 - 票證關(guān)閉和票證升級。每個(gè)分支都是一個(gè) EventDriven 活動(dòng)。Listen 活動(dòng)和 EventDriven 活動(dòng)都不需要特別設置,它們只是子活動(dòng)的容器。要捕獲外部事件,工作流需要 EventSink 組件。
在圖 2 中,TicketClosed 塊是綁定到本地技術(shù)支持服務(wù)中的 TicketClosed 事件的 EventSink。圖 3 列出了此處設置的 EventSink 屬性。首先,請選擇提供事件的服務(wù)接口。必須設置 InterfaceType 實(shí)現,此外,僅能選擇以 [DataExchangeService] 屬性修飾的接口,如圖 1 所示。
圖 3 EventSink 屬性
設置數據交換接口后,將使用接口中找到的所有事件預填充 EventName 屬性。用戶(hù)選取選擇的事件并設置其參數。如果希望在事件得到處理后得到進(jìn)一步的通知,還要設置 Invoked 屬性。
在等待人為干預的一段空閑時(shí)間之后,EventSink 將控制任務(wù)返回給工作流。事件發(fā)生后,繼續進(jìn)行與工作流相應的其他任何活動(dòng)。例如,在技術(shù)支持應用程序中調用本地服務(wù)的另一個(gè)方法,以更新票證數據庫中的票證狀態(tài)。
在實(shí)際情況下,工作流至少需要與一個(gè)數據庫直接或間接交互。在此示例中,使用的是 SQL Server™ 2000 表 Tickets,其中每行都對應于一個(gè)正在處理的票證。票證 ID 特意設置為與用于管理票證的工作流 ID 相匹配。
返回頁(yè)首
技術(shù)支持前端
工作流經(jīng)編譯后,只是一個(gè)可重用的程序集,因此可以被任何類(lèi)型的基于 .NET 的應用程序引用?,F在,讓我們?yōu)榧夹g(shù)支持接線(xiàn)員來(lái)構想一個(gè)前端應用程序。該應用程序是 Windows 窗體程序,允許用戶(hù)填充表單,并創(chuàng )建票證以啟動(dòng)工作流,如圖 4 所示。
圖 4 技術(shù)支持前端應用程序
工作流調用本地服務(wù)的 CreateTicket 方法,并使服務(wù)在票證數據庫中添加新記錄。在接線(xiàn)員開(kāi)立新票證之后,工作流將開(kāi)始并進(jìn)入空閑狀態(tài)等待人為干預,而該接線(xiàn)員將繼續接聽(tīng)電話(huà)并回復電子郵件。每個(gè)票證都由工作流的不同實(shí)例來(lái)表示。為了方便起見(jiàn),工作流 ID 也是票證的 ID。
返回頁(yè)首
狀態(tài)持久性
在一天結束的時(shí)候,工作流成為一個(gè)活動(dòng)樹(shù),如何管理其保留時(shí)間?Windows Workflow Foundation 運行時(shí)引擎會(huì )管理所有工作流的執行,使工作流長(cháng)時(shí)間保持活動(dòng)狀態(tài),甚至在重新啟動(dòng)計算機時(shí)也不會(huì )受到影響。運行時(shí)引擎由可插拔式服務(wù)提供支持,這些服務(wù)提供了完整豐富的執行環(huán)境 - 事務(wù)、持久性、跟蹤、計時(shí)器和線(xiàn)程。
除非有某些干預使工作流繼續進(jìn)行,否則工作流不能保留在主機進(jìn)程的內存中。如前所述,許多實(shí)際基于人為干預的工作流可能需要等待幾個(gè)小時(shí)(甚至更長(cháng)時(shí)間)才能繼續。在前面的示例中,技術(shù)支持接線(xiàn)員啟動(dòng)了工作流,并在前端應用程序進(jìn)程中加載了工作流類(lèi)。然后,該接線(xiàn)員就可以關(guān)閉計算機回家了。但是,票證必須保持激活狀態(tài),并且對于其他接線(xiàn)員(甚至其他應用程序內的接線(xiàn)員)可用。因此,工作流必須支持對長(cháng)效存儲媒體的序列化。
工作流可能是一個(gè)長(cháng)時(shí)間運行的操作,不適用于那些在內存中連續幾天保持激活狀態(tài)的對象。首先,主機進(jìn)程通常不能為連續幾天活動(dòng)所積累的所有對象提供緩存;其次,主機進(jìn)程可能會(huì )多次關(guān)閉或重新啟動(dòng)。
解決方案是配置運行時(shí),以在工作流空閑時(shí)將其卸載。在這種情況下,宿主程序將使用以下代碼初始化運行時(shí):
WorkflowRuntime wr = new WorkflowRuntime();wr.StartRuntime();
用戶(hù)還可以在 WorkflowRuntime 類(lèi)上設置幾個(gè)事件處理程序,以便在工作流空閑、持續或被卸載時(shí)運行某些代碼。以這種方法配置的運行時(shí),將在工作流遇到 Listen 活動(dòng)或進(jìn)入等待狀態(tài)時(shí),將工作流自動(dòng)序列化存入到存儲媒體中。另一個(gè)方法是指示宿主程序以編程方式將工作流保持在已知的執行點(diǎn)處。在這種情況下,可以調用 WorkflowInstance 類(lèi)的 EnqueueItemOnIdle 方法。用戶(hù)將獲得 WorkflowInstance 類(lèi)的實(shí)例,作為運行時(shí)類(lèi)的 CreateWorkflow 方法的返回值:
WorkflowInstance inst = theRuntime.CreateWorkflow(type);...inst.EnqueueItemOnIdle();inst.Unload();
但是請記住,調用 EnqueueItemOnIdle 不一定會(huì )立即保持工作流。只有工作流處于空閑或掛起狀態(tài)時(shí)才立即保持。否則,當工作流處于掛起或空閑狀態(tài)時(shí),運行時(shí)會(huì )予以注意并在以后保持工作流實(shí)例。請注意,EnqueueItemOnIdle 僅限于保存工作流實(shí)例的狀態(tài),不會(huì )將其從內存中卸載。要卸載工作流實(shí)例,需要調用 Unload 方法。工作流運行時(shí)支持的一種標準運行時(shí)服務(wù)是工作流持久性服務(wù)??梢酝ㄟ^(guò)圖 5 中的代碼將其打開(kāi)。
WorkflowPersistence 服務(wù)將序列化功能添加到在給定運行時(shí)引擎內執行的所有工作流實(shí)例。工作流服務(wù)核心功能由 WorkflowPersistenceService 類(lèi)表示。Windows Workflow Foundation 通過(guò) SqlWorkflowPersistenceService 實(shí)現它。此類(lèi)可以將工作流數據保存到具有已知架構的 SQL Server 2000 或 SQL Server 2005 數據庫中。用戶(hù)可以使用許多腳本和基于對話(huà)框的實(shí)用程序輕松創(chuàng )建目標數據庫??梢詮?a target="_blank" >Windows Workflow Foundation 網(wǎng)站 下載所需內容。必須創(chuàng )建 SQLWorkflowPersistenceService 的實(shí)例并向運行時(shí)注冊,才能實(shí)際啟動(dòng)運行時(shí)。持久性服務(wù)的構造函數使用連接字符串作為其唯一的參數。
如前所述,運行時(shí)服務(wù)是整體 Windows Workflow Foundation 體系結構的可插入部分,因此用戶(hù)可以創(chuàng )建自己的服務(wù),并使用自己的服務(wù)替換標準服務(wù)。
返回頁(yè)首
恢復工作流實(shí)例
在所述方案中,需要由其他接線(xiàn)員(技術(shù)人員)接手任何開(kāi)放的票證,并盡可能去解決它們或將它們提交給上一級。技術(shù)人員將使用其他應用程序,或者至少使用圖 4 中的應用程序的其他實(shí)例。在這兩種情況下,都必須通過(guò)持久性支持創(chuàng )建工作流運行時(shí)的其他實(shí)例,并且必須加載和恢復正確的工作流狀態(tài)。如您所見(jiàn),只有在已經(jīng)保存空閑工作流的 ID 的情況下才發(fā)生這種情況。在技術(shù)支持示例應用程序中,票證 ID 特意設置為與工作流 ID 相匹配,每個(gè)票證都對應于被創(chuàng )建用于處理票證的工作流的一個(gè)實(shí)例。
圖 6 問(wèn)題規劃求解
問(wèn)題規劃求解應用程序(請參閱圖 6)通過(guò)使用與圖 4 中的技術(shù)支持前端應用程序幾乎相同的代碼來(lái)初始化工作流運行時(shí)。唯一的微小差別在于在問(wèn)題規劃求解應用程序中,我是在運行時(shí)上為 WorkflowLoaded 和 WorkflowCompleted 事件注冊處理程序:
WorkflowRuntime wr = new WorkflowRuntime();wr.WorkflowLoaded += OnWorkflowLoaded;wr.WorkflowCompleted += OnWorkflowCompleted;
接線(xiàn)員從顯示的列表中選擇票證,并與提出票證的用戶(hù)協(xié)同工作。完成后,她將進(jìn)行單擊以解決票證或升級票證,從而終止工作流。事件處理程序將基于票證 ID 檢索保存的工作流實(shí)例,然后將其從空閑狀態(tài)喚醒。以下是用戶(hù)所需的代碼:
string workflowID = (string)ticketList.SelectedValue;Guid id = new Guid(workflowID);Type type = typeof(MySamples.HelpDeskWorkflow);try {WorkflowInstance inst = theWorkflowRuntime.GetLoadedWorkflow(id);theHelpDeskService.RaiseCloseTicketEvent(inst.InstanceId);} catch { ... }
前面代碼的核心部分為調用 GetLoadedWorkflow 方法。GetLoadedWorkflow 采用表示工作流實(shí)例的 GUID,如果當前內存中沒(méi)有 GUID,則從已配置的持久媒體中進(jìn)行檢索。在這種情況下,工作流將加載到內存中,并被安排執行時(shí)間。即使工作流實(shí)例以前已中止,仍會(huì )發(fā)生這種情況。工作流加載回內存后,WorkflowLoaded 事件將激發(fā)。
GetLoadedWorkflow 將返回 WorkflowInstance 類(lèi)型的對象,用戶(hù)可以使用該類(lèi)對象檢查工作流的當前狀態(tài)及其活動(dòng)。此時(shí),將激發(fā)工作流等待的一個(gè)事件。相應的 EventSink 活動(dòng)將捕獲事件并繼續,直至工作流結束或遇到后續等待點(diǎn)。
工作流完成時(shí),將自動(dòng)從 Windows Workflow Foundation 持久性數據庫中刪除。當工作流結束時(shí),WorkflowCompleted 事件將激發(fā)。在技術(shù)支持方案中,工作流將在接線(xiàn)員單擊解決或升級之后完成(請參閱圖 6)。
從開(kāi)發(fā)的角度而言,關(guān)鍵要注意以下兩點(diǎn)。第一,要將事件引發(fā)到工作流,必須將申請發(fā)布到池線(xiàn)程:
public void RaiseCloseTicketEvent(Guid instanceId) {ThreadPool.QueueUserWorkItem(JustCloseTheTicket,new HelpDeskTicketEventArgs(instanceId, "Jim"));}public void JustCloseTheTicket(object o) {HelpDeskTicketEventArgs args = o as HelpDeskTicketEventArgs;if (TicketClosed != null) TicketClosed(null, args);}
第二,不能在主 Windows 窗體線(xiàn)程上引發(fā) WorkflowCompleted 事件,因此不能直接更新任何 UI 控件。(這是由于 Windows 窗體控件不是線(xiàn)程安全控件。)確實(shí)可以在創(chuàng )建 Windows 窗體控件的線(xiàn)程之外的線(xiàn)程中更新 Windows 窗體控件,但是需要間接調用更新控件的方法:
private delegate void UpdateListDelegate();private void UpdateList() {this.Invoke(new UpdateListDelegate(FillList));}
可以從 WorkflowCompleted 事件處理程序調用 UpdateList。Form 類(lèi)的 Invoke 方法可以確保在正確線(xiàn)程上調用 FillList,以便能夠安全地刷新所有控件。
返回頁(yè)首
結論
Windows Workflow Foundation 使用戶(hù)可以直觀(guān)地設計復雜的算法,從而解決業(yè)務(wù)問(wèn)題并為進(jìn)程建模。工作流是用于說(shuō)明數據和操作流的工具。因此,任何需要 IF 或 WHILE 語(yǔ)句的方案都可以是工作流。但是,任何人都不能使用僅包含 IF 語(yǔ)句的工作流,工作流運行時(shí)確實(shí)具有成本,該成本可以在流復雜性超出給定閾值時(shí)分攤。
如何界定工作流的使用是否高效低耗的界限?在本專(zhuān)欄實(shí)現的技術(shù)支持方案對于工作流可能過(guò)于簡(jiǎn)單,可以通過(guò)使用票證數據庫(甚至是工作流通過(guò)技術(shù)支持服務(wù)處理的同一票證數據庫)以等效的方式實(shí)現。
基于工作流的解決方案的真正優(yōu)點(diǎn)是使復雜進(jìn)程更易于建模和實(shí)現,更重要的是使其更易于改進(jìn)和擴展。Windows Workflow Foundation 為 Windows Workflow 程序提供了托管執行環(huán)境,還為程序提供了持續時(shí)間、可靠性、掛起/恢復以及補償特征。在某種意義上,活動(dòng)類(lèi)似于中間語(yǔ)言 (IL) 操作碼或程序語(yǔ)句,但包含特定領(lǐng)域的知識。簡(jiǎn)而言之,Windows Workflow Foundation 使程序語(yǔ)義具有聲明性并且十分準確,使用戶(hù)能夠為接近實(shí)際進(jìn)程的應用程序建模。它是最適合此工作的工具。用戶(hù)無(wú)需使用 IL 編寫(xiě)前端可視應用程序,而是使用 RAD 開(kāi)發(fā)工具和更具人類(lèi)可讀性的語(yǔ)言。Windows Workflow Foundation SDK 提供了廣泛的編程語(yǔ)言,專(zhuān)門(mén)用于為復雜的業(yè)務(wù)程序建模,特別是在這些程序可能隨著(zhù)時(shí)間而改進(jìn)的情況下。在這種情況下,主要好處在于用戶(hù)可以添加特殊活動(dòng)來(lái)進(jìn)行工作流,并使用內置行為活動(dòng)來(lái)控制該工作流。用戶(hù)可以專(zhuān)注于任務(wù),其他事情由運行時(shí)進(jìn)行處理。如果要進(jìn)一步了解 Windows Workflow Foundation 或查找其他信息,請訪(fǎng)問(wèn)Windows Workflow Foundation。
請將您的疑問(wèn)和意見(jiàn)通過(guò)cutting@microsoft.com 發(fā)送給 Dino。
Dino Esposito 是 Solid Quality Learning 顧問(wèn),并且是 Programming Microsoft ASP.NET 2.0 (Microsoft Press, 2005) 的作者。Dino 居住在意大利,經(jīng)常就世界范圍內的行業(yè)事件進(jìn)行發(fā)言。請通過(guò)cutting@microsoft.com 或者加入博客weblogs.asp.net/despos 與 Dino 聯(lián)系。
本文摘自《MSDN Magazine2006 年 3 月 號。
轉到原英文頁(yè)面
© 2006 Microsoft Corporation 版權所有。保留所有權利。使用規定。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Microsoft Windows Workflow Foundation 入門(mén):開(kāi)發(fā)人員...
基礎: Windows Workflow Foundation 中的跟蹤服務(wù)(轉與 MSDN)
WF是什么
.NET3.0 框架分享
.NET 4.0 和 .NET 4.0 Client Profile 區別
WPF開(kāi)發(fā)簡(jiǎn)介
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久