年4月22日項(xiàng)目異常處理log4net主框架搭建_第1頁
年4月22日項(xiàng)目異常處理log4net主框架搭建_第2頁
年4月22日項(xiàng)目異常處理log4net主框架搭建_第3頁
年4月22日項(xiàng)目異常處理log4net主框架搭建_第4頁
年4月22日項(xiàng)目異常處理log4net主框架搭建_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

為什么要有OA ---公司背景由100人小公司到300人的過渡,在廣州、、開,原有的通信方式、工作方式、工作流程等都出現(xiàn)了一些管理的問題,公司急需進(jìn)行提升專業(yè)化、信息化。需求:整個(gè)公司辦公進(jìn)行信息化,辦公無紙化,辦公有記錄,通信有記錄,高層與最前沿員工能夠進(jìn)行垂直溝通,工作流程固定化,業(yè)務(wù)規(guī)范化,公司各種數(shù)據(jù)進(jìn)行集成輔助決策。日常辦公中的困惑普通管理你有拿著一張到處跑的經(jīng)歷嗎?者你的桌面上堆了多少待簽的字?有多少人在你的 門外恭候?異地的是什么/如何提高你和你的下屬的效率工作上的單據(jù),信息上的交流,大量的傳真同事不能見面/辦公費(fèi)用的增加)資料管理資料分散在各人或

,如何集中管理和共享者你的桌面上堆了多少待簽的字?異地的是什么/有多少人在你的 門外恭候?如何提高你和你的下屬的效率工作上的單據(jù),信息上的交流,大量的傳真同事不能見面/辦公費(fèi)用的增加)每個(gè)公司都存在的問題群體溝通不足、效率低管理行為規(guī)范性難以保障計(jì)劃控制能力不足信息共享

缺乏業(yè)務(wù)系統(tǒng)信息孤島現(xiàn)象突出異地管理成本高、效率低解決這些問題:協(xié)同OAOA?OA是OFFICE

AUTOMATION的縮寫,總體上講,它是指一切可滿足于企事業(yè)單位的、綜合型的、能夠提高單位

信息交流、共享、流轉(zhuǎn)處理的

辦公自動(dòng)化和提高工作效率的各種信息化設(shè)備和應(yīng)用 ;它不是孤立存在的,而是與企事業(yè)單位其它各類管理系統(tǒng)(如電子政務(wù)系統(tǒng)、電子商務(wù)系統(tǒng)、 系統(tǒng)、ERP系統(tǒng)、財(cái)務(wù)系統(tǒng))密切相關(guān)、有機(jī)整合。一個(gè)獨(dú)立存在的OA辦公自動(dòng)化系統(tǒng)生命力及作用是薄弱的。OA發(fā)展的階段工具階段:-紙張信息數(shù)字化,純文字、表格處理、文檔處理、、查詢,工具階段MIS階段:-數(shù)字信息匯總,流程、表單管理,局域共享,C/S結(jié)構(gòu)為主流網(wǎng)絡(luò)協(xié)同工作時(shí)代-互聯(lián)網(wǎng)環(huán)境,對(duì)信息全方位、多角度共享及協(xié)同要求,基于智能、門戶、管理及業(yè)務(wù)整合,B/S結(jié)構(gòu)為主流。項(xiàng)目用到的技術(shù)要求前臺(tái)展示:Asp.Net

WebForm項(xiàng)目架構(gòu):動(dòng)軟簡(jiǎn)單三層數(shù)據(jù)庫:SqlServer2008設(shè)計(jì)工具:PowerDesigner代碼管理:SVN上課項(xiàng)目要求:AspNet

MVC

EntityFramework

領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)

低耦合三層JQuery

EasyUI Log4Net

VSS

SqlServer最終效果演示演示地址:http://w/演示地址金和OAhtt致遠(yuǎn)OAhtt通達(dá)OAhttp://w演示地址:/oa演示地址:/演示地址:/研發(fā)部門的開發(fā)概況研發(fā)副總、技術(shù)總監(jiān)、產(chǎn)品經(jīng)理需求

,UI,UE項(xiàng)目經(jīng)理、高級(jí)開發(fā)工程師、開發(fā)工程師測(cè)試經(jīng)理、測(cè)試開發(fā)工程師代碼配置管理員、QA質(zhì)量管理員大型企業(yè)項(xiàng)目開發(fā)流程產(chǎn)品定義:需求制訂(開發(fā)

參與需求

)UI、UE參與設(shè)計(jì);開發(fā)

參與

數(shù)據(jù)庫、接口設(shè)計(jì);測(cè)試

參與測(cè)試用例開發(fā)需求反講、需求形成文檔【各種人簽字】開發(fā)

進(jìn)行開發(fā)并提交測(cè)試【不斷循環(huán)】產(chǎn)品提交實(shí)施部門、培訓(xùn)實(shí)施部門客戶現(xiàn)場(chǎng)安裝部署二次開發(fā)、集成ERP、HR等系統(tǒng)需求制訂項(xiàng)目包含的模塊個(gè)人門戶: 、郵件、尋呼、待辦事項(xiàng)、工作計(jì)劃、工作任務(wù)、投票、公告通知、

、考勤等工作流:公文流轉(zhuǎn)

