導航:首頁 > 凈水問答 > wcf過濾器

wcf過濾器

發布時間:2022-01-06 01:39:16

❶ 如何在應用系統中實現數據許可權的控制功能

1、許可權系統的控制
剛才說到,對數據進行控制最好通過彈性的方式,在一個系統裡面或者功能模塊裡面對用戶角色或者崗位進行設置,一般許可權控制默認在一個許可權管理系統模塊進行設定,數據許可權也應該如此。
許可權系統除了可以對用戶能操作那些功能進行限定,也還可以對其訪問那些組織機構的數據進行限定,我們通過許可權系統,把這些許可權控制的數據進行保存,在應用系統模塊裡面進行整合即可,根據角色擁有的數據許可權,授予用戶對其他部門或者機構的數據進行訪問。如下面是我許可權系統模塊裡面對角色許可權的設置操作。
1)對角色功能許可權進行設置

2)對角色數據許可權進行控制

當對角色的數據許可權進行保存後,我們就可以把這個角色能夠訪問的組織機構(公司、部門、工作組等等)進行記錄起來了。
2)應用系統的集成,實現數據許可權的控制
如我的一個病人資料應用系統,客戶要求就是基於互聯網的應用系統,因此使用WCF數據通訊模式實現數據的集中管理,而且他們要基於醫院單位的數據管理模式,也就是每個單位管理各自的數據,我們可以把不同的醫院單位作為不同的公司性質來區分,這樣在許可權模塊中進行設置即可。
1)在應用程序中,通過在程序頭部,讓可以管理多個醫院機構的用戶選擇管理的數據訪問,即可實現不同的數據區分管理。

2)當用戶在上面切換不同的機構,所有存在的界面數據全部實現刷新,如打開了很多界面,那麼這些界面的數據也隨之更新為對應新的機構下的數據。
了解了上面大致的需求,我們應該如何通過整合許可權管理系統實現在應用系統的數據許可權控制和集成呢?
首先我們需要在用戶登陸的時候,獲取對應用戶的數據許可權內容,然後把它轉化為我們需要的信息,如下代碼所示。

//判斷如果用戶管理的公司數據多於兩個,那麼就顯示選擇單位列表,並綁定公司數據
List<RoleDataInfo> roleDataList = CallerFactory<IRoleDataService>.Instance.FindByUser(info.ID);
List<int> companyList = new List<int>();
foreach (RoleDataInfo roleDataInfo in roleDataList)
{
if (!string.IsNullOrEmpty(roleDataInfo.BelongCompanys))
{
string[] companyArray = roleDataInfo.BelongCompanys.Split(',');
foreach (string company in companyArray)
{
if (!string.IsNullOrEmpty(company) && ValidateUtil.IsNumber(company.Trim()))
{
if (!companyList.Contains(company.ToInt32()))
{
companyList.Add(company.ToInt32());
}
}
}
}
}
Portal.gc.CompanyList = companyList;

//設置選定的公司ID
Cache.Instance["SelectedCompanyID"] = info.Company_ID;
//設置過濾條件給界面基類使用
Cache.Instance["DataFilterCondition"] = string.Format(" (Company_ID is null OR Company_ID = '{0}')", info.Company_ID);

其中CallerFactory方式調用,是以WCF的方式獲取對應的資料庫數據。在上面代碼裡面,有一個RoleDataInfo的實體類,這個就是用來承載用戶角色的數據許可權數據,其中包括了
BelongCompanys(所屬公司)和 BelongDepts(所屬部門 )的屬性,我們把它解析為我需要的數據List<int> companyList 、 SelectedCompanyID 和 DataFilterCondition,當然如果有部門的控制,可以做的更多,我這里僅僅以醫院機構進行區分即可。
SelectedCompanyID 就是用戶選擇查看的組織機構ID,DataFilterCondition就是用來構建一個數據過濾腳本,對用戶看到的數據進行一個過濾篩選作用。我們把這兩個數據內容,放到Winform的緩存裡面,如果是Web可以用Session代替,這樣可以在多個模塊或者界面中方便訪問使用。
為了實現用戶選擇不同的機構,所有打開的窗體數據實現相應的更新,那麼我們需要處理公司選擇的操作,具體實現代碼如下所示。

private void txtCompany_EditValueChanged(object sender, EventArgs e)
{
//如果用戶選擇公司,以選擇為主,否則以當前客戶所在公司
if (this.txtCompany.EditValue != null)
{
CListItem item = this.txtCompany.EditValue as CListItem;
if (item != null)
{
//設置選定的公司ID
Cache.Instance["SelectedCompanyID"] = item.Value;
SetSelectedCompanyName();

//設置過濾條件給界面基類使用
string condition = string.Format(" Company_ID = '{0}'", item.Value);
Cache.Instance["DataFilterCondition"] = condition;

//遍歷全部窗口,更新
foreach (WHC.Framework.BaseUI.BaseDock form in this.MdiChildren)
{
form.SelectedCompanyID = item.Value;
form.DataFilterCondition = condition;
form.FormOnLoad();
}

string message = string.Format("您已經切換數據顯示:{0}", item.Text);
MessageDxUtil.ShowTips(message);
}
}
}

上面是對所有打開的窗體,傳遞了對應的信息,然後進行了刷新。那麼我們在看看窗體本身內部的數據顯示邏輯是如何的。
我們以病人資料的查詢界面為例,根據不同的輸入條件,對數據進行不同查詢外,還增加了一個對組織機構過濾的條件,如下所示。

