日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信息化基础建设 开发框架

發布時間:2024/4/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息化基础建设 开发框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發框架

1. ORM, LLBL Gen,NHibernate

2. 接口與實現分離,界面與邏輯分離,分五個項目,
??? BusinessLogic, Interface,Manager,Validation,EntryForm

3. SQL與ORM

4. 通訊集成 Remoting/WCF

5. Control/Component: NumberiEditor,TextEditor,Grid,ComboBox,ListBox,ListView,Tree

6. 異常

7. 元數據

?

ORM

使用ORM可以減少大量的數據讀寫和綁定代碼,做大型的項目,必須用ORM

再配合CodeSmith代碼生成器,可以完成數據讀寫90%的代碼。

?

界面與邏輯分離

做一個MIS的庫存項目,有四個項目

BusinessLogic 業務邏輯,業務實體

Interface 接口

Manager 實現接口

System Administration/Inventory, 界面

這樣達到的效果,

1. 數據表新增加字段,界面部分不需要任何改動;

2. 可以靈活的切換界面到WPF/ASP.NET/Sliverlight

3. 插件式Addon,PlugIn式的開發,新增加功能,不需要改動原有的項目文件

SQL與ORM

ORM是跨平臺的,要兼容所有的主流數據庫,必需創建一種語法,以達到讀寫各種類型的數據庫。

熟悉這個映射表,可以很快的入門,寫出讀寫數據代碼。雖然這個步驟不是必須的(因為CodeSmith代碼生成器會成90%的代碼)。 再配合SQL解析工具,輸入SQL語句,實用程序(SQLTranslate.exe)可以自動翻譯SQL為ORM的寫法。

如果擔憂ORM性能不好,可以直接使用ADO.NET

這個寫法需要工具的配合,才能快速開發.

這個代碼生成器也是組合的方式,例如表名是backupset

Entity 實體

BackupSet

ADO.NET(Get,Save,Insert,Update,GetList)

BackupSetDAL

Interface 接口

IBackupSet

Service 邏輯調用

BackupSetService

ASP.NET應用代碼生成器界面如下,配和ADO.NET或是Enterprise Library,具有很強的威力。

最新版本的ASP.NET應用代碼生成器,直接寫成CodeSmith的模板。這樣,在改動生成的代碼時,不需要任何編譯動作。

CodeSmith現有版本只支持.NET 2.0,不支持.NET 3.5和.NET 4.0, 雖然CodeSmith 6.0 Alpha已經釋出,但是非常的不stable.

也沒有Studio可以使用。

?

SQL Profiler 跟蹤查詢

直接運行SQL Profile

運行自己開發的SQL Profiler

啟動程序中增加配置節

<system.diagnostics>

<!-- LLBLGen Trace

Trace Level: 0 - Disabled

3 - Info

4 - Verbose

-->

<switches>

<add name="SqlServerDQE" value="4" />

<add name="ORMGeneral" value="0" />

<add name="ORMStateManagement" value="0" />

<add name="ORMPersistenceExecution" value="0" />

</switches>

<trace autoflush="true">

<listeners>

<add name="socketWriterTraceListener"

type="Avatar.ORMTraceListener,ORMTraceListener" />

</listeners>

</trace>

</system.diagnostics>

開啟監聽程序

源代碼如下

或者運行如下的跟蹤程序

?

改進的智能提示支持

當鼠標懸停在實體名上時,可以顯示實體對應的表名

當鼠標懸停在字段上時,可以顯示字段對應的表名

在SQL查詢管理器中,當鼠標懸停在表名上時,可以顯示表的注釋

創建表的描述

創建字段的描述

導入表中現有的字段描述,以達到最小的勞動量

智能提示的設計演化過程

1. 把提示內容放到Access數據庫中,這樣,拷貝到項目開發目錄中即可。遇到Provider=Microsoft.Jet.OLEDB.4.0 沒有64bit的版本,編譯時必須設置x86的平臺格式,而不是AnyCPU.

增加Provider=Microsoft.ACE.OLEDB.12.0,但是,在每臺開發人員機器上安裝這個組件,不太實現。

2. 使用SQLExpress, 這種方式的問題,還是需要配置SQL,可嘗試用dbo4之類的對象數據庫,一個文件拷貝到指定目錄就可以(可行, doable)

3. SQL Server內置實現方式,如下圖

打開SQL Profiler, 秘密就在存儲過程sp_addextendedproperty

最后,干脆做一個工具,專門用于更新字段的描述,這樣會方便很多。

?

Remoting/WCF通訊技術

功能目標

1. 應用程序服務器 Remoting/WCF Server

2. Report Server

3. Workflow Server