、辦公流程、 流程等學(xué)習(xí)系統(tǒng)知識(shí)管理:文檔管理、知識(shí)分類管理、知識(shí)內(nèi)容管理、尋呼模塊:消息溝通、郵件、移動(dòng)互聯(lián)、人事管理:?jiǎn)T工管理、部門管理、考勤、崗位管理、職位管理、勞資管理、:會(huì)議室管理、車輛管理、辦公公用品管理管理:客戶關(guān)系、銷售管理、供應(yīng)商、統(tǒng)計(jì)分析系統(tǒng)管理:權(quán)限管理、用戶管理等金和OA模塊架構(gòu)圖致遠(yuǎn)OA產(chǎn)品模塊泛微介紹企業(yè)決策系統(tǒng)集成MailWin32,各種Unix,各種Linux操作系統(tǒng)POP3/IMAP郵件服務(wù)器辦公通協(xié)同工作平臺(tái)ADO.NetDotNet各種數(shù)據(jù)庫Oracle等企業(yè)資源計(jì)劃(ERP)企業(yè)門戶網(wǎng)站企業(yè)決策支持系統(tǒng)供應(yīng)鏈系統(tǒng)HR系統(tǒng)客戶關(guān)系管理業(yè)務(wù)系統(tǒng)財(cái)務(wù)軟件webserverwebserver項(xiàng)目架構(gòu)搭建源代碼管理技術(shù):AspNet

MVC、EF、JQueryEasyUI

Spring.Net Log4Net

WF(WCF,WebService)三層搭建架構(gòu)搭建(一)創(chuàng)建解決方案:方案名稱規(guī)范(公司名開頭,然后就是項(xiàng)目名)在解決方案中添加類庫項(xiàng)目:.OA外mon:基礎(chǔ)公共類庫.OA.Model:基礎(chǔ)業(yè)務(wù)模型.OA.DAL:數(shù)據(jù)庫.OA.IDAL:數(shù)據(jù)庫

接口.OA.BLL:業(yè)務(wù)層:業(yè)務(wù)處理.OA.IBLL:業(yè)務(wù)層接口:約束業(yè)務(wù)接口或者是服務(wù)接口.OA.Services:服務(wù)層:此層使用WebService或者WCF將業(yè)務(wù)封裝對(duì)成服務(wù),也就是SOA化。.OA.WorkFlow:工作流層,放所有的工作流相關(guān)東西在解決方案中添加AspNet

MVC3項(xiàng)目:

.OA.Port架構(gòu)搭建(二)在數(shù)據(jù)庫模型層添加兩個(gè)模型實(shí)體:UserInfo和Department。開始設(shè)計(jì)數(shù)據(jù)庫

層接口抽象公共的數(shù)據(jù)

層操作:IBaseRepository抽象IUnitWork(單元工作)模式實(shí)現(xiàn)數(shù)據(jù) 層使用EF實(shí)現(xiàn)EF抽象出公共基類實(shí)現(xiàn)數(shù)據(jù)庫

公共的方法簡(jiǎn)單工廠→抽象工廠→Spring.Net

IoC注入DI簡(jiǎn)單工廠簡(jiǎn)單工廠:專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類或接口。簡(jiǎn)單工廠模式又稱為靜態(tài)工廠方法(Static

Factory

Method)模式,屬于類的創(chuàng)建型模式,通常根據(jù)一個(gè)條件(參數(shù))來返回不同的類的實(shí)例。抽象工廠抽象工廠模式(英語:

Factory)是一種常見的設(shè)計(jì)模式。此模式為一個(gè)產(chǎn)品家族提供了

的創(chuàng)建接口。當(dāng)需要這個(gè)產(chǎn)品的某一系列的時(shí)候,可以從抽象工廠中選出相對(duì)系的系列來創(chuàng)建一個(gè)具體的工廠類別。抽象工廠不爽?。?!IoC

DI出場(chǎng)IoC:Inversion

ofControl控制翻轉(zhuǎn):就是創(chuàng)建對(duì)象的權(quán)利由開發(fā)器來控制。DI:Dependency

Injection自己控制New,轉(zhuǎn)到了由容It

is

a

process

whereby

objects

define

their

dependencies,that

is,

the

other

objects

they

work

with,

only

throughconstructor

arguments

and

properties

that

are

set

on

theobject

instance

after

it

is

constructed.依賴注入:就是在通過容器來創(chuàng)建對(duì)象的時(shí)候,在對(duì)象的初始化是可以給一些屬性、構(gòu)造方法的參數(shù)等注入默認(rèn)值(可以是復(fù)雜的類型)Spring.Net

出場(chǎng)J2EE:SSH=Spring

+

Struts

+HibernateNet:Spring.Net+AspNetMVC+NHibernateSpring.NET

is

an

application

frameworkthat

provides

comprehensiveinfrastructural

support

for

develoenterprise

.NET

applicationsSpring.Net

Arct容器管理器對(duì)象IObjectFactory是初始化、配置及管理對(duì)象的實(shí)際容器的接口IApplicationContext是IObjectFactory的超集,

一般都會(huì)用IApplicationContext來作為容器。所有功能:自動(dòng)裝配、屬性和構(gòu)造器參數(shù)依賴注入、依賴檢查、生命周期接口等等一般通過配置來設(shè)置此接口的實(shí)例通過配置來配置Spring.Net容器在App配置文件或者是Web配置文件中添加如下配置(見備注)容器中配置對(duì)象1、構(gòu)造器配置對(duì)象2、通過靜態(tài)工廠方法創(chuàng)建對(duì)象第一個(gè)Spring.Net