/// <summary>
/// 根據查詢條件構造查詢語句
/// </summary>
private string GetConditionSql()
{
//如果存在高級查詢對象信息,則使用高級查詢條件,否則使用主表條件查詢
SearchCondition condition = advanceCondition;
if (condition == null)
{
condition = new SearchCondition();
condition.AddCondition("BedNo", this.txtBedNo.Text.Trim(), SqlOperator.Like);
condition.AddCondition("TumorPart", this.txtTumorPart.Text.Trim(), SqlOperator.Like);
........................
condition.AddDateCondition("InDate", this.txtInDate, this.txtInDateEnd);
condition.AddDateCondition("LeaveDate", this.txtLeaveDate, this.txtLeaveDateEnd);if (this.chkHasReferral.Checked)
{
condition.AddCondition("HasReferral", "是", SqlOperator.Equal, true);
}
...................
}

string where = condition.BuildConditionSql().Replace("Where", "");

//如果公司過濾條件不為空,那麼需要進行過濾
if (!string.IsNullOrEmpty(this.DataFilterCondition))
{
where += string.Format(" AND {0}", this.DataFilterCondition);
}

return where;
}

/// <summary>
/// 綁定列表數據
/// </summary>
private void BindData()
{
//entity
this.winGridViewPager1.DisplayColumns = "HandNo,BedNo,MidVideo,Name,Sex,IdentityCard,Age,Birthday,HospitalNo,IDNumber,InDate,InDiagnosis,SurgeryDate,DirectorSurgeon,LeaveDate,TumorPart,LeaveDiagnosis,IsFirstTime,LeaveSpecimens,OuterFilm,PreMRI,PreCT,PrePicture,MidPathology,AfterCTMRI,AfterPicture,AfterVideo,LeavePicture,Endocrine,Professor,Address,Telephone,HasReferral,ReferralDate,ReferralTime,Pathology,Note,Report";
this.winGridViewPager1.ColumnNameAlias = CallerFactory<IPatientService>.Instance.GetColumnNameAlias();//欄位列顯示名稱轉義

string where = GetConditionSql();
PagerInfo pagerInfo = this.winGridViewPager1.PagerInfo;
List<PatientInfo> list = CallerFactory<IPatientService>.Instance.FindWithPager(where, ref pagerInfo);
this.winGridViewPager1.DataSource = new WHC.Pager.WinControl.SortableBindingList<PatientInfo>(list);
this.winGridViewPager1.PrintTitle = "病人基本資料信息報表";
}

以上綁定代碼實現了:分頁、條件查詢、高級查詢、欄位列表顯示、中文名稱轉義,以及最重要的,根據公司條件進行數據過濾的操作,從而讓用戶只能管理自己的數據。

❷ svc是什麼意思

SVC是Switching Virtual Circuit的縮寫,意思是交換虛擬電路。信息包交換虛擬線路(節點之間只在需要傳送數據時才建立邏輯連結) 面向連接的網路中,從一台計算機到另一台計算機的連接。SVC是虛擬的,因為路徑是從路由表中得到的,而不是建立物理線路。SVC是交換的,因為它能按需要建立,類似於一次電話呼叫。

2.SVC:(Supervisor)操作系統保護模式,處理軟體中斷(SWI)
3.SVC(Static Var Compensator):靜止無功補償器。靜止無功補償器是由晶閘管所控制投切電抗器和電容器組成,由於晶閘管對於控制信號反應極為迅速,而且通斷次數也可以不受限制。當電壓變化時靜止補償器能快速、平滑地調節,以滿足動態無功補償的需要,同時還能做到分相補償;對於三相不平衡負荷及沖擊負荷有較強的適應性;但由於晶閘管控制對電抗器的投切過程中會產生高次諧波,為此需加裝專門的濾波器。
IBM SAN Volume Controller
對於存儲虛擬化,IBM SAN Volume Controller(SVC)能夠將多個磁碟系統的容量整合為一個單一的「容量池」。SVC 可幫助節省空間和能源,並能通過合並來簡化存儲資產的管理,這將極大地提高現有存儲器的利用率,並減少額外的存儲需求。
4. SVC=Scalable Video Coding,中文譯作可伸縮視頻編碼或可擴展視頻編碼,是視頻編碼的一種技術。其又可以細分為時域可伸縮性、空域可伸縮性和質量可伸縮性。SVC是H.264/AVC標準的一個重要的擴展。
5.SVC(Super Visor Call)為指令碼,表明是訪管指令;n為訪管中斷號,其值是一整數,具體表示何種訪問要求.當中斷發生時,硬體中斷裝置將訪管中斷號n送入舊的程序狀態字內的中斷碼欄位,訪管中斷總控程序由系統堆棧中將其取出,並據此轉入對應的服務程序.
在實際使用時,用戶程序與操作系統之間還需要相互傳遞參數和返回值.如此,用戶使用訪管指令的一般形式為:
准備參數
SVC n
取返回值 ②
根據具體訪管要求約定,參數及返回值可以通過寄存器傳遞,也可以通過內存傳遞.對於後者,操作系統必須能夠訪問進程空間.
通常將②稱為系統調用命令,它除訪管指令外,還有準備參數和取返回值.為了使用方便,在高級語言中一般將其寫為同過程調用相類似的形式,即
返回值=系統調用名稱(參數1,參數2,…,參數m); ③
當然,編譯程序會將③翻譯成形如②的形式.其中系統調用名稱對應①,不同的系統調用名稱對應不同的整數n.在有些書中,也將③稱為代表②的宏指令或廣義指令
.
SVC高壓動態無功補償及濾波裝置簡介]
基於DSP的全數字控制系統,具有運算速度快、處理數據量大,實現實時控制量計算。
採用櫃式結構,實現外來干擾屏蔽,抗干擾能力優越。
控制整個系統的運行。
採用卧式結構,晶閘管疊裝壓接式,純水冷卻、內取能、內阻尼、空氣絕緣、BOD保護。
晶閘管選用ABB優質產品,電氣性能良好,串聯使用控制電抗器的投入與切除。
主電抗器,通過晶閘管閥組連接到SVC系統中,成為SVC最重要的部分。
電抗器為空心、乾式、銅線或鋁線環氧固化型,線形度高、噪音小、動熱穩定性好,絕緣強度高,散熱好。
通過晶閘管的相位控制達到動態無功補償的目的。
主要設備採用國外著名公司進口元件,主循環泵、等離子交換機、精密過濾器等核心機構採用不銹鋼316L材質。
PLC程序控制,保護、報警功能完備。
無腐蝕,無污染,符合環保要求。
.svc文件
每一個.NET Web服務都具有一個.asmx文本文件,客戶端通過訪問.asmx文件實現對相應Web服務的調用。與之類似,每個WCF服務也具有一個對應的文本文件,其文件擴展名為.svc。基於IIS的服務寄宿要求相應的WCF服務具有相應的.svc文件,.svc文件部署於IIS站點中,對WCF服務的調用體現在對.svc文件的訪問上。.svc文件的內容很簡單,僅僅包含一個ServiceHost指令(Directive),該指令具有一個必須的Service屬性和一些可選的屬性。所以最簡單的.svc僅僅具有一個包含Service屬性(該屬性指明了相應的WCF服務的有效類型)的ServiceHost指令。

