Sharepoint 학습노트 - 연습문제 시리즈 - 70-573 연습문제 해석 - (Q81-Q84)

9573 단어 SharePoint
Question 81You need to create a Web Part that creates a copy of the out-of-the-box Contribute permission level.Which code segment should you implement in the Web Part?A. SPRoleDefinition myRole = new SPRoleDefinition();myRole.Name = "Contribute";SPContext.Current.Web.RoleDefinitions.Add(myRole);B. SPRoleDefinition myRole = new SPRoleDefinition(SPContext.Current.Web.RoleDefinitions["Contribute"]);myRole.Name = "MyContribute";SPContext.Current.Web.RoleDefinitions.Add(myRole);C. SPRoleDefinition myRole = new SPRoleDefinition(SPContext.Current.Web.RoleDefinitions["MyContribute"]);myRole.Description = "Contribute";SPContext.Current.Web.RoleDefinitions.Add(myRole);D. SPRoleDefinition myRole = new SPRoleDefinition(SPContext.Current.Web.RoleDefinitions["MyContribute"]);myRole.Name = "Contribute";SPContext.Current.Web.RoleDefinitions.Add(myRole);
해석: 이 제목은 OOTB의 Contribute Permission Level 객체를 복제하는 것입니다.Sharepoint 권한 시스템은 권한-캐릭터-대상-연관의 개념을 채택한다. 즉, 하나의 대상(예를 들어 SPWeb, SPList, SPListItem)에 대해 이미 포함된 역할(SPRoleDefinition)의 연결(SPRoleAssignment)을 추가하여 대상의 권한을 변경할 수 있고, 역할(SPRoleDefinition)은 SPWeb을 미리 통과할 수 있다.RoleDefinitions는 사이트에 추가되었습니다. 주의: SPWeb에만 이 속성이 있으면 역할 정의를 추가할 수 있습니다. 다른 대상, 예를 들어 SPSite, SPList, SPListItem은 모두 역할 정의를 추가할 수 없습니다. 물론 그들도 필요하지 않습니다.관련 클래스: 사용자 또는 사용자 그룹: SPPrincipal은 두 개의 하위 클래스를 확장했다. SPUser와 SPGroup 권한 기본 클래스: SPBasePermissions, 또는 계산을 통해 사용자 정의 권한을 합성한다. 주의: 권한을 편집해야 하는 전제는 보기 권한이 있어야 한다.역할 클래스: 웹을 사용하는 SPRoleDefinition.RoleDefinitions.Add(definition)로 역할을 추가합니다.연결 클래스: 어떤 SPPrincipal에 SPRoleDefinition 역할을 추가한 다음에 이 연결을 대상에 추가합니다. 주의: 이 연결을 대상에 추가하지 않았을 때 이 연결은 무효입니다.
이 문제의 네 가지 옵션은 모두 SPRoleDefinition 대상을 만들기 시작했지만, 각각 다른 구조 파라미터를 사용했습니다. 예를 들어 SPRoleDefinition (): Permission이 없는 새로운 SPRoleDefinition 대상의 실례를 초기화합니다.SPRoleDefinition(SPRoleDefinition): 새 SPRoleDefinition 대상 실례를 초기화합니다. 이 대상 실례는 이미 정의된 다른 SPRoleDefinition 대상에서 복사됩니다.위에서 설명한 바와 같이 우리는 옵션 A를 직접 배제할 수 있다.SPContext를 살펴보겠습니다.Current.Web.RoleDefinitions[매개 변수]의 매개 변수 정의입니다. 이 문제는 Copy가 out-of-the-box Contribute permission level, 즉 시스템의 기본 Contribute 권한을 요구합니다.옵션 B만 이 ["Contritute"] 인자를 사용하고, 옵션 C.D는 Copy 사용자 정의 Contribute 권한입니다.따라서 옵션 B만 본 문제의 요구에 부합된다.각 옵션의 뒷부분: myRole.Name = "MyContribute";//새로 만든 SPRoleDefinition 객체의 이름을 SPContext로 지정합니다.Current.Web.RoleDefinitions.Add(myRole);//이 SPRoleDefinition 객체를 현재 웹에 추가합니다. 
그래서 본 제목의 정확한 옵션은 B 참조: http://technet.microsoft.com/zh-cn/library/cc262690.aspxhttp://msdn.microsoft.com/en-us/library/microsoft.sharepoint.sproledefinition.aspx
Question 82You need to create a Web Part that verifies whether a user who accesses the Web Part page is a member of a group named Group1.Which code condition should you use?A. SPContext.Current.Web.Groups["Group1"].ContainsCurrentUser;B. SPContext.Current.Web.SiteUsers[SPContext.Current.Web.CurrentUser.ID].Groups["Group1"] != null;C. SPContext.Current.Web.SiteUsers[SPContext.Current.Web.CurrentUser.ID].Groups["Group1"] == null;D. SPContext.Current.Web.Users["Group1"].IsDomainGroup;
해석: 이 문제는 현재 사용자가 그룹1의 구성원인지 확인하는 것입니다.B.C 옵션은 지정된 Group 객체가 비어 있는지 여부를 판단하는 것입니다.옵션 D는 그룹1이라는 User가 도메인 내의 그룹인지 여부를 판단합니다.옵션 A만 Group1의 멤버에 현재 User가 있는지 여부를 판단합니다.그래서 이 문제의 정답은 A 입니다.
참조: http://msdn.microsoft.com/zh-cn/library/ms479018(v=office.12).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spgroup.containscurrentuser.aspx
Question 83You have a SharePoint list named Assets that contains 1,000,000 items. The list contains a column named Urgent. Approximately 100 items have a value of True in their Urgent column.You use the following line of code to retrieve the Assets list.SPList assetsList = currentWeb.Lists["assets"];You need to retrieve all of the items in the list that have a value of True in their Urgent column. You must retrieve the items in the minimum amount of time.What should you do?A. Iterate through the assetsList.Items collection.B. Iterate through the assetsList.Fields collection.C. Call assetsLists.GetItems and specify the SPQuery parameter.D. Call assetsList.Items.GetDataTable() and retrieve DataRowCollection.
해석: 이 문제는 대량의 데이터를 포함하는 목록에서 특정한 필드를 특정한 값으로 지정한 모든 Items를 가장 빠른 속도로 검색할 수 있도록 하는 것입니다.Sharepoint에서 데이터를 추출하는 방법은 다양합니다.예: 1.For/Freach 메소드를 사용하여 SPList Items 2를 건너뛰기 전에 SPList 객체를 가져옵니다.또는 먼저 CAML 조회를 만들어서 SPQuery 대상에게Sharepoint에서 필터 조건에 맞는 데이터를 신속하게 추출할 수도 있다.LINQ to SharePoint Provider를 사용하여 목록에 대한 질의를 수행할 수도 있습니다.첫 번째 방법도 당연히 효율이 가장 낮은 방법이다. Items 하나하나를 처리해야 하기 때문에 효율이 자연히 높지 않다.두 번째 방법은 협동 응용 프로그램 표기 언어 (CAML) 라고 불리는 언어 매개 변수화 조회를 사용하기 위해 개발자에게 XML 세션을 집중적으로 분석하도록 요구한다. 이 방법은 효율이 매우 빠르고 우리가 일반적으로 사용하는 방법이다.세 번째 방법은 LINQ to SharePoint 제공 프로그램을 사용하여 SharePoint Foundation 목록 데이터만 조회할 수 있습니다.LINQ 구문을 사용하여 질의를 작성하고 결과를 반환 객체에 지정할 수 있습니다.첫 번째 검색을 실행하면 대상을 일일이 되돌려줍니다.이 경우 LINQ to SharePoint 공급자는 이 질의를 CAML 질의로 변환한 다음 다른 CAML 질의를 처리하는 것처럼 처리합니다.그 중에서 2, 3가지 비교(CAML 대비 LINQ)가 있다. CAML 조회의 주요 장점은 조회를 LINQ 문법에서 CAML 문법으로 바꿀 필요가 없기 때문에 성능 장점이 존재할 수 있다는 것이다.LINQ 질의를 사용하면 C# 및 Microsoft Visual Basic에 통합된 LINQ 구문과 LINQ 키워드를 사용할 수 있습니다.이에 비해 CAML XML은 오류가 발생하기 쉬우며 SharePoint Foundation에만 적용됩니다.LINQ to SharePoint Provider를 사용하여 강력한 유형의 목록 항목 객체를 사용합니다.SharePoint Foundation 클라이언트 대상 모델에서 두 개의 SPListItem 대상은 완전히 다른 유형의 목록의 항목을 표시하더라도 같은 유형입니다.단, LINQ to SharePoint 제공 프로그램은 실체 클래스를 사용하고 사이트의 모든 목록에 사용되는 모든 내용 유형에 하나의 클래스를 포함한다.예를 들어, Announcements 목록의 항목은 Announcement 유형의 객체이고 Tasks 목록의 항목은 Task 유형의 객체입니다.이제 본 문제로 돌아가서 각 옵션을 분석합니다: 옵션 A. B.C는 분명히 모두 사용한 스트리밍 방법입니다. 그 중에서 옵션 A는List의 모든 Items를 스트리밍하고 스트리밍합니다.옵션 B는 List의 모든 Fields를 반환하고 반복합니다.옵션 D는 DataTable로 모든 List Items를 반환하고 반복합니다.
C. 옵션 C. SPQuery 방법을 사용하는 것이 효율적이고 자주 사용하는 방법입니다.그래서 본 제목의 정확한 옵션은 C 참조: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.aspx
Question 84You create a Web Part.The Web Part contains a grid view named GridView1 and the following code segment. (Line numbers are included for reference only.)01 IntranetDataContext dc = new IntranetDataContext("http://intranet ");02 MyGridView.DataSource = from announce In dc.Announcements _ ;0304 Select announce IntranetDataContext is a LINQ context.You need to ensure that GridView1 only displays items from Announcements that have an expiry date that is greater than or equal to the current date.What should you do?A. Change line 04 to the following code segment:Select Not announce.Expires.HasValueB. Change line 04 to the following code segment:Select announce.Expires.Value.CompareTo(DateTime.Now) >= 0C. Add the following line of code at line 03:Where announce.Expires.Value.CompareTo(DateTime.Now) >= 0 _D. Add the following line of code at line 03:Order By announce.Expires.Value.CompareTo(DateTime.Now) >= 0 _
해석: 본 문제는 실질적으로 LINQ의 표현 문법을 시험한 것이고, LINQ는 프로그래밍 언어인 C#과 Microsoft Visual Basic이다.NET의 한 가지 기능.컴파일러는 Visual Studio와 함께 제공됩니다.LINQ는 모든 언어에 SQL과 유사한 문법과 어휘를 추가합니다. 데이터 원본을 조회하는 데 사용할 수 있습니다.그러나 다른 데이터 원본 유형을 가진 언어와 조회 문법과는 달리 원칙적으로 LINQ는 무엇이든지 데이터 원본을 조회하는 데 사용할 수 있다.LINQ를 사용하여 데이터 원본에 접근할 수 있다면, 이 데이터 원본을 위한 LINQ 제공 프로그램을 만들어야 합니다.LINQ to SharePoint 공급자는 Microsoft입니다.SharePoint.Linq 네임스페이스에 정의되어 있습니다.LINQ 질의를 공동 작업 응용 프로그램 태그 언어(CAML) 질의로 변환합니다.개발자는 CAML 쿼리를 작성하는 방법에 대해 더 이상 알 필요가 없습니다.LINQ 질의는 서버 코드에서 사용할 수 있습니다.다음은 Linq for Sharepoint의 예제입니다.
// Get DataContext from page context
DataContext data = new DataContext(SPContext.Current.Web.Url);

// Get the SharePoint list
EntityList<Customer> Customers = data.GetList<Customer>("Customers");

// Query for customers from London
var londonCustomers = from customer in Customers
                      where customer.City == "London"
                      select customer;

foreach (var londonCust in londonCustomers)
{
    Console.Writeline("id = {0}, City = {1}", 
                      londonCust.CustomerId, 
                      londonCust.City);
}

참조 예제에서 볼 수 있듯이 문맥 부분은 Where 부분, 즉 옵션 C 부분이 적다.당신은 또한 나의 Linq For Sharepoint와 관련된 블로그를 참고할 수 있습니다: http://www.cnblogs.com/wsdj-ITtech/archive/2011/11/03/2232530.htmlhttp://www.cnblogs.com/wsdj-ITtech/archive/2011/11/06/2232912.htmlhttp://www.cnblogs.com/wsdj-ITtech/archive/2011/11/08/2233008.html
그래서 본 제목의 정확한 옵션은 C 참조:
http://msdn.microsoft.com/en-us/library/ee535491.aspx

좋은 웹페이지 즐겨찾기