Demo第一步:創(chuàng)建控制臺(tái)項(xiàng)目第二步:添加配置文件,添加Spring.Net的容器配置到App.Config中去?!九渲靡娚蠌圥PT備注】第三步:在項(xiàng)目中添加UserInfo類型第四步:在Main中執(zhí)行如下代碼IApplicationContext

ctx

=

ContextRegistry.GetContext();UserInfo

user

=

(UserInfo)

ctx.GetObject("UserInfo");第五步:驗(yàn)證對(duì)象是否為NULL屬性注入在對(duì)象節(jié)點(diǎn)下面直接添加Property節(jié)點(diǎn)可以直接設(shè)置Value其他配置設(shè)置集合,空值(*)demo見備注demo:<object

id="exampleObject"type="Examples.ExampleObject,

ExamplesLibrary"><property

name="objectTwo"

ref="yetAnotherObject"/><property

name="IntegerProperty"

value="1"/></object>構(gòu)造函數(shù)注入定義:創(chuàng)建實(shí)體的時(shí)候,直接通過配置指定構(gòu)造函數(shù)的參數(shù)的值或者是對(duì)象的配置demo:<object

id="exampleObject"type="Examples.ExampleFactoryMethodObject,ExamplesLibrary"factory-method="CreateInstance"><constructor-arg

name="objectTwo"ref="yetAnotherObject"/><constructor-arg

name="intProp"value="1"/></object>構(gòu)造函數(shù)跟屬性注入同時(shí)存在同時(shí)存在屬性注入和構(gòu)造函數(shù)注入時(shí),應(yīng)該造函數(shù)注入放到對(duì)象定義最前面demo:<object

id="exampleObject"

type="Examples.MixedIocOExamplesLibrary"><constructor-arg

name="objectOne"ref="anotherExampleObject"/><property

name="objectTwo"

ref="yetAnotherObject"/<property

name="IntegerProperty"

value="1"/></object>面向切面編程**AOP(Aspect-OrientedProgramming)是對(duì)OOP的一種補(bǔ)充,它從一個(gè)不同于OOP的角度來看待程序的結(jié)構(gòu):OOP將應(yīng)用程序分解為一系列表現(xiàn)為繼承關(guān)系的對(duì)象;

AOP則把程序分解為一系列方面(aspects)或者關(guān)注點(diǎn)(concerns)。AOP將諸如事務(wù)管理等本來橫向分布在多個(gè)對(duì)象中的關(guān)注點(diǎn)進(jìn)行了模塊化處理(這些關(guān)注點(diǎn)也常稱為橫切(crosscutting)關(guān)注點(diǎn))。方面(Aspect):對(duì)橫向分布在多個(gè)對(duì)象中的關(guān)注點(diǎn)所做的模塊化。在企業(yè)應(yīng)用中,事務(wù)管理就是一個(gè)典型的橫切關(guān)注點(diǎn)。Spring.NET將方面實(shí)現(xiàn)為Advisor或 器(interceptor)。(按:Advisor是通知和切入點(diǎn)的組合,在本文檔中,一般會(huì)把環(huán)繞通知稱為 器,而將其它類型器實(shí)際就是指通知,注意稱為通知,這是因?yàn)榄h(huán)繞通知實(shí)現(xiàn)的是AopAlliance.Intercept.IMethodInterceptor接口,而其它通知類型實(shí)現(xiàn)的都是Spring.Aop命名空間下 接口。)連接點(diǎn)(Joinpoint):程序執(zhí)行過程中的一個(gè)點(diǎn),例如對(duì)某個(gè)方法的調(diào)用或者某個(gè)特定異常的拋出都可以稱為連接點(diǎn)。通知(Advice):AOP框架在某個(gè)連接點(diǎn)所采取的行為。通知有多種類型,包括“環(huán)繞”通知,“前置”通知和“異常”通知等,后文將對(duì)通知類型進(jìn)行 。包括Spring.NET在內(nèi)的很多AOP框架都把通知建模為 器(interceptor),并且會(huì)一個(gè)"包圍"在連接點(diǎn)周圍的 器鏈。面向切面編程案例分析之分析***面向切面編程案例之代碼***C#代碼如下:ICommand

command

=

(ICommand)

ctx["myServiceObject"];command.Execute();在配置文件中添加配置如下:Spring.Net

+AspNet

MVC使用場(chǎng)景:可以直接將服務(wù)注入到控制器里面去Spring.Net輔助AspNet

Mvc開發(fā)的操作步驟:把Golable文件中的默認(rèn)的繼承的HttpApplication改成繼承:Spring.Web.Mvc.SpringMvcApplication【需要添加Spring.Web和Spring.Web.Mvc3的

】在項(xiàng)目中添加Config配置文件夾,添加配置文件并將配置文件設(shè)置為始終 和嵌入資源。配置模板:<object

type="CZBK.ShopManager.Portal.Controllers.HomeController,CZBK.ShopManager.Portal"

singleton="false"

><property

name="rUserInfoRoleInfoService"

ref="IR_UserInfo_RoleInfoService"

/></object>數(shù)據(jù)庫層抽象目標(biāo):業(yè)務(wù)邏輯層依賴于數(shù)據(jù)庫 層的接口,數(shù)據(jù)庫 層不依賴于任何的ORM。所有的可能替換的地方都需要使用接口或者工廠來進(jìn)行解耦。把數(shù)據(jù)庫層抽象出一個(gè)數(shù)據(jù)庫層的統(tǒng)一的,然后此包含所有的實(shí)體的倉儲(chǔ)屬性,而且擁有將整個(gè)數(shù)據(jù)庫層的所有數(shù)據(jù)庫