!應該沒錯哦!

❸ 常用的組態軟體都有哪些 分別是那些公司的

一、Wonderware公司:Wonderware公司成立於1987年,是世界上首家推出組態軟體的公司。該公司推出的組態軟體名為Intouch,其廣泛應用於可視化和控制工業生產過程。該組態軟體大大的優化了工程師的自動化應用過程。

二、西門子(中國)有限公司:SIMATIC WinCC(Windows Control Center)--視窗控制中心,西門子最經典的過程監視系統。作為西門子TIA(全集成自動化)理念中的關鍵組成之一,實現了自動化系統與IT系統之間的互聯互通。

三、艾斯本技術有限公司:該公司的常用組態軟體名為AspenTech,AspenTech通過優化資產來更快地,更環保,更長,更快地加速用戶所服務行業的數字化轉型。

四、PROGEA公司:PROGEA公司的常用組態軟體名為MOVICON,Movicon是全新的第三代(Scada/HMI)工業監控軟體。Movicon以堅持簡單、開放、可擴充性作為標准,實現自動化轉型。

五、Intellution公司:該公司旗下的組態軟體iFIX,能有效的加速操作員響應並提高效率。該軟體藉助全新的圖形引擎,iFIX可實現可視化。利用完全刷新的工作空間,其功能包括圖像形狀的抗鋸齒,歷史數據的延時回放,更新的帶狀條和菜單選項,高性能圖形等。

❹ .NETFramework3.5開發技術詳解的目錄