4. 并發用戶控制,跟蹤日志輸出(Trace output),組件授權驗證

?

License 許可控制

用RSA簽名xml文件,生成不可修改的xml文件,以保護軟件授權許可

與硬件(CPU,Harddisk)信息綁定,在生成license文件時,先要求用戶運行一段實用程序,生成一個hardware的sinature的文件,license generator依據這個文件生成許可文件。

與軟件綁定,比如演示版不允許數據庫超過2G的容量大小(SQL Express規定數據庫大小不能超過4G);只能在規定的時間內運行,通常是一個月,過期后軟件無法啟動;不允許在虛擬機(Virtual Machine)中運行,因為虛擬機的原因,整個系統可以無限制的被Ghost還原;

?

Report Extension

經典的SQL查詢語句的寫法是這樣,可以制作出客戶報表

現在我們換成這樣的查詢數據庫的寫法

2種方式,SQL Procedure和.NET Assembly,可維護性肯定后者強于前者,性能的損失也有.

后者也只有程序員可以維護報表,客戶不可能懂.NET.

但是,面對日益復雜的業務邏輯,多數據庫需求的客戶(有的客戶指定要用Oracle),用.NET Assembly應該是一種趨勢。

?

數據庫管理

一個框架數據庫,驅動多個業務數據庫。

一個業務數據庫可以看成一套帳,可以獨立進行版本管理,功能控制;也可以針對不同的客戶需要,定制(customization)。

如下的注冊公司的界面,Driver Assembly和Driver Type即是注冊客戶定制的程序集,以達到同一個產品,維護多個客戶,不同行業的客戶的使用。

性能(Reflection)的損失是不可避免的,同時也帶來相當可觀的靈活性。

Microsoft的產品也經常Reflection,為什么我們不可以,為一點斤斤計較的Performance?

?

認證authentication,授權authorization 模式(AD/Forms/Windows)

因為我們已經設計出了Application Server,所以,這個地方可以為所欲為,盡情的發揮。

看K3的登陸方式

Activity Directory的方式,是推薦的企業局域網構建方法,AD帶來的PC間相互信任的關系,好處簡直讓人不可忘卻。

Forms方式,可以對用戶名和密碼進行加密,可以記住用戶名和密碼,定期要求用戶修改密碼

Reporting Services的默認登陸方式是Windows,我們需要把它重寫成Forms

很遺憾,即使是Microsoft SQL Server 2008 R2,仍然需要手動修改配置文件,以改成Forms認證。計劃中,要制造一個小工具,來修改Reporting Services的認證方式,手動的配置有些復雜,容易出錯。

再來看集成到ERP中的Report Manager的登陸方式

再來看一下授權,三種權限:功能權限,字段權限,數據權限

功能權限, 基于角色的認證授權 對各子系統的功能模塊的執行權限

先設定用戶組別權限

再到用戶注冊時,設定用戶所屬的組別

可實現ERP系統中60%的權限需求。

字段權限也實現,如上圖,Demo用戶不可以訪問所有的報表,但是可以讀取所有的客戶和供應商信息。

字段權限對某些特殊的字段進行控制,如倉庫人員不可以看到采購員輸入的物料單價,A銷售員,不可以看到B銷售員的客戶的聯系方式,

數據權限,是對具體數據的操作權限。

比如,當采購金額達到10萬時,財務經理Finance Manager不可以直接修改;

于是做出一個數據權限編輯器

如圖中顯示的條件,采購單總金額大于1000000,費用大于5000,而且供應商為Maskey.

這個條件是可以動態增加和刪除,在運行時,由表達式引擎負責解析表達式,傳回表達式執行的結果。

?

異常處理

在業務系統中,異常可實現N層撤消回滾的能力。

為了不暴露具體的產品實現細節,異常的顯示方式,設計如下的異常對話框。

實現方式是注冊當前應用程序域的UnhandledException事件,將異常顯示在自定義對話框中。
AppDomain.CurrentDomain.UnhandledException+= new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

觀察一下Microsoft的產品對異常出錯的提示,Microsoft Report Builder

Microsoft SQL Server

SQL Server出錯窗體的左下方,有三個按鈕,Help,Copy message text, Show technical details

Show technical details會打開一個stack trace的窗體,用于診斷出錯的細節信息。

異常的傳送實現,有二個思路

1. 運用Enterprise Library的Log Application Block,將異常重定向的各種輸出設置中(Console,File,Database)

2. 使用TCP Socket技術,將異常發往指定的服務器,并記錄用戶的操作步驟。因為已經制作出了Application Server,所以,這個地方實現起來也很簡單。至于發送出錯時,當前的操作用戶名稱,stack信息,甚至可以copy screen,把當前出錯的屏幕圖片也一同發送到服務器指定目錄中。