動(dòng)作一次提交的。另外擁有直接執(zhí)行SQL

的能力。(DbSession)解決數(shù)據(jù)庫層的問題項(xiàng)目可以輕松跨數(shù)據(jù)庫(選擇ORM)EF的ObjectContext保證每次請(qǐng)求都使用一個(gè)實(shí)例(CallContext)倉儲(chǔ)基類實(shí)現(xiàn)增刪查改倉儲(chǔ)接口、DbSessionContext類的倉儲(chǔ)接口屬性自動(dòng)生成(T4)TT模板技術(shù)(*)補(bǔ)充T4是對(duì)“Text

Template

TransformationToolkit”(4個(gè)T)的簡(jiǎn)稱。T4直接包含在VS2008和VS2010中,是一個(gè)基于文本文件轉(zhuǎn)換的工具包。T4的是一個(gè)基于“文本模板”的轉(zhuǎn)換引擎(以下簡(jiǎn)稱T4引擎),

可以通過它生成一切類型的文本型文件,比如常用的代碼文件類型包括:C#、VB.NET、T-SQL、XML甚至是配置文件等。右擊項(xiàng)目文件,選擇"Add"|"New

Item",在模板列表中選擇"TextTemplate"。指定文件名后確定,一個(gè)后綴名為.tt的文件單元測(cè)試單元測(cè)試: 的獨(dú)立單元將在與程序的其他部分相 的情況下進(jìn) 試。一般 以一個(gè)方法為單位進(jìn)行單元測(cè)試主要測(cè)試目的:方法的執(zhí)行跟 預(yù)期是否一致,方法的執(zhí)行的是否一直跟期一致預(yù)減少的bug(節(jié)約了修改bug的時(shí)間),讓 更加相信 的代碼(提高了可靠度),編寫單元測(cè)試也是一種設(shè)計(jì),可以輔助監(jiān)測(cè)項(xiàng)目進(jìn)度,單元測(cè)試就是最好的文檔。單元測(cè)試數(shù)據(jù)不要影響數(shù)據(jù)庫原有數(shù)據(jù),而且在測(cè)試完畢后要清理測(cè)試數(shù)據(jù)使用微軟自帶的單元測(cè)試組件可以進(jìn)行有效的壓力測(cè)試把依賴的項(xiàng)目加入到單元測(cè)試中臨時(shí)文件夾中業(yè)務(wù)邏輯層封裝抽象出業(yè)務(wù)邏輯層服務(wù)的基類在基類里面實(shí)現(xiàn)增刪查改抽象基類里添加方法:設(shè)置當(dāng)前基類的CurrentObjectContext。必須讓子類實(shí)現(xiàn),則引入

的方法。使用T4模板自動(dòng)生成源代碼管理源代碼控制管理系統(tǒng)(Source

Control

Management,SCM)SCM提供文本管理和版本控制功能。文本管理:文本簽出 檢查、文本代碼保存管理版本控制:版本回滾、代碼回滾、 版本控制等為什么要源代碼管理:例子1:一個(gè)復(fù)雜的項(xiàng)目,團(tuán)隊(duì)成員10幾個(gè),代碼每個(gè)人都有一份,最后給客戶部署的時(shí)候把每個(gè)人的 代碼弄到一塊,然后編譯一下發(fā)給客戶部署,由于每個(gè)開發(fā) 的其他模塊不一定是 的所以代碼經(jīng)常出現(xiàn)bug,造成產(chǎn)品問題特別多。例子2:今天寫的代碼很多沒保存了,突然斷電了硬盤掛了,寫了半年的項(xiàng)目至此跟你說goodbye,你哭的都沒地方了。例子3:昨天的代碼好好的,今天突然來了靈感了改成另外一種方式,之前的代碼都刪掉了,直接在原來代碼上改動(dòng),后來發(fā)現(xiàn)這個(gè)思路不對(duì),想回到昨天代碼的狀態(tài),或者跟之前的對(duì)比一下哪里有問題,再次哭了。簽入、簽出、返回歷史版本、開發(fā) 工作效率統(tǒng)計(jì)VSS代碼管理代碼數(shù)據(jù)庫:所有主控副本、歷史記錄、項(xiàng)目結(jié)構(gòu)和用戶信息

的位置。一個(gè)項(xiàng)目總是包含在一個(gè)數(shù)據(jù)庫中。多個(gè)項(xiàng)目可以多個(gè)數(shù)據(jù)庫。數(shù)據(jù)庫其他常用的表述有

庫和在一個(gè)數(shù)據(jù)庫中,也可以使用。綁定:將解決方案或者項(xiàng)目在磁盤上的工作文件夾關(guān)聯(lián)到其數(shù)據(jù)庫中的文件夾的信息。簽出并編輯同一個(gè)文件的情況下對(duì)同一行代碼的:在兩個(gè)或者多個(gè)開發(fā)兩個(gè)或者多個(gè)不同的更改。歷史記錄:一個(gè)文件從其初始被添加到源代碼管理以來所做的更改的記錄。使用版本控制,您可以返回到文件歷史的任何點(diǎn)并恢復(fù)存在于那個(gè)點(diǎn)的文件。本地副本:在用戶工作文件夾中的文件,在簽入之前更改保存在該文件其中。本地副本有時(shí)稱為工作副本。工作文件夾:受源代碼管理項(xiàng)的本地副本