第1章.NETFramework3.5簡介1
1.1.NETFramework3.5在.NET技術體系中的位置1
1.2.NET3.5各部分的功能2
1.3.NET3.5的組件3
1.3.1WindowsPresentaionFoundation(WPF)3
1.3.(WCF)5
1.3.3WorkflowFoundation(WF)6
1.4搭建.NET3.5的開發環境6
1.4.1在WindowsXP/2003/Vista上搭建開發環境6
1.4.2相關工具9
第2章.NET3.5的新功能12
2.1.NET3.5概要12
2.2新的.NET基礎類型12
2.3C#語言的強化14
2.3.1C#基本語法增強14
2.3.2LINQ(集成語言查詢)16
第3章WindowsPresentationFoundation基礎知識34
3.(WPF)的概念34
3.2XAML的概念35
3.2.1命名空間36
3.2.2代碼後置文件37
3.2.3調用.NET類庫中的類來定義對象37
3.2.4屬性38
3.3WPF的結構和相關的類庫39
3.4WPF應用程序的類型44
3.4.1傳統類型的視窗程序44
3.5創建第一個WPF程序49
第4章WPF程序的布局59
4.1布局的基礎知識59
4.2StackPanel容器61
4.3DockPanel容器65
4.4Grid容器67
4.4.1表格的高度和寬度69
4.4.2ColumnSpan和RowSpan70
4.4.3Grid的SharedSizeGroup71
4.5Canvas容器72
4.6文檔布局74
4.6.1WrapPanel74
4.6.2TextBlock75
4.6.3FlowDocument78
4.7其他容器83
4.8視圖控制84
4.9自定義布局87
第5章WPF的控制項91
5.1控制項模型91
5.2WPF的控制項樹92
5.3路由事件95
5.4從屬屬性(DependencyProperty)97
5.5處理交互行為102
5.6基本控制項的使用106
5.6.1Button控制項106
5.6.2TextBox類控制項109
5.6.3列表控制項113
5.6.4Menu控制項118
5.6.5包容式控制項121
5.6.6Label和TextBlock126
5.6.7其他控制項127
第6章資源和數據綁定134
6.1在WPF中定義資源134
6.1.1WPF中的嵌入式資源134
6.1.2定義邏輯資源135
6.2使用資源139
6.3數據綁定基礎142
6.4集合的綁定151
6.5DataProvider157
6.6高級數據綁定操作165
6.7使用CollectionViewSource進行排序和過濾167
第7章讓WPF程序支持樣式和主題169
7.1樣式基礎169
7.1.1WPF樣式的定義169
7.1.2樣式的作用170
7.1.3樣式的作用范圍171
7.2內聯樣式172
7.3命名樣式172
7.4樣式觸發器174
7.5控制項模板180
7.6主題182
第8章WPF的繪圖功能189
8.12D圖形基礎189
8.22D幾何圖形190
8.3畫刷和畫筆197
8.3.1畫刷197
8.3.2畫筆204
8.42D圖形變換(Transform)205
8.4.1平移變換205
8.4.2縮放變換206
8.4.3旋轉變換206
8.4.4斜移變換207
8.4.5矩陣變換207
8.4.6變換組(TransformGroup)210
8.52D圖形特效210
8.63D圖形基礎213
8.6.1計算機圖形學基礎213
8.6.2WPF的3D類型215
8.73D變換218
8.8WPF的動畫支持221
8.8.1Animation對象222
8.8.2第一個動畫223
第9章WPF的多媒體230
9.1對視頻和音頻的支持230
9.1.1視頻支持230
9.1.2音頻支持235
9.2語音功能238
第10章WPF高級技術241
10.1WPF自定義控制項241
10.1.1編寫控制項的基礎知識241
10.1.2開始編寫控制項244
10.1.3編寫CustomControl控制項249
10.2WPF的互操作性252
10.2.1在WPF中使用Winform控制項252
10.2.2在WInform程序中使用WPF控制項254
10.3WPF的非同步模型254
10.4WPF對自動化程序的支持256
10.4.1Automation樹256
10.4.2控制項的訪問方式257
第11章(WCF)基礎261
11.1面向服務編程模型(框架)261
11.1.1什麼是SOA261
11.1.2為什麼要使用SOA263
11.2WCF是什麼264
11.3WCF的結構265
11.4WCF基礎267
第12章WCF中的契約268
12.1服務契約和操作契約268
12.2數據契約(DataContract)269
12.3錯誤契約(FaultContract)272
12.4創建WCF服務273
12.5編寫WCF客戶端277
12.6配置WCF程序279
12.6.1服務端配置279
12.6.2客戶端配置283
12.6.3配置工具284
第13章WCF中的消息交換285
13.1與通信有關的概念285
13.1.1Address(地址)285
13.1.2Bindings(通信綁定)286
13.1.3Contracts(契約)288
13.1.4EndPoint292
13.2遠程對象的傳遞293
13.3大對象的傳遞299
13.4錯誤處理303
13.5會話管理308
13.6雙向通信311
13.7WCF的消息編碼318
13.8基於隊列的消息交換319
13.9點對點網路(Peer-To-PeerNetwork)322
第14章並發管理327
14.1伺服器實例行為管理327
14.2並發管理330
14.3同步上下文332
14.4回調的同步設置和非同步調用334
第15章WCF的事務支持341
15.1事務概要341
15.2WCF中的事務343
15.3創建支持事務的服務345
第16章WCF的安全解決方案353
16.1認證和授權353
16.1.1認證354
16.1.2授權355
16.2安全傳輸360
16.2.1傳輸的安全性360
16.2.2消息安全363
16.3安全策略364
第17章WCF的擴展性368
17.1服務行為的擴展368
17.1.1自定義分發器特性369
17.2自定義通道374
17.3自定義元數據378
17.3.1元數據的基本知識378
17.3.2擴展元數據系統379
17.4自定義序列化380
第18章WCF的運行環境383
18.1在IIS上啟用WCF服務383
18.2在.NET程序中運行WCF服務386
18.3在Windows服務程序中運行WCF服務387
第19章工作流(WorkFlow)392
19.1工作流(WF)簡介392
19.1.1工作流的概念392
19.1.2WindowsWorkFlowFoundation393
19.2Activity(活動)396
19.3WF運行時401
19.4基於狀態機的工作流405
19.5工作流的持久化406
19.6工作流的XAML表示407
……

❺ C#的主要用途有什麼