應用框架代碼,將會大量使用.NET Trace機制,將框架的運行狀態輸出

Public class SQLServerTraceListener : TraceListener {

public override void Write(string message)

{

using (SqlConnection conn =

new SqlConnection("server=(local);database=TraceDatabase;Integrated security=true;")) {

using (SqlCommand cmd = conn.CreateCommand()) {

cmd.CommandText = "INSERT INTO Logs(Message) VALUES(@message)";

cmd.Parameters.Add(new SqlParameter("@message", message));

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

}

}

}

public override void WriteLine(string message)

{

Write(message);

}

}

這樣讀寫SQL會導致Performance下降,推薦的方式是TCP Socket技術,把異常發送到服務器(Application Server),大量的異常,是不需要處理的,比如,用戶登錄時輸錯密碼,沒有必要大量的寫到服務器的數據庫中。

框架代碼可以識別哪些是關鍵代碼出錯,這些異常則很有必要記錄到持久化介質中以供開發人員診斷。

?

元數據管理

Schema Viewer ERP維護人員最關心的數據表字段,到底存放了一些什么內容,數據間的關系

數據間關系

.NET 屬性代碼

從圖中看到,已經將Table Name放到了Xml注釋的summary中,這樣,充分利用.NET智能感知。

框架數據庫,還有大量的元數據管理:Report, Lookup,Query, Workflow,Form Layout,User/User Group

轉載于:https://www.cnblogs.com/JamesLi2015/archive/2011/06/07/2074242.html

總結

以上是生活随笔為你收集整理的信息化基础建设 开发框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色呦呦网站在线观看 | 一久久 | 四虎新网站 | 国产精品久久网站 | 国产精九九网站漫画 | av四虎| 国产成人 综合 亚洲 | 亚洲精品小视频 | 日韩高清免费av | 欧美性在线视频 | 成人在线播放视频 | 亚洲xxxx18| 欧美性爱精品一区 | 超碰在线香蕉 | 国产精品91久久久 | 亚洲精品视频在线观看免费 | 国产精品第七页 | 日本特级片 | 日韩欧美无 | 国产污片在线观看 | 草av在线 | 久久久人体 | 国精产品一区一区三区有限公司杨 | 主人性调教le百合sm | 手机福利视频 | 日本伊人影院 | 成人手机在线观看 | 欲色综合| 日本视频网址 | 美女主播福利视频 | 成人在线播放av | 曰本不卡视频 | 奇米狠狠777 | 国产在线一区二区视频 | 蜜臀久久精品 | 亚洲高清免费观看 | 日韩黄色在线播放 | 成年免费在线观看 | 伊人精品国产 | 三女警花合力承欢猎艳都市h | 成年人网站在线观看视频 | 日本男人天堂 | 夜夜se| 欧美精品性视频 | av高潮| 韩日午夜在线资源一区二区 | 美女无遮挡免费网站 | 久久波多野结衣 | 欧美日韩精品区 | 欧美一级射 | av视觉盛宴 | 国产精品视频亚洲 | 韩国成人理伦片免费播放 | 91精品在线免费观看 | 久色成人网 | 99色亚洲| 亚洲精品在线免费看 | 日本xxxx色| 四虎影视永久免费观看 | 色综合中文 | 四虎一国产精品一区二区影院 | 狼人综合伊人 | 国产人久久人人人人爽 | 精品欧美一区二区三区久久久 | 日本妇乱大交xxxxx | 韩国三级hd中文字幕 | 免费午夜激情 | 日本亚洲综合 | 日韩大片免费在线观看 | 日韩色图在线观看 | 自拍偷拍中文字幕 | 国产精品久久久久永久免费看 | 激情久久婷婷 | 日韩欧美a级片 | 少妇15p | 泰坦尼克号3小时49分的观看方法 | 国产95在线 | 日本黄色免费在线观看 | 一区二区在线观看av | 男生舔女生的屁股 | 狠狠干少妇 | 动漫玉足吸乳羞免费网站玉足 | 人人妻人人澡人人爽精品日本 | 日本香蕉视频 | 精品香蕉99久久久久网站 | 国产精品极品 | 华人永久免费视频 | 91精品国产综合久久久密臀九色 | 亚洲天堂久久新 | 国产高清在线 | 另类中文字幕 | 日韩在线你懂的 | 韩日午夜在线资源一区二区 | 在线观看亚洲色图 | 91看大片| 国产chinese男男gaygay视频 | 91亚洲精品在线 | 婷婷激情成人 | 日本老太婆做爰视频 |