的位置,通常位于您自己的計(jì)算機(jī)上的。工作文件夾的另一種表述是工作區(qū)。案例在現(xiàn)有項(xiàng)目添加到源代碼管理設(shè)置源代碼

賬號(hào)權(quán)限,創(chuàng)建只讀賬號(hào)reader首先創(chuàng)建源代碼數(shù)據(jù)庫,然后再新建項(xiàng)目VSS代碼管理使用的幾個(gè)原則代碼。解決方案能夠編譯通過1、工作開始初次打開解決方案時(shí)應(yīng)向服務(wù)器請(qǐng)求2、工作結(jié)束時(shí),應(yīng)向服務(wù)器簽入 代碼,3、不要長(zhǎng)時(shí)間簽出項(xiàng)目或解決方案。當(dāng)向項(xiàng)目添加新項(xiàng)后為編輯任何程序代碼時(shí),應(yīng)立即簽入項(xiàng)目,以便其他成員可操作該項(xiàng)目。4、不要簽出整個(gè) 。并且除非特別必要,不應(yīng)同時(shí)簽出過多的項(xiàng)5、某工作步驟完成后,應(yīng)編譯整個(gè)項(xiàng)目以檢驗(yàn)當(dāng)前工作。如果不出現(xiàn)編譯錯(cuò)誤,則應(yīng)盡快簽入這部分代碼。6、不要不經(jīng)過編譯而簽入可能不通過的代碼。這將影響所有成員的進(jìn)度。7、依賴項(xiàng)也需要添加到版本庫8、編譯出來的文件不應(yīng)該加入版本控制編譯出來的文件不應(yīng)該加入版本控制項(xiàng)目中的整體異常處理異常處理的時(shí)機(jī):ExceptionFilter繼承

HandleErrorAttribute。重寫OnException方法。方法

:處理異常、并將異常信息記錄日志、并讓當(dāng)前請(qǐng)求進(jìn)行跳轉(zhuǎn)到指定的錯(cuò)誤頁面由于全局都需要進(jìn)行異常的處理,所以直接添加全局過濾器比較合適。在Global.asax的RegisterGlobalFilters方法中

自己的異常處理過濾器。Log4NetLog4Net是用來記錄日志的,可以將程序運(yùn)行過程中的信息輸出到一些地方(文件、數(shù)據(jù)庫、EventLog等),日志就是程序的黑匣子,可以通過日志查看系統(tǒng)的運(yùn)行過程,從而發(fā)現(xiàn)系統(tǒng)的問題。日志的作用:將運(yùn)行過程的步驟、成功失敗記錄下來,將關(guān)鍵性的數(shù)據(jù)記錄下來分析系統(tǒng)問題所在。來講,不能把異常信息顯示給用戶,異常信息只能記錄到日,就能知道問題所在??慈琦i站內(nèi)搜索的日志文件。對(duì)于志,出了問題把日志文件發(fā)給開發(fā)配置Log4Net環(huán)境新建一個(gè)控制臺(tái)項(xiàng)目,添加一個(gè)“應(yīng)用程序配置文件”(App.config)在App.Config或者Web.Config的添加配置,見備注添加對(duì)log4net.dll的初始化:在程序最開始加入log4net.Config.XmlConfigurator.Configure();在要打印日志的地方LogManager.GetLogger(typeof(Program)).Debug("信息");

。通過

LogManager.GetLogger傳遞要記錄的日志類類名獲得這個(gè)類的ILog(這樣在日志文件中就能看到這條日志是哪個(gè)類輸出的了),然后調(diào)用Debug方法輸出消息。因?yàn)橐粋€(gè)類

不止一個(gè)地方要打印日志,所以一般把ILog

為一個(gè)static字段。輸出錯(cuò)誤信息用ILog.Error方法,第二個(gè)參數(shù)可以傳遞Exception對(duì)象。log.Error("***錯(cuò)誤"+ex),log.Error("***錯(cuò)誤",ex)測(cè)試代碼:見附件。Log4Net相關(guān)概念(*)Appender:可以將日志輸出到不同的地方,不同的輸出目標(biāo)對(duì)應(yīng)不同的

Appender:RollingFileAppender(滾動(dòng)文件)、AdoNetAppender(數(shù)據(jù)庫)、SmtpAppender

(郵件)等。level(級(jí)別):標(biāo)識(shí)這條日志信息的重要級(jí)別。

None>Fatal>ERROR>WARN>DEBUG>INFO>ALL,設(shè)定一個(gè)Level,那么低于這個(gè)Level的日志是不會(huì)被寫到Appender中的。Log4Net還可以設(shè)定多個(gè)Appender,可以實(shí)現(xiàn)同時(shí)將日志記錄到文件、數(shù)據(jù)、發(fā)送郵件等;可以設(shè)定不同的Appender的不同的Level,可以實(shí)現(xiàn)普通級(jí)別都記錄到文件,Error以

別發(fā)送郵件;可以實(shí)現(xiàn)對(duì)不同的類設(shè)定不同的Appender;還可以自定義Appender,這樣可以自己實(shí)現(xiàn)將Error信息發(fā) 等。除了Log4Net,還有Enterprise

Library中的Logging

Application

Block、Apache的CommonLog