C#只是一種語言,不能做什麼,關鍵是它是基於.NET框架,才是它的用途。所以,你不應該問C#的主要用途有什麼,而應該問.NET的用途有哪些。
概括地講,.NET有以下用途:
一、客戶端應用程序
1、Windows Forms,不用我介紹了,對傳統Win32應用程序的封裝和增強,編寫應用程序較為方便,省去了傳統Win32應用程序的編寫WinMain函數的繁雜步驟。
2、可以調用平台API和COM組件,即通常說的P/Invoke。
3、WPF具有強大的界面展示功能,能提供優秀而靈活的用戶體驗,取代傳統的GDI+圖形機制,採用全新的與像素,解析度無關的計算方式。豐富的控制項模型和圖形庫,多媒體處理以及動畫。
二、Web應用。
1、ASP.NET,不用我說了。
2、Silverlight豐富的瀏覽器應用,HTML5也不能比。
3、較高的安全機制,自動過濾注入和跨站等攻擊行為,全自動的用戶會話驗證機制,本地連接加密。
4、強大的Web服務。
5、WCF,遠程技術的替代品,相當強大,完美實現分布式應用。
三、數據處理有著很好的模型與框架,靈活多變的資料庫管理模式,可用於XML,SQL等,功能強大的Linq。
四、移動平台,將WPF的各種優點進行移植,可以達到很好的用戶體驗,真實而流暢的動畫效果。
五、支持多處理器多核的非同步任務模型(Task),多個非同步任務之間可以自由調控,可以自行安排各個線程的執行順序。
六、雲API的支持。
……
剩下的,你自己研究。

❻ 如何自定義datagrid的header

具體實現的過程:

第一步,我們要做一個新的ColumnHeader。這里直接用來silverlight.net上一位高手的代碼,並且做了擴展,主要是添加了Header的點擊事件和過濾框的事件,
以及一個新的屬性用來保存欄位名。應為在實際的項目中,我們不可能在Grid上直接顯示資料庫的欄位名,而是要用中文來顯示。代碼不是太復雜,就不做解釋了。
GridHeader.cs

