WADER

          java,swt,hibernate,struts,xml,spring,ant,cvs,uml,db,server
          隨筆 - 15, 文章 - 0, 評論 - 0, 引用 - 0
          數(shù)據(jù)加載中……

          2006年6月12日

          在LDAP中使用角色(Role)和組(Group)來管理用戶

          LDAP(輕量級目錄服務器)越來越被廣泛的使用,特別是在管理海量用戶信息和管理身份認證信息的時候,LDAP被國內(nèi)大多數(shù)企業(yè)所使用,從中國電信,中國移動,新浪,和許多省市政府部門都使用LDAP來管理用戶身份的信息。下面重點介紹在LDAP中管理用戶的一些概念和技巧。

          LDAP服務器使用樹狀結(jié)構(gòu)來存儲和查找用戶的信息。這種樹狀結(jié)構(gòu)比較適合用戶身份信息的存儲,因為無論在社會還是在企業(yè)中,對人的管理是分層的。從地域上的國家、省市到區(qū)域,從企業(yè)的大部門到小部門,從總經(jīng)理到小職員,所有的管理都是分層的。“人類的層次劃分是社會活動的自然產(chǎn)物”,忘了這句話是誰說的了,但是我們觀察自己的周圍環(huán)境,樹狀結(jié)構(gòu)的分層無處不在,這也是LDAP為什么在人員管理上這么流行的原因,也是LDAP最初設計的需求。當然,在這里我們不討論人類社會活動現(xiàn)象,只討論LDAP技術(shù)問題。

          LDAP在存儲樹狀結(jié)構(gòu)的數(shù)據(jù)比關(guān)系型數(shù)據(jù)庫有很大的優(yōu)勢。請試圖想想在關(guān)系數(shù)據(jù)庫中要實現(xiàn)這種樹狀的數(shù)據(jù),需要費一番功夫,并且要定位層次比較深的節(jié)點的數(shù)據(jù)需要經(jīng)過復雜的查詢和轉(zhuǎn)換。但是LDAP這種樹狀的結(jié)構(gòu)也有一個重要的缺點,就是很難反映出除了結(jié)構(gòu)層次之外的其他關(guān)系(例如在同一個組織之下的管理和被管理的關(guān)系),而且當組織結(jié)構(gòu)經(jīng)常發(fā)生變化的情況下,樹狀結(jié)構(gòu)很難滿足這種靈活性的要求。有樹狀結(jié)構(gòu)特點決定,當一個組織變化的時候,這個組織下的所有節(jié)點都需要一一變化。

          因此,在LDAP中出現(xiàn)了Group(組)和Role(角色)來動態(tài)的管理節(jié)點之間的關(guān)系。例如,建立一個“管理員”的組或角色,然后可以將不同組織結(jié)構(gòu)下的人員放到“管理員”這個邏輯結(jié)構(gòu)下。那么通過“管理員”這個虛擬的組織結(jié)構(gòu)可以將不同物理組織下的人員動態(tài)的組合在一起。例如給“管理員”賦予特殊的權(quán)力,使他們能夠修改本機構(gòu)中的人員信息。過了一段時間,如果需要將“管理員”這個邏輯組織取消或者改動,只需要在LDAP的單個節(jié)點上操作,而實際“管理員”邏輯結(jié)構(gòu)的成員們,不需要作任何的變化,原來是在哪個物理組織,現(xiàn)在也不用變化。這種Group(組)和Role(角色)的出現(xiàn)是增加了節(jié)點之間的關(guān)聯(lián)程度。

          Group(組)和Role(角色)的功能基本相同,操作起來也很類似。那么Group(組)和Role(角色)到底有什么區(qū)別呢?事實上,由于實現(xiàn)方法不同,Group(組)和Role(角色)在某些操作上體現(xiàn)出不同的性能。

          Group(組)的實現(xiàn)機制很簡單,每個Group本身就是LDAP的一個實體。這個實體有個member的屬性。每次將一個成員添加到這個Group中就會在Member屬性中添加一條記錄(成員的DN)。如果這個Group有200個成員,那么它的member屬性中會有200條記錄。這種實現(xiàn)方式非常適合下面的操作:1. 列舉當前Group下的所有成員。2.將一些成員從當前的Group中刪除或添加。因為所有的成員都記錄在Group實體的屬性里;這種實現(xiàn)方式非常不適合下面的操作:查找某個用戶所屬的所有Group。這個操作可能要去每個Group中查找信息。

          Role(角色)的實現(xiàn)機制就比較復雜了。其實每個LDAP實體本身都有一個“nsrole”的屬性。如果某個角色賦予這個用戶的話,就會在這個用戶的“nsrole”(其實是nsroleDN,這個會在以后解釋)的屬性中添加一個角色的記錄。如果當前用戶有10個角色(例如,他又是領(lǐng)導,又是員工,又是管理員,又是教授....),那么在這個用戶的"nsrole"屬性中會有10條記錄(Role的DN)。這種實現(xiàn)方式非常適合下面的操作: 列舉當前用戶擁有的所有的角色,因為在用戶的“nsrole”屬性中記錄了所有的角色。因此給一個用戶授權(quán)通常使用角色,這是因為從用戶信息中就能很快獲得當前用戶所有的角色,以及相關(guān)的權(quán)限。

          另外還有一些準則來幫助判斷在設計時到底使用Group還是Role。

          1 使用Group會很容易將用戶從一系列“邏輯組織”中刪除或添加。只要是Group的創(chuàng)建者,就有權(quán)限修改Group中的member屬性。而角色(Role)的信息存在每個用戶的“nsroleDN”中,需要特定的權(quán)限才能修改這個屬性。

          2 如果要使用分布式部署(例如使用Chaining的方式),要考慮到角色(Role)是無法跨越服務器的界限

          3 如果成員數(shù)量巨大(超過20000)個,可以使用動態(tài)組的概念(FilterGroup),這個以后再將。

          posted @ 2007-09-24 11:32 wader 閱讀(5682) | 評論 (0)編輯 收藏

          Lucene in Action(中文版)

               摘要: Lucene in Action 中文版  第一部分 Lucene核心 1.      接觸Lucene  2.      索引 3.      為程序添加搜索 4.    ...  閱讀全文

          posted @ 2007-09-09 11:45 wader 閱讀(1909) | 評論 (0)編輯 收藏

          UI項目的團隊組合(來自微軟的借鑒)

          UI項目的團隊組合(來自微軟的借鑒)


          2006.06.11????

          來源:ChinaUI

          UI設計人員是對產(chǎn)品的使用界面進行設計和訂正的人員。 Usability Engineer是檢驗UI設計的合理性的人員。

          在很多團隊,真正的界面設計都是由PM做完了Spec,才找UI設計人員來征求意見。像我們團隊,我的設計規(guī)范書寫完后,我才找UI設計人員來,他們所做的也就不過是對我的設計作小改動,如那些英語詞句用得不妥,哪里的按鈕該改變大小,等等。我所知道的其它視窗操作系統(tǒng)的團隊,也是差不多。這主要是因為我們能自己進行界面設計——視窗操作系統(tǒng)部門的PM是微軟PM中最厲害的。可是,這是不太正確的方法,因為如果你有很強的PM,你可用這種方法,要是你的 PM的設計能力不強,這樣的流程就要出問題。你的項目的成功不應該寄托在幾個強有力的PM上,而是要用完善的流程來保證。好的流程應該是,在產(chǎn)品開發(fā)的早期,在做設計時,PM就應該和UI設計人員一起來考慮產(chǎn)品設計的合理性。

          這個問題在微軟內(nèi)部我們自己也有很大的爭論。 UI設計人員就常常抱怨,在產(chǎn)品開發(fā)的早期,他們常常不被看重,被拋在一邊。UI設計的領(lǐng)導人甚至在全公司的培訓大會上講,我們的這個文化有問題,領(lǐng)導對 UI設計人員在產(chǎn)品開發(fā)早期能起的作用不夠重視。可是這個爭論已有幾年了,結(jié)果仍無改變。我想這主要還是跟我們這個行業(yè)的產(chǎn)品開發(fā)的特性有關(guān)系。因為軟件開發(fā)是很技術(shù)性的,常常在早期的技術(shù)討論中,UI設計人員對技術(shù)討論說不出個所以然來(因為他們大多是學藝術(shù)設計的),漸漸地各開發(fā)團隊對UI設計人員的作用就看輕了。在使用界面因素占很大比例的產(chǎn)品團隊,像 Office 和 MSN ,這種情況要好一些。

          Usability Engineer 所做的事和UI設計人員不同。他們是將UI設計的模型版,找客戶來進行實用和使用性能的檢驗調(diào)查和測試,并根據(jù)調(diào)查結(jié)果對UI設計提出進行修改的意見。也就是說,他們的工作是檢驗UI設計的合理性,有點像測試人員對程序進行檢驗的功能。可以說,Usability Engineer 和UI設計人員的關(guān)系像測試人員與開發(fā)編程人員的關(guān)系。

          User Education team 是編寫使用說明書的編輯人員。

          從大方面的來說,微軟的產(chǎn)品組是公司的幾大部門之一,其他還有市場/銷售部門,服務部門,運作部門,還有研究院什么的。

          合理的開發(fā)團隊組合應該是什么? 允許我拋磚引玉,先談一下微軟的經(jīng)驗:

          項目經(jīng)理團隊:(Program Management Team)
          ? 設計項目經(jīng)理(Feature Design PM):負責具體的產(chǎn)品設計,寫Design Spec,PM 隊伍中,80%的PM是做這個。
          ? 發(fā)行項目經(jīng)理 (Release PM):負責整個項目的流程和進度管理,制定進度表等,協(xié)調(diào)整個團隊的工作。大的PM 隊伍中有一人專門做這個。這是整個項目的領(lǐng)頭人。大型的項目的成功與否,常常靠得力的發(fā)行經(jīng)理的領(lǐng)導。
          ? 協(xié)助項目經(jīng)理(Supporting PM):負責其它產(chǎn)品發(fā)行需要照顧到的事情,如客戶交流、和市場開發(fā)人員交流、負責beta program(初版試行)等等。大的PM 隊伍中少不了這樣的人。20%的PM是做這個。

          開發(fā)團隊:(Development Team)
          ? 開發(fā)團隊領(lǐng)導(Development Manager): 負責管理各個開發(fā)小組,并對開發(fā)編程的工作做總體的規(guī)劃。
          ? 開發(fā)組長(Development Lead): 負責管理開發(fā)工程師,也參加對開發(fā)編程的工作做總體的規(guī)劃。
          ? 開發(fā)工程師(Develop Engineer,or Developer):負責具體的編程開發(fā)。
          ? 構(gòu)架師(Architect): 大的產(chǎn)品團隊有一兩個資深工程師專門做整體系統(tǒng)的設計規(guī)劃。

          測試團隊:(Quality Assurance or Test Team)
          ? 測試團隊領(lǐng)導(QA Manager): 負責管理測試小組。
          ? 測試組長(Test Lead): 負責管理測試工程師,制定測試計劃等。
          ? 測試工程師(Tester or Test Engineer):負責具體的測試工作。
          ? 測試開發(fā)工程師(Developer in Test,or STED): 負責測試工具的開發(fā)。

          產(chǎn)品可用性團隊:(Usability Team)
          ? 產(chǎn)品可用性工程師(Usability Engineer): 做使用性能的調(diào)查和測試,采訪客戶或?qū)⒖蛻粞垇碜稣{(diào)查。
          ? 界面設計師(UI Designer): 負責具體的界面設計。
          ? 產(chǎn)品設計師 (Product Designer): 負責產(chǎn)品的總體設計,特別是硬件產(chǎn)品。

          客戶教育或文檔團隊:(User Education,or UE Team)
          ? 文檔組長(UE Lead):負責管理文檔小組。
          ? 文檔編輯(UE Editor):負責具體的文檔編輯和撰寫。

          以上只是一個大約的組合模式。不同的團隊有各自的側(cè)重點和變化。在很大程度上這些也受到具體的產(chǎn)品的影響。我想我在微軟的產(chǎn)品部門的其他同事們會再做補充。希望這些信息能對國內(nèi)的軟件開發(fā)公司能有參考價值。我們希望通過這樣的交流,我們能為中國軟件開發(fā)事業(yè)的進一步發(fā)展盡我們的一點微薄之力。

          posted @ 2006-06-12 09:47 wader 閱讀(290) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 望都县| 安塞县| 弋阳县| 丰顺县| 故城县| 梨树县| 松阳县| 呼玛县| 进贤县| 阿巴嘎旗| 无棣县| 武宣县| 那坡县| 青岛市| 新营市| 正安县| 东乌珠穆沁旗| 徐汇区| 托克托县| 大渡口区| 二连浩特市| 铜川市| 绥棱县| 渝北区| 洮南市| 永顺县| 固阳县| 清新县| 克拉玛依市| 徐汇区| 望谟县| 尼木县| 读书| 峨山| 忻州市| 新竹县| 乌苏市| 安多县| 石景山区| 马公市| 灵山县|