以及NLog等,都差不多。用Log4Net有什么好處?自己寫文件不一樣嗎?靈活,可以不改代碼只要改配置就可以做任意的控制。將每天的日志寫到對(duì)應(yīng)日期的文件下(配置見備注)序列化成JsonAspNetMVC提供的Json方法在處理有關(guān)聯(lián)實(shí)體的時(shí)候,如果存在循環(huán)

則序列化會(huì)失敗。第解決方案:Json.Net項(xiàng)目中的Newtonsoft.Json來解決。設(shè)計(jì)接口,不要直接依賴于Json.Net(包括:序列化、反序列化)Newtonsoft.Json使用實(shí)例添加Newtonsoft.Json.dll序列化成JsonNewtonsoft.Json.JsonConvert.SerializeObject(obj)反序列化成ObjectNewtonsoft.Json.JsonConvert.DeserializeObject<T>(json)系統(tǒng)通用權(quán)限管理權(quán)限?例子:人進(jìn)入倉庫前都要進(jìn)行倉庫不是什么人都能進(jìn)入的,任何檢驗(yàn),如果此人有合法權(quán)限進(jìn)入倉庫則放行,如果沒有合法權(quán)限則堵在門外。信息系統(tǒng)中,任何一個(gè)操作都要進(jìn)行權(quán)限的檢驗(yàn),如果有的權(quán)限則讓用戶繼續(xù),如沒有在處理前終止此請(qǐng)求。權(quán)限管理:一般指根據(jù)系統(tǒng)設(shè)置的安全規(guī)則或者安全策略,用戶可以而且只能自己被的資源基于用戶&動(dòng)作的權(quán)限管理基于分組、角色、動(dòng)作、用戶權(quán)限管理部門在權(quán)限系統(tǒng)中一般是角色的集合體以及部分特殊權(quán)限的處理。而Action分組只不過是項(xiàng)目中實(shí)際情況來定的一種設(shè)計(jì)AspNet

MVC下的權(quán)限管理思考(*)系統(tǒng)管理模塊EDMX:參考(*)JQuery

EasyUI

使用介紹Accordion:右邊菜單(做折疊菜單)tabs:做主體區(qū)域的頁面展示datagrid:作為

主要數(shù)據(jù)展示表格空間pagination:分頁控件messager:消息提示控件dialog:模態(tài)非模態(tài) 框控件JQuery

EasyUI官網(wǎng):http

/jQuery

EasyUI是一組基于jQuery的UI插件集合,而jQuery

EasyUI的目標(biāo)就是幫助web開發(fā)者更輕松的打造出功能豐富并且美觀的UI界面。開發(fā)者不需要編寫復(fù)雜的javascript,也不需要對(duì)css樣式有深入的了解,開發(fā)者需要了解的只有一些簡(jiǎn)單的html

。演示:accordion,combobox,

,dialog,tabs,tree,validatebox,windowJQuery

EasyUIDialog實(shí)例第一步:添加 和樣式JQEasyUI/themes/icon.cssJQEasyUI/themes/default/easyui.cssjquery-1.5.1.min.jsjquery.easyui.min.js第二步:在頁面添加

框<div>第三步:在頁面加載完的事件中綁定事件彈出

框1、在頁面加載完后先把要展示的Dialog內(nèi)容所在的Div隱藏掉2、在綁定的彈出 框事件中,先讓Dialog所在的Div的Css屬性Display設(shè)置為block打開關(guān)閉設(shè)置框代碼:$("#dd").dialog("open");框代碼:$("#dd").dialog("close");框?yàn)槟B(tài)只需要設(shè)置屬性:modal:

true,JQuery

EasyUI

可折疊Accordion使用介紹第一步:添加 和樣式(同Dialog)第二步:前臺(tái)頁面中添加折疊菜單內(nèi)容(見備注中)設(shè)置折疊菜單自適應(yīng)父容器:設(shè)置屬性fit="true"添加折疊菜單:$('#aa').accordion('add',

{title:

titleName,selected:

false,iconclse:

'

-ok',content:

str});JQuery

EasyUI

布局框架把某個(gè)Div或者是body分成東、西、南、北、中五個(gè)部分??梢苑謩e設(shè)置5個(gè)div設(shè)置div的class分別為:north、south、east、west、nort就可以分成上下左右中五個(gè)部分。屬性:見備注JQuery

EasyUI

表格使用(一)使用demo(見備注)使用方法:第一步:引入

和樣式第二步:前臺(tái)添加一個(gè)帶Id屬性的table第三步:設(shè)置表格選項(xiàng)值以及請(qǐng)求的地址屬性介紹:設(shè)置加載信息:loadMsg:'正在加載用戶的信息...',是否顯示分頁控件:pagination:true是否只允許選擇單行:singleSelect:

false,頁的大小的選擇:pageList:[10,20,30]JQuery

EasyUI

表格使用(二)關(guān)于日期的處理。由于Net返回的Json格式的數(shù)據(jù)不能直接給用戶展示。使用老外寫的一個(gè)正則表達(dá)式處理插件,引入datapattern.js文件關(guān)于分頁:分頁的文字默認(rèn)都是英文,可以添加語言包改成中文:easyui-lang-

.js在點(diǎn)擊分頁的按鈕時(shí),默認(rèn)將當(dāng)前請(qǐng)求的頁碼以及頁數(shù)據(jù)的大小提交到url屬性所對(duì)應(yīng)的請(qǐng)求,獲取數(shù)據(jù)后刷新表格。通過查看瀏覽器的請(qǐng)求得知請(qǐng)求的表單為:頁碼如:page:3