1 [TemplatePart(Name = GridHeader.HeaderTextElement, Type = typeof(FrameworkElement))]
2 [TemplatePart(Name = GridHeader.FilterTextElement, Type = typeof(TextBox))]
3 public class GridHeader : Control
4 {
5 public delegate void HeaderClickEvent(string fieldname);
6 public event HeaderClickEvent OnSort;
7
8 public delegate void FilterTextEvent(string fieldname, string filtertext);
9 public event FilterTextEvent OnFilter;
10
11 protected const string HeaderTextElement = "btnHeaderText";
12 protected const string FilterTextElement = "txtFilerText";
13
14 Button btn_header;
15 TextBox filterText;
16
17 #region Constructor
18 public GridHeader()
19 {
20 this.DefaultStyleKey = typeof(GridHeader);
21 }
22 #endregion
23
24 #region HeaderText
25 /// <summary>
26 /// Identifies the HeaderText dependency property.
27 /// </summary>
28 public static readonly DependencyProperty HeaderTextProperty = DependencyProperty.Register("HeaderText", typeof(string), typeof(GridHeader), null);
29
30 /// <summary>
31 /// Gets or sets the HeaderText possible Value of the int object.
32 /// </summary>
33 public string HeaderText
34 {
35 get { return (string)GetValue(HeaderTextProperty); }
36 set { SetValue(HeaderTextProperty, value); }
37 }
38 #endregion HeaderText
39
40 #region FilterText
41
42 /// <summary>
43 /// Identifies the FilterText dependency property.
44 /// </summary>
45 public static readonly DependencyProperty FilterTextProperty = DependencyProperty.Register("FilterText", typeof(string), typeof(GridHeader), null);
46
47 /// <summary>
48 /// Gets or sets the FilterText possible Value of the string object.
49 /// </summary>
50 public string FilterText
51 {
52 get { return (string)GetValue(FilterTextProperty); }
53 set { SetValue(FilterTextProperty, value); }
54 }
55 #endregion FilterText
56
57 #region FieldText
58 public static DependencyProperty FieldTextProperty = DependencyProperty.Register("FieldText", typeof(string), typeof(GridHeader), null);
59 public string FieldText
60 {
61 get { return (string)GetValue(FieldTextProperty); }
62 set { SetValue(FieldTextProperty, value); }
63 }
64
65 #endregion
66
67 public override void OnApplyTemplate()
68 {
69 base.OnApplyTemplate();
70 StackPanel sp = this.GetTemplateChild("LayoutRoot") as StackPanel;
71
72 btn_header = sp.Children[0] as Button;
73 filterText = sp.Children[1] as TextBox;
74
75 if (this.filterText != null)
76 this.filterText.LostFocus += new RoutedEventHandler(filterText_LostFocus);
77 if (this.btn_header != null)
78 this.btn_header.Click += new RoutedEventHandler(header_Click);
79 }
80
81 void header_Click(object sender, RoutedEventArgs e)
82 {
83 OnSort(FieldText);
84 }
85
86 void filterText_LostFocus(object sender, RoutedEventArgs e)
87 {
88 OnFilter(FieldText, filterText.Text.Trim());
89 }
90

第二步,在Themes下添加一個Generic.xaml,內容如下:

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:SilverlightDemoApp;assembly=SilverlightDemoApp">
<Style TargetType="controls:GridHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="controls:GridHeader">
<StackPanel x:Name="LayoutRoot" Background="{TemplateBinding Background}">
<Button x:Name="btnHeaderText" Margin="0" BorderThickness="0" Content="{TemplateBinding HeaderText}"></Button>
<TextBox x:Name="txtFilterTextBox" Margin="1,0,1,1" Text="{TemplateBinding FilterText}"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary

這里定義了我們自定義的ColumnHeader的展現方式,包括用了一個Button和TextBox。

關於Generic.xaml我不是太明白這個文件,有些人說會自動產生這個文件,但是我的機器上並沒有這個文件,我是手工添加的,現建一個themes下建一個 SilverLight用戶控制項,然後用上面的內容替換掉自動生成的內容,並且去掉Generic.xaml.cs的public Generic()裡面的代碼。

第三步,在DataGrid頁面上添加Resources。如下:

<UserControl.Resources>
<Style x:Key="grid-header" TargetType="primitives:DataGridColumnHeader">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<my:GridHeader HeaderText="{TemplateBinding Content}" Height="Auto" Loaded="GridHeader_Loaded" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources

注意,要在文件頭部加上
xmlns:my="clr-namespace:SilverlightDemoApp;assembly=SilverlightDemoApp"
就是這個my:GridHeader的namespace和assembly信息。不然就找不到my:GridHeader的了。

第四步,實現DataGrid所在頁面的代碼。

基礎的代碼可以見我的前一篇文檔。
Silverlight學習筆記二:DataGrid 伺服器端分頁、排序的實現

Silverlight學習筆記二(續)
這里主要寫一下修改的地方
xaml中的DataGrid部分。

Code

在獲取數據之後,對DataGrid的Header進行了處理。新增了CreateHeader()這個方法。

1 private void client_GetProctsPagingCompleted(object sender, e)
2 {
3 if (e.Error == null)
4 {
5 procts_list = e.Result.ToList();
6 dgData.ItemsSource = procts_list;
7 if (pager == null)
8 {
9 pager = new Pager(e.TotalPage, 2);
10 pager.Click += new Pager.PagerButtonClick(pager_Click);
11 pager.PageIndex = 1;
12 spPager.Children.Clear();
13 spPager.Children.Add(pager);
14 //第一次時創建GridHeader
15 CreateHeader();
16 }
17 }
18 else
19 MessageBox.Show(e.Error.Message);
20 canvas.Visibility = Visibility.Collapsed;
21 }
22
23 //用來存儲HeaderText和資料庫欄位之間的對照信息
24 Dictionary<string, string> FieldDict = new Dictionary<string, string>();
25 private void CreateHeader()
26 {
27 var v = from p in dgData.Columns
28 where p is DataGridBoundColumn
29 select p;
30 foreach (DataGridBoundColumn column in v.ToList())
31 {
32 string fieldname = column.Binding.Path.Path;
33 Style style_header = Resources["grid-header"] as Style;
34 column.HeaderStyle = style_header;
35
36 //本來這里我是希望可以直接設置Header的FieldText為欄位名的,但是卻找不到什麼好的方法,
37 //
38 //<my:GridHeader HeaderText="{TemplateBinding Content}" Height="Auto" Loaded="GridHeader_Loaded" />
39 //Resources中這里也不能直接綁定FieldText為Binding.Path.Path,因為這里是從DataGridColumnHeader來的,
40 //DataGridColumnHeader只有Content,而找不到對應的綁定信息。
41 //
42 //另外,通過訪問Style的Setter,我也只能獲取到ControlTemplate,但是ControlTemplate下面的內容,也就是my:GridHeader取怎麼也獲取不到,
43 //如果有高人知道,請指教一下。謝謝
44 //
45 //所以,沒辦法,只能暫時把欄位名和HeaderText都保存到Dictionary裡面,供後面使用
46
47 FieldDict.Add(column.Header.ToString(), fieldname);
48 }
49 }
50
51 private void GridHeader_Loaded(object sender, RoutedEventArgs e)
52 {
53 GridHeader header = sender as GridHeader;
54 header.OnFilter += new GridHeader.FilterTextEvent(header_OnFilter);
55 header.OnSort += new GridHeader.HeaderClickEvent(header_OnSort);
56 string fieldtext;
57 //在這里,我們對Header的FieldText設置為欄位名。
58 //如果能在這里獲取到當前的Column的話,前面就不要用Dictionary了,但是這里我仍然不知道該怎麼獲取到當前的Column。
59 if (FieldDict.TryGetValue(header.HeaderText, out fieldtext))
60 header.FieldText = fieldtext;
61 }
62
63 void header_OnSort(string fieldname)
64 {
65 //這里具體的代碼就不寫了。
66 //在獲取到欄位名之後,對數據進行排序。
67 MessageBox.Show("對欄位:" + fieldname + "進行排序");
68 }
69
70 void header_OnFilter(string fieldname, string filtertext)
71 {
72 //這里具體的代碼就不寫了。
73 //在獲取到欄位名和關鍵字只有,就可以通過WCF獲取到指定的數據了。
74 MessageBox.Show("對欄位:" + fieldname + " 按照 " + filtertext + " 進行過濾");
75 }

❼ svc是什麼意思

SVC是Switching Virtual Circuit的縮寫,意思是交換虛擬電路。

Svc在通信中也是個極其重要的東西,那就是可伸縮視頻編碼技術,這是一種視頻通話里具有變革意義的技術。

可能一開始,svc技術不被人們認可,認為它只不過是一種編碼,而且還會出現錯誤。但是隨著時間的推移和svc技術的發展,這種技術在視頻編碼中越來越重要。

(7)wcf過濾器擴展閱讀

作用:高壓靜止無功補償裝置

靜止無功補償器是由晶閘管所控制投切電抗器和電容器組成,由於晶閘管對於控制信號反應極為迅速,而且通斷次數也可以不受限制。

當電壓變化時靜止補償器能快速、平滑地調節,以滿足動態無功補償的需要,同時還能做到分相補償。

對於三相不平衡負荷及沖擊負荷有較強的適應性;但由於晶閘管控制對電抗器的投切過程中會產生高次諧波,為此需加裝專門的濾波器。

❽ 手機APP和web服務端 跨域問題

跨域問題來源於JavaScript的同源策略,即只有 協議+主機名+埠號 (如存在)相同,則允許相互訪問。也就是說JavaScript只能訪問和操作自己域下的資源,不能訪問和操作其他域下的資源。
在以前,前端和後端混雜在一起, 比如JavaScript直接調用同系統裡面的一個Httphandler,就不存在跨域的問題,但是隨著現代的這種多種客戶端的流行,比如一個應用通常會有Web端,App端,以及WebApp端,各種客戶端通常會使用同一套的後台處理邏輯,即API, 前後端分離的開發策略流行起來,前端只關注展現,通常使用JavaScript,後端處理邏輯和數據通常使用WebService來提供json數據。一般的前端頁面和後端的WebService API通常部署在不同的伺服器或者域名上。這樣,通過ajax請求WebService的時候,就會出現同源策略的問題。
需要說明的是,同源策略是JavaScript裡面的限制,其他的編程語言,比如在C#,Java或者iOS等其他語言中是可以調用外部的WebService,也就是說,如果開發Native應用,是不存在這個問題的,但是如果開發Web或者Html5如WebApp,通常使用JavaScript ajax對WebService發起請求然後解析返回的值,這樣就可能存在跨域的問題。
一般的,很容易想到,將外部的資源搬到同一個域上就能解決同源策略的限制的。即在Web網站上同時開發一個Http服務端頁面,所有JavaScript的請求都發到這個頁面上來,這個頁面在內部使用其他語言去調用外部的WebService。即添加一個代理層。這種方式可以解決問題,但是不夠直接和高效。
目前,比較常見的跨域解決方案包括JSONP (JSON with padding)和CORS (Cross-origin resource sharing )。一些解決方案需要客戶端和服務端配合如JSOP,一些則只需要服務端配合處理比如CORS。下面分別介紹這兩種跨域方案,以及服務端WebService如何支持這兩種跨域方案。
JSONP以及WebService的支持
同源策略下,某個伺服器是無法獲取到伺服器以外的數據,但是html裡面的img,iframe和script等標簽是個例外,這些標簽可以通過src屬性請求到其他伺服器上的數據。而JSONP就是通過script節點src調用跨域的請求。
當我們向伺服器提交一個JSONP的請求時,我們給服務傳了一個特殊的參數,告訴服務端要對結果特殊處理一下。這樣服務端返回的數據就會進行一點包裝,客戶端就可以處理。
舉個例子,服務端和客戶端約定要傳一個名為callback的參數來使用JSONP功能。比如請求的參數如下:
http://www.example.net/sample.aspx?callback=mycallback

如果沒有後面的callback參數,即不使用JSONP的模式,該服務的返回結果可能是一個單純的json字元串,比如:
{ foo : 'bar' }

如果和服務端約定jsonp格式,那麼服務端就會處理callback的參數,將返回結果進行一下處理,比如處理成:
mycallback({ foo : 'bar' })

可以看到,這其實是一個函數調用,比如可以實現在頁面定義一個名為mycallback的回調函數:
mycallback = function(data)
{
alert(data.foo);
};

現在,請求的返回值回去觸發回調函數,這樣就完了了跨域請求。
如果使用ServiceStack創建WebService的話,支持Jsonp方式的調用很簡單,只需要在AppHost的Configure函數裡面注冊一下對響應結果進行過濾處理即可。
/// <summary>
/// Application specific configuration
/// This method should initialize any IoC resources utilized by your web service classes.
/// </summary>
/// <param name="container"></param>
public override void Configure(Container container)
{
ResponseFilters.Add((req, res, dto) =>
{
var func = req.QueryString.Get("callback");
if (!func.isNullOrEmpty())
{
res.AddHeader("Content-Type", ContentType.Html);
res.Write("<script type='text/javascript'>{0}({1});</script>"
.FormatWith(func, dto.ToJson()));
res.Close();
}
});
}

JSONP跨域方式比較方便,也支持各種較老的瀏覽器,但是缺點很明顯,他只支持GET的方式提交,不支持其他Post的提交,Get方式對請求的參數長度有限制,在有些情況下可能不滿足要求。所以下面就介紹一下CORS的跨域解決方案。
CORS跨域及WebService的支持
先來看一個例子,我們新建一個基本的html頁面,在裡面編寫一個簡單的是否支持跨域的小腳本,如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>AJAX跨域請求測試</title>
</head>
<body>
<input type='button' value='開始測試' onclick='crossDomainRequest()' />
<div id="content"></div>

<script type="text/javascript">
//<![CDATA[
var xhr = new XMLHttpRequest();
var url = 'http://localhost:8078/json/ShopUserLogin';
function crossDomainRequest() {
document.getElementById("content").innerHTML = "開始……";
if (xhr) {
xhr.open('POST', url, true);
xhr.onreadystatechange = handler;
xhr.send();
} else {
document.getElementById("content").innerHTML = "不能創建 XMLHttpRequest";
}
}

function handler(evtXHR) {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
var response = xhr.responseText;
document.getElementById("content").innerHTML = "結果:" + response;
} else {
document.getElementById("content").innerHTML = "不允許跨域請求。";
}
}
else {
document.getElementById("content").innerHTML += "<br/>執行狀態 readyState:" + xhr.readyState;
}
}
//]]>
</script>

