目前日期文章:201303 (298)

瀏覽方式: 標題列表 簡短摘要
1IQW221-2  
最近在工作上碰到一個性能問題,由於專案是基於SOA的架構,使得整個系統完全依賴于各種各樣的Service,其中用於處理業務邏輯的Business Services全部都用.NET Workflow 3.5實現(歷史原因,專案還沒升級到Workflow 4)。在眾多的Business Service中,其中有一個的主要功能是,通過調用不同的Data Service來獲取資料,然後根據業務邏輯來組織這些資料並返回給它的調用者。該Business Service的工作流(Workflow)主要包含三個活動元件(Activity),大致可以用下圖表示:

1IQU021-0  

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

PowerManager pm = (PowerManager) getSystemService(CoNtext.POWER_SERVICE);通過 CoNtext.getSystemService().方法獲取PowerManager實例。
然後通過PowerManager的newWakeLock((int flags, String tag)來生成WakeLock實例。int Flags指示要獲取哪種WakeLock,不同的Lock對cpu 、螢幕、鍵盤燈有不同影響。
獲取WakeLock實例後通過acquire()獲取相應的鎖,然後進行其他業務邏輯的操作,最後使用release()釋放(釋放是必須的)。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

專案需要,兩台Web伺服器,一台資料庫伺服器,一台圖片伺服器,為此需要把圖片保存到跟Web伺服器不同的另外一台伺服器上,所以決定使用WebService的方法。代碼如下



shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

相信很多開發者都用過WebService來實現程式的面向服務,本文主要介紹WebService的身份識別實現方式,當然本文會提供一個不是很完善的例子,權當抱磚引玉了.
首先我們來介紹webservice下的兩種驗證方式,
一.通過集成windows身份驗證

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

新建一個最簡單的網站,並引用使用程式集Nhibernate.dll,頁面代碼為

0936322M4-0  

運行後輸出的結果

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

沒辦法,有時候程式師做事需要非程式師去提醒,去找解決辦法,我只能這樣了
ASP.Net 1.1後引入了對提交表單自動檢查是否存在XSS(跨站腳本攻擊)的能力。當使用者試圖用<xxxx>之類的輸入影響頁面返回結果的時候,ASP.Net的引擎會引發一個 HttpRequestValidationExceptioin。預設情況下會返回如下文字的頁面:


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

專案部署到正式環境時,原來引用web service,在web.config中的節點,出現無法識別的配置節點<applicationSettings>的問題
ApplicationSetting 節點的內容:
<applicationSettings>

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

一、Hashtable的優勢——高效的查找
時間複雜度:
這無疑是Hashtable最大的優勢所在,對於之前提到的資料結構:ArrayList採用順序查找,時間複雜度為O(n),而SortedList採用二分查找,時間複雜度為O(logN),而Hashtable則是O(1)。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

一、Hashtable的優勢——高效的查找
時間複雜度:
這無疑是Hashtable最大的優勢所在,對於之前提到的資料結構:ArrayList採用順序查找,時間複雜度為O(n),而SortedList採用二分查找,時間複雜度為O(logN),而Hashtable則是O(1)。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

在webservice中將dataset序列化是我們經常遇到的問題,但是遇到很大的dataset,則網路傳輸就必須考慮的問題,將dataset處理壓縮後傳輸是我們不錯的選擇,下面提供這種方法:
第一步:引入命名空間下載DataSetSurrogate元件
using System.IO.Compression;

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

什麼叫路由事件,字面理解就是事件是可以傳遞,路由的意思也好理解。路由事件其實就是,事件是會隨著某種變化,來回傳遞。路由事件其實在.NET2.0時期就已經存在了,只不過在一般開發過程中用不到。
從C#3.0開始,就已經封裝了關於路由事件的機制。其實這種實現應該可以換個名字來解釋。我們可以給路由事件起個便於理解的名字,「事件的路由設計模式」。我們都知道,任何大的框架都是從微小的基本語法開始編寫的,平臺、語言給我們提供的僅僅是一些能滿足日常需求的東西;好東西還得我們自己去寫、去創新。在常見的設計模式中,少不了對事件的使用,本人深有體會。是不是高手,不能用他會哪種框架、會哪種語言,而是要看他對他使用的語言所理解程度,能否將一門語言玩的爐火純青,能否寫出高效、簡單的框架;這才是高手。這也是很多初學者所喜歡犯的毛病。
路由事件在一些複雜的系統設計中至關重要,比如我有一個物件,這個物件是一個屬於容器類的物件,就好比我們Windows應用程式中的Form表單,這個表單用來承載一些其他的子表單。然而這樣的遞迴性的設計,經常性的出現。我們在搭建一個介面時,往這個介面上堆積了很多小的視窗。這些小的視窗又堆積了一些更小的視窗。在設計具有層次性的架構時,我們需要考慮這些物件不能被埋的太深,但是又要保持物件的結構原理,就像下圖中所示;

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

這些天要做一個小專案——用Windows服務調用SAP介面獲取資料。網上百度之,確定了方案——用SAP .NET Connector 3.0來與SAP系統交互。用Win7 Ultimate,Visual Studio 2010 Ultimate——於是,我就想用.NET Framework 4.0——於是就有了後來的那個煩人的異常~~~(有時候用最新的東西風險還是不小的)。
我是把與SAP介面交互的業務邏輯寫在一個類庫專案中,生成dll後供Windows服務調用。當我安裝完服務後,看輸出的跟蹤日誌,看到了異常資訊——「SAP.Middleware.Connector.RfcDestinationManager」的類型初始值設定項引發異常。TAT~~

 

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

//sqlhelper類
using System;
using System.Collections.Generic;

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

1.可擴展輸出緩存
自從ASP.NET 1.0發佈開始,一般都是通過使用輸出緩存將頁、控制項和HTTP回應保存在記憶體中。對於後續的Web請求,ASP.NET可以從記憶體中檢索存在的緩存輸出並不是從頭開始重新生成輸出,從而更快地提供回應。但該方法有一個限制,就是緩存的資料必須存儲在記憶體中。在負載較大的伺服器上,輸出緩存的記憶體需求可能會和Web應用程式其它它部分的記憶體需求產生衝突。
ASP.NET 4 為輸出緩存增加了擴充性,使您能夠配置一個或多個自訂輸出緩存提供程式。輸出緩存提供程式可使用任何存儲機制保存 HTML 內容。這些存儲選項包括本地或遠端磁片、雲存儲和分散式緩存引擎。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

1.可擴展輸出緩存
自從ASP.NET 1.0發佈開始,一般都是通過使用輸出緩存將頁、控制項和HTTP回應保存在記憶體中。對於後續的Web請求,ASP.NET可以從記憶體中檢索存在的緩存輸出並不是從頭開始重新生成輸出,從而更快地提供回應。但該方法有一個限制,就是緩存的資料必須存儲在記憶體中。在負載較大的伺服器上,輸出緩存的記憶體需求可能會和Web應用程式其它它部分的記憶體需求產生衝突。
ASP.NET 4 為輸出緩存增加了擴充性,使您能夠配置一個或多個自訂輸出緩存提供程式。輸出緩存提供程式可使用任何存儲機制保存 HTML 內容。這些存儲選項包括本地或遠端磁片、雲存儲和分散式緩存引擎。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

最近使用者在做工作流系統的集成時,總會要求快速的集成到使用者的應用系統。
一般一個成熟的工作流軟體產品,會有流程設計器,流程引擎,表單設計器,流程管理中心。在流程管理中心能視覺化給業務流程建模,併發起流程實例,執行流程的流轉,監控和管理流程實例的運行情況。這些功能是在工作流軟體產品中已經完成的功能模組,流程建模,執行流程實例的過程其實也是一個調用流程引擎api的集成過程,只是這些調用過程都封裝好了,不需要使用者再去關心那些代碼是如何實現的。
在工作流系統集成到應用系統時,集成方案,分二種,一種是直接調用流程管理中心的視覺化模組,將這些視覺化模組的url連結掛接到應用系統的功能表上,使得點擊應用系統的功能表,就執行這些流程的管理模組。這樣就只需要在應用系統的功能表管理中多定義一些關於流程管理的功能表,就可以了。如流程設計器,表單設計器,流程模版管理,啟動流程實例,監控流程實例,我的待辦任務。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

背景
08 年畢業時,參加一個專案,由好幾家公司共同開發,我們公司做資料倉儲部分,包括建立資料倉儲和開發之上的資料庫倉庫管理系統。由於涉及地理資訊,需要 GIS 功能,如使用者在查看空間資料時,框選經緯度範圍,將該空間圖層資料匯出,並打包下載到本地。本文只討論匯出問題。

 

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

我需要用記憶體來代替資料庫,從而避免頻繁地運算元據庫。
using System;
using System.Collections;

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

       /// <summary>
/// 邦定根节点
/// </summary>
public void BindTreeView(DataTable dt)
{
DataTable aldt = GetTreeList("").Tables[0];
//菜单状态
tv.Nodes.Clear(); // 清空树
if (Request.QueryString["Type"] == "User")
{
TreeNode rootnode = new TreeNode();
rootnode.Text = "--所有部门--";
rootnode.Value = "";
rootnode.ImageUrl = "../img/0_Person.gif";
rootnode.NavigateUrl = "../User/AdminUser.aspx";
rootnode.Target = "mainFrame";
tv.Nodes.Add(rootnode);
}
foreach (DataRow r in dt.Rows)
{
string nodeid = r["dept_code"].ToString();
string text = r["dept_name"].ToString();
this.tv.Font.Name = "宋体";
this.tv.Font.Size = FontUnit.Parse("9");
//权限控制菜单
TreeNode rootnode = new TreeNode();
rootnode.Text = text;
rootnode.Value = nodeid;
rootnode.ImageUrl = "../img/0_Person.gif";
if (Request.QueryString["Type"] == "User")
{
rootnode.NavigateUrl = "../User/AdminUser.aspx?dept_code=" + nodeid;
}
else
{
rootnode.NavigateUrl = "DeptRight.aspx?dept_code=" + nodeid;
}
rootnode.Target = "mainFrame";
tv.Nodes.Add(rootnode);
string sonparentid = nodeid;
CreateNode(sonparentid, rootnode, aldt);
}

}
/// <summary>
/// 邦定任意节点
/// </summary>
public void CreateNode(string parentid, TreeNode parentnode, DataTable dt)
{
DataRow[] drs = dt.Select("pare_code= '" + parentid + "'");//选出所有子节点
foreach (DataRow r in drs)
{
string nodeid = r["dept_code"].ToString();
string text = r["dept_name"].ToString();

//treeview set
this.tv.Font.Name = "宋体";
this.tv.Font.Size = FontUnit.Parse("9");

TreeNode node = new TreeNode();
node.Text = text;
node.Value = nodeid;
node.ImageUrl = "../img/0_Person.gif";
if (Request.QueryString["Type"] == "User")
{
node.NavigateUrl = "../User/AdminUser.aspx?dept_code=" + nodeid;
}
else
{
node.NavigateUrl = "DeptRight.aspx?dept_code=" + nodeid;
}
node.Target = "mainFrame";
//node.Expanded=true;
//node.SelectAction = TreeNodeSelectAction.Expand; //和ASP.NET1.1中TREEVIEW的SelectExpands属性等效
string sonparentid = nodeid;// or =location

if (parentnode == null)
{
tv.Nodes.Clear();
parentnode = new TreeNode();
tv.Nodes.Add(parentnode);
}
parentnode.ChildNodes.Add(node);
CreateNode(sonparentid, node, dt);
}
}

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

首先,建立一個windows服務專案

16054R538-0  

然後進行設計檢視

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()