頁的大小為:rows:10total:共有多少條數(shù)據(jù),rows當(dāng)表格所需要的數(shù)據(jù)格式:{total:30,rows:[]}前頁的數(shù)據(jù)設(shè)置特殊表格的樣式(見備注)獲取選擇的行:var

rows=$('#goodGrid').datagrid('getSelections');用戶管理登陸頁面制作(參考demo)處理用戶修改、查詢、刪除分頁、表格數(shù)據(jù)展示使用linq

關(guān)于Int類型like查詢的解決方案角色管理、分組管理實(shí)現(xiàn)角色的增、刪、改、查實(shí)現(xiàn)用戶角色的設(shè)置實(shí)現(xiàn)分組的CRUD頁面實(shí)現(xiàn)角色和分組的設(shè)置實(shí)現(xiàn)Action管理實(shí)現(xiàn)Action的CRUD,跟分組進(jìn)行關(guān)聯(lián)實(shí)現(xiàn)角色的Action設(shè)置實(shí)現(xiàn)用戶特殊Action的管理登錄處理校驗(yàn)用戶登錄要進(jìn)行用戶的信息

數(shù)據(jù)庫,

要進(jìn)行MD5加密處理用戶登錄以后,此用戶在session有效期內(nèi)所有的請(qǐng)求都可以獲取當(dāng)前用戶的信息WebForm處理所有請(qǐng)求都在基類里做過濾和用戶校驗(yàn)處理,在Asp.Net

MVC里可以通過繼承一個(gè)公共的Controller類,然后在基類里的Filter中進(jìn)行處理,則可以進(jìn)行全局的用戶校驗(yàn),以及權(quán)限處理。加密方法AES、DES、MD5等權(quán)限校驗(yàn)時(shí)機(jī)的選擇:可以使用ActionFilter。注意所有的Conntroller本身都實(shí)現(xiàn)了ActionFilter接口,所有控制器本身也是過濾器,所以直接實(shí)現(xiàn)以下控制器的OnActionExcuting方法處理請(qǐng)求是否否會(huì)權(quán)限要求,如果不符合跳轉(zhuǎn)錯(cuò)誤頁面。Y角色是否單獨(dú)擁有Action權(quán)限角色分組中是否擁有Action權(quán)限N開始用戶是否合法是否是Admin角色用戶是否具有此動(dòng)作的特殊權(quán)限角色是否具有此Action權(quán)限允許NN結(jié)束YY當(dāng)前請(qǐng)求是否存在YNNYNYJQuery

zTree使用介紹引入

和樣式設(shè)置每個(gè)節(jié)點(diǎn)數(shù)據(jù)的key屬性:treeNodeKey設(shè)置每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)的屬性:z、treeNodeParentKey異步請(qǐng)求Json格式數(shù)據(jù)獲取選中的節(jié)點(diǎn):var

checkedNodes=zTree.getCheckedNodes();展開全部:zTree.expandAll(true);雙擊事件:編寫

onDblclick(event,treeId,treeNode)函數(shù)(函數(shù)名可以自定義),并配置在

setting

的callback

參數(shù)內(nèi),即可zTree

的dblclick

事件。(demo:見備注)富文本編輯器(已經(jīng)講過了)kindeditor

編輯器頁面:程解壓kindeditor-x.x.x.zip

文件,將所有文件上傳到您的序

里在需要顯示編輯器的位置添加textarea輸入框。(見備注)和在頁面load完后創(chuàng)建編輯器(代碼見備頁面中添加注)獲取HTML數(shù)據(jù)

原理是打開新的iframe,編輯完了后調(diào)用self.sync();進(jìn)行同步表單里的文本框工作流?工作流(Workflow),是對(duì)工作流程及其各操作步驟之間業(yè)務(wù)規(guī)則的抽象、概括、描述BPM:是BusinessProcess

Management的英文字母縮寫.即業(yè)務(wù)流程管理.是一套達(dá)成企業(yè)各種業(yè)務(wù)環(huán)節(jié)整合的全面管理模式。

工作流

,顧名思義,就是業(yè)務(wù)信息數(shù)據(jù)在多個(gè)環(huán)節(jié)模塊之間的流轉(zhuǎn)。企業(yè)

業(yè)務(wù)種類非常多、變化也非常多。雖然業(yè)務(wù)變化非常多,但是流程的控制基本是不變的。我們常說的工作流或者是“流程”就是指控制流程流轉(zhuǎn)的引擎。DotNet下的工作流技術(shù)Windows

Workflow

FoundationWindows

WorkflowFoundation(以下簡(jiǎn)稱

WWF)提供了一個(gè)編程框架和工具以開發(fā)和執(zhí)行各種不同的基于工作流的應(yīng)用程序,比如文檔管理、線型的商業(yè)應(yīng)用、貿(mào)易單據(jù)流程、IT管理、

B2B應(yīng)用以及消費(fèi)者應(yīng)用。WF是什么?WF(Windows

Workflow

Foundation):微軟的工作流基礎(chǔ)組件。它是DotNet

Framework中提供基于模型或者是方式的流程執(zhí)行引擎。WF由DotNet