</body>
</html>

然後保存為本地html文件,可以看到,這個腳本中,對本地的服務http://localhost:1337/json/Hello 發起了一個請求, 如果使用chrome 直接打開,會看到輸出的結果,不允許跨域請求。 在javascript控制台程序中同樣可以看到錯誤提示:

那麼如果在返回響應頭header中注入Access-Control-Allow-Origin,這樣瀏覽器檢測到header中的Access-Control-Allow-Origin,則就可以跨域操作了。
同樣,如果使用ServcieStack,在很多地方可以支持CORS的跨域方式。最簡單的還是在AppHost的Configure函數裡面直接寫入:
/// <summary>
/// Application specific configuration
/// This method should initialize any IoC resources utilized by your web service classes.
/// </summary>
/// <param name="container"></param>
public override void Configure(Container container)
{
this.AddPlugin(new CorsFeature());
}

這樣就可以了,相當於使用默認的CORS配置:
CorsFeature(allowedOrigins:"*",
allowedMethods:"GET, POST, PUT, DELETE, OPTIONS",
allowedHeaders:"Content-Type",
allowCredentials:false);

如果僅僅允許GET和POST的請求支持CORS,則只需要改為:
Plugins.Add(new CorsFeature(allowedMethods: "GET, POST"));

當然也可以在AppHost的Config裡面設置全局的CORS,如下:
/// <summary>
/// Application specific configuration
/// This method should initialize any IoC resources utilized by your web service classes.
/// </summary>
/// <param name="container"></param>
public override void Configure(Container container)
{

base.SetConfig(new EndpointHostConfig
{
GlobalResponseHeaders = {
{ "Access-Control-Allow-Origin", "*" },
{ "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
{ "Access-Control-Allow-Headers", "Content-Type" },
},
});
}

現在運行WebService,使用postman或者Chrome調用這個請求,可以看到返回的值頭文件中,已經加上了響應頭,並且可以正常顯示返回結果了:

CORS使用起來簡單,不需要客戶端的額外處理,而且支持Post的方式提交請求,但是CORS的唯一一個缺點是對客戶端的瀏覽器版本有要求,支持CORS的瀏覽器機器版本如下:

總結
本文介紹了JavaScript中的跨域基本概念和產生的原因,以及如何解決跨域的兩種方法,一種是JSONP 一種是 CORS,在客戶端Javascript調用服務端介面的時候,如果需要支持跨域的話,需要服務端支持。JSONP的方式就是服務端對返回的值進行回調函數包裝,他的優點是支持眾多的瀏覽器, 缺點是僅支持Get的方式對服務端請求。另一種主流的跨域方案是CORS,他僅需要服務端在返回數據的時候在相應頭中加入標識信息。這種方式非常簡便。唯一的缺點是需要瀏覽器的支持,一些較老的瀏覽器可能不支持CORS特性。
跨域支持是創建WebService時應該考慮的一個功能點,希望本文對您在這邊面有所幫助,文中是使用ServiceStack來演示跨域支持的,如果您用的WCF的話,知道跨域原理的前提下,實現跨域應該不難。

參考資料:
https://github.com/ServiceStack/ServiceStack/wiki/Customize-HTTP-Responses
https://github.com/ServiceStack/ServiceStack/wiki/Request-and-response-filters
http://stackoverflow.com/questions/8211930/servicestack-rest-api-and-cors
http://stackoverflow.com/questions/15224038/rename-callback-parameter-for-jsonp

❾ 192.168.0.1被佔用導致,XP網路不能共享

樓主問題應該是區域網是0段的。xp電腦要共享給系統內的虛擬機或者另一個網路 這時xp的intel共享向導默認產生的路由網關也是0段的。最近我也是遇到這個問題

❿ ARP攻擊!

你可以進入路由器管理員嗎?我有一招很毒辣的,神不知鬼不覺來形容。不用高檔的路由器普通的路由器都行。不使arp攻擊,直接禁用別人的BT 迅雷 qq pps 快車 脫免 旋風 ....但不影響網頁使用!

前提是你要加到200分我才教!如果你進入不了路由器管理員192.168.1.1就沒法教你了。

閱讀全文

與wcf過濾器相關的資料

熱點內容
凈水泵壓力是多少 瀏覽:596
小型空氣凈化器掰開怎麼安裝 瀏覽:856
廁所排污水箱怎麼選 瀏覽:817
鐵釘放在蒸餾水裡 瀏覽:357
水泥廠用什麼濾芯 瀏覽:98
日本排放污水日本國民怎麼看 瀏覽:634
用檸檬酸除垢劑後水一直很黃 瀏覽:979
學校飲水機為什麼有泥土的味道 瀏覽:782
110pc凈水管爛了怎麼接 瀏覽:220
油漆桶清洗廢水 瀏覽:865
ro膜凈水量少廢水多 瀏覽:140
三合一過濾怎麼不沖浪 瀏覽:937
凈水器100g出水是多少公斤 瀏覽:815
污水池防水哪裡實惠 瀏覽:362
怎樣辯別樹脂瓦好與不好 瀏覽:285
菏澤污水處理廠數據 瀏覽:771
空氣凈化器吹熱風怎麼回事 瀏覽:675
汽車濾芯用什麼填膠水 瀏覽:894
小區飲水機卡怎麼自己充費 瀏覽:486
樹脂井蓋清掃井 瀏覽:992