Framework3.0一起發(fā)布。而且已經(jīng)被應(yīng)用與微軟的Sharepoint技術(shù)中。WF包括3個(gè) 組件:活動(dòng)框架工作流活動(dòng)運(yùn)行時(shí)環(huán)境工作流設(shè)計(jì)器WF不是什么?第一個(gè)工作流項(xiàng)目下的一個(gè)打開VS新建一個(gè)解決方案在解決方案中添加一個(gè)WorkFlow“工作流控制臺(tái)應(yīng)用程序”雙擊打開Workflow1.xaml文件添加一個(gè)基元:Wri

ine運(yùn)行Wri ine

Activity:用于輸出一段字符串ine運(yùn)添加一個(gè)序列,并在序列中添加兩個(gè)Wri行程序WF入門之活動(dòng)1Activity在WF中是一個(gè)最基本的概念.當(dāng)談及Activity時(shí),通常是指如下兩個(gè)概念A(yù)ctivtyClass

或在工作流中任意Activity派生類的統(tǒng)稱活動(dòng)也就是流程中的步驟如果右圖WF入門之活動(dòng)2WF入門之活動(dòng)3流程實(shí)例管理介紹WorkflowInvoker

包含同步調(diào)用工作流的實(shí)例方法和靜態(tài)方法。WorkflowInvoker

不允許實(shí)例控件,如保持、卸載或恢復(fù)書簽。Demo:WorkflowInvoker.Invoke(workflow1);WorkflowApplication

類為單個(gè)工作流實(shí)例提供宿主。它是由工作流運(yùn)行時(shí)管理的實(shí)際工作流實(shí)例的

。創(chuàng)建新的工作流實(shí)例,或從實(shí)例

區(qū)中加載工作流實(shí)例。提供擴(kuò)展以供工作流實(shí)例內(nèi)的活動(dòng)使用??刂乒ぷ髁鲗?shí)例的執(zhí)行?;謴?fù)由工作流實(shí)例內(nèi)的活動(dòng)創(chuàng)建的書簽。保留或卸載工作流實(shí)例。接收工作流實(shí)例生命周期事件通知。demo:WorkflowApplication

wfApp

=new

WorkflowApplication(wf);wfApp.Run();WorkflowApplication順序工作流順序工作流就是將順序工作流容器中的所有動(dòng)作按照順序往下執(zhí)行。順序容器Sequence:是在System.Activities.dll中定義的類型,繼承

NativeActivity是一個(gè)sealed類。1.[Activities]集合,可以存放

Activity2.[Activities]集合中的

Activity按順序從上向下執(zhí)行CodeActivity

代碼活動(dòng)WF4.0

提供了許多Activity,但有時(shí)這些Activtiy并不能完成具體功能,如向數(shù)據(jù)庫添加數(shù)據(jù),發(fā)送電子郵件等.在實(shí)現(xiàn)這些具體功能時(shí),

仍要使用某種編程語言,如C#.當(dāng)

需要這種功能時(shí),可以使用CodeActivity。它是一個(gè)抽向類,繼承該類后,需要override該類的Execute方法,用于編寫自定義的功能代碼Demo:見備注工作流中的數(shù)據(jù)的傳遞Variable變量:跟C#一樣可以再整個(gè)工作流或者是其中的一個(gè)Activity中添加一個(gè)變量??梢酝ㄟ^可視化的控制:變量的類型、作用域、默認(rèn)值等。Assign

賦值??梢詫?duì)流程內(nèi)定義的參數(shù),變量賦值。Arguments

參數(shù):Activity中傳入的參數(shù)或者是傳出的參數(shù)。In參數(shù):System.Activities.InArgument<T>傳入?yún)?shù),可以在流程啟動(dòng)的時(shí)候傳入?yún)?shù)的值。只能用于數(shù)據(jù)傳入流程節(jié)點(diǎn)

。Out參數(shù):System.Activities.OutArgument<T>。用于將流程節(jié)點(diǎn)內(nèi)部的數(shù)據(jù)傳遞到外部的變量或者其他流程的傳入?yún)?shù)。In/Out參數(shù):System.Activities.InOutArgument<T>。即用于傳入也用于傳出??刂屏鰽ctivityIF

條件:條件判斷Switch<T>分支處理。While

循環(huán)DoWhile

循環(huán)ForEach<T>循環(huán)Parallel

并行容器TransactionScope

事物容器它繼承NativeActivity。重寫了[CacheMetadata方法]與[Execute方法]主要用于一個(gè)容器

的Activity在一個(gè)事務(wù)內(nèi)部提交處理。其他屬性的介紹:Body:要在事務(wù)中執(zhí)行的ActivityTimeOut:事務(wù)的過期時(shí)間AbortInstanceOnTransactionFailure:事務(wù)取消時(shí)是否取消工作流的執(zhí)行IsolationLevel

:事務(wù)的

級(jí)別Bookmark書簽怎么讓流程停下來,等待其他用戶對(duì)流程進(jìn)行參與處理。而且必須能夠保證流程能夠在原有的處理現(xiàn)場(chǎng)情況進(jìn)行保存,而且能夠?qū)α鞒踢M(jìn)行繼續(xù)啟動(dòng)和處理,那么就需要書簽。要定義具備Bookmark的Activit,可從

NativeActivity繼承,override[Execute

方法],使用

[NativeActivityContext.CreateBookmark方法]添加Bookmark需要override[CanInduceIdle

屬性],使其返回值為[True]Demo:創(chuàng)建一個(gè)書簽。見備注。有返回值的Bookmark案例:財(cái)務(wù)。Flowchar

流程圖工作流流程圖工作流:就是將工作節(jié)點(diǎn)按照流程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論