개발자 대시보드를 활성화하면 상당히 유용한 정보를 손쉽게 얻을 수 있으며 병목 탐지가 원활해지게 됩니다. SQL 구문까지도 알 수 있습니다. 개발자 대시보드의 모드는 ON, OnDemand, Off 3가지가 있습니다. 저희가 평상시 보는 모드가 Off 이며 On 시키면 모든 사이트에서 On 됩니다. 특정사이트만 On 시킬 수는 없습니다.
위의 명령어를 여러 줄 복사해서 관리 셀에서 붙여 넣기 하면 됩니다.
l사이트 생성
필요에 따라 동적으로 여러 사이트를 구성해야 할 필요가 있을 수 있습니다. 그리고 해당 사이트 모음은 해당 데이터베이스로 지정되게 해야 할 경우 아래 구문으로 실행할 수 있습니다.
SQL Azure 에 대한 Service Release에 대한 내용을 정리합니다. 여러 가지 업데이트 된 것이 많이 있으니 참고하시기 바랍니다.
lSQL Azure의 @@version
SQL Azure 로 연결하여 @@version 을 확인해 보시면 11점대로 변경된 것을 확인 가능합니다.제가 사용하는 SQL Server 2008 R2 는 버전이 10.50.1617.0 입니다만 SQL Azure의 버전을 실행한 결과는 아래와 같습니다.
lSQL Azure Import/Export Hosted Service CTP
Windows Azure Management Portal에 로그온 하면 아래와 같은 리본 메뉴를 보실 수 있습니다.
또한 관련 내용은 아래 링크를 참조하실 수 있습니다.
http://sqldacexamples.codeplex.com/wikipage?title=Import Export Service Client
이후 블로깅에서 보다 더 자세한 내용을 다루도록 하겠습니다.
lSQL Server Data Tools “Juneau”
새로운 SQL Server Data Tools 인 코드명“Juneau” CTP가 7월에 릴리즈 되었습니다. Juneau 에서도 SQL Azure 에 대한 내용을 지원해주고 있습니다. 데이터베이스 디자인, 개체 생성과 편집 등을 SQL Azure 에도 진행할 수 있습니다.
또한 다음 블로깅에서 구체적으로 SQL Azure를 대상으로 알아보도록 하겠습니다.
l관리도구(SSMS) 업데이트 필요할 수 있음
데이터센터의 업그레이드로 기존 관리도구(SSMS)의 업데이트가 필요할 수 있습니다. 혹시 연결에서 오류가 발생한다면 아래 주소를 참조해서 업데이트하시면 됩니다.
외부 콘텐츠 형식을 Visual Studio 2010에서 구성해보도록 하겠습니다. Visual Studio 2010을 이용하여 SharePoint 빈 프로젝트를 생성하고 새 항목 추가에서 비즈니스 데이터 연결 모델을 선택하고 “ProductModel” 로 이름을 지정합니다.
생성된 결과는 아래와 같습니다.
BDC 디자인 창의 Entity1을 “Product”로 변경합니다. 그리고 Identifier1 속성을 “ProductID” 로 변경하고 속성 창에서 System.Int32로 데이터 형식을 변경합니다.
솔루션 탐색기의 Entity1.cs 파일을 Product.cs 로 변경하고 아래와 같이 속성을 추가합니다. 실제 외부 목록이나 외부 데이터 열에서 표시할 데이터의 속성이며 외부 데이터 원본으로부터의 데이터를 가져와서 ReadList, ReadItem 메서드에서 처리될 클래스 속성입니다.
BDC 탐색기로 이동해서 ReadItem, ReadList 속성을 위의 클래스에 맞게 수정하면 ProductService.cs 클래스의 메서드가 변경되게 됩니다.
BDC 탐색기가 안보인다면 보기 메뉴의 다른 창에서 BDC 탐색기를 클릭하거나 bdcm 파일에서 BDC 탐색기 링크를 클릭합니다.
ReadItem 메서드의 @id 부분을 @ProductID로 변경하고 Identifier1을 ProductID 로 변경하고 속성 창에서 데이터 형식을 System.Int32로 변경합니다.
@returnParameter 를 확장해서 Entity1을 Product 로 변경하고 속성 창에서 데이터 형식은 현재프로젝트의 Product 클래스를 선택합니다. 그리고 BDC 탐색기의 Product 를 오른쪽 클릭하여 TypeDescriptor 추가를 클릭하여 속성을 추가하고 이름과 데이터 형식을 Product 클래스의 속성과 일치시켜줍니다.
그리고 BDC 탐색기의 ReadList 메서드 아래의 EntityList 을 ProductList로 이름을 변경하고 형식 이름을 현재 프로젝트의 Product 클래스를 지정합니다. 그리고 위에서 생성된 Product 를 오른쪽 클릭하여 복사하고 ReadList 메서드 아래 ProductList 에 붙여넣기 합니다.
이제 솔루션 탐색기의 ProductService.cs 클래스의 코드로 이동하면 Entity1에 대한 기존 메서드 에 해당하는 부분은 삭제합니다.
이제 외부 데이터 원본을 연결하여 해당 제품과 제품 목록을 반환되도록 ADO.NET 코드를 아래와 같이 작성합니다.
프로젝트를 배포하고 BCS 서비스 응용 프로그램에 보면 Product가 아래처럼 생성된 것을 알 수 있습니다. 크롤링은 “아니오”로 되어 있으며 검색을 위해서는 추가 메서드를 구성해야만 합니다.
Visual Studio 2010을 통해 비즈니스 데이터 연결 모델을 통해 생성한 외부 목록 결과입니다.
Visual Studio 2010의 비즈니스 데이터 연결 모델에 대한 내용을 간단하게 알아보았습니다. 필터와 검색 등에 대한 내용은 더 추가해야 합니다. 다양한 외부 데이터 원본에 대해서 Visual Studio 2010을 통해 복잡한 로직을 구성하여 외부 데이터를 손쉽게 연결할 수 있습니다.
현재 SQL Azure Data Sync는 CTP2 이며 현재 시점에서는 별도 비용은 없습니다. SQL Azure Data Sync는 Hub 데이터베이스로 반드시 SQL Azure가 필요합니다. SQL Azure 데이터베이스의 비용은 제쳐두더라도 데이터 동기화 때문에 네트워크 트래픽이 발생하므로 트래픽 비용은 발생하게 됩니다.
SharePoint 2010에서의 열 만들기의 경우 외부 데이터 형식을 선택할 수 있습니다. 그러면 사용자들은 제품 ID나 제품 이름으로 검색해서 데이터를 사용할 수 있습니다. 외부 데이터를 사용하지 않는다면 별도의 목록으로 만들어두어야 하며 데이터를 동기화 해주어야 하고 통합시켜주어야 해서 작업이 더 많아질 수 있습니다. 또한 직접 입력한다면 오타 등으로 인해 데이터 무결성이 떨어지게 됩니다.
SharePoint Designer 2010을 통해 열의 외부 데이터 형식을 손쉽게 접근해 볼 수 있습니다.
자 그러면 SharePoint Designer 2010의 외부 콘텐츠 형식을 생성하고 데이터 원본에 연결합니다.
외부 콘텐츠 형식의 이름은 ProductsFilter로 지정했습니다. 데이터 원본은 SQL Server를 선택하고 AdventureWorks 데이터베이스를 연결했습니다.
데이터 원본 탐색기에서 Product 테이블을 오른쪽 클릭해서 “새 항목 읽기 작업”,”새 목록 읽기 작업”을 선택합니다. 열의 외부 데이터 형식이므로 생성, 삭제 , 수정에 대한 작업은 필요 없습니다.
새 항목 읽기 작업에서는 별다른 설정이 없으므로 화면은 생략하겠습니다. 관련 데이터를 설정하는 내용입니다.
Product 테이블을 오른쪽 클릭하여 “새 목록 읽기 작업”을 선택합니다. 목록 읽기 마법사의 처음 화면에서는 다음을 클릭합니다.
필터 매개 변수 구성 화면에서는 “필터 매개 변수 추가”를 클릭합니다. ProductID 에 대해 필터를 설정하기 위해 “추가하려면 클릭” 링크를 선택합니다. 목록에서 항목을 작성할 때 해당 제품의 ID로 검색하면 해당 외부 데이터가 나타나게 하려고 합니다.
필터 설정 화면에서는 필터 형식은 “비교”, 연산자는 “같음”을 선택하고 확인을 클릭 합니다.
“필터 매개 변수 추가”를 한번 더 클릭하고 “Name” 필드를 선택합니다. 목록에서 항목을 작성할 때 키워드가 포함된 제품 이름으로 외부 데이터를 검색하려고 합니다.
“추가하려면 클릭” 링크를 선택하여 아래와 같이 필터 형식은 “와일드 카드”를 선택하고 기본값 여부를 체크하고 확인을 선택합니다. 그리고 기본값에 “*” 를 입력합니다.
아래와 같이 필터 두 개를 추가했고 연산자는 OR로 지정합니다. 아래 오류 및 경고는 제한 필터로 개수를 제한하고 ProductID 필터에 기본값을 설정하면 됩니다만 여기서는 다음으로 넘어가도록 하겠습니다.
다음을 클릭해서 선택 화면에 나오는 내용을 체크해주도로 하겠습니다.
불필요한 열은 체크를 해제하고 ProductID, Name은 선택 컨트롤에 표시를 체크해주고 마침을 선택하고 저장을 해서 외부 콘텐츠 형식을 생성합니다.
새로운 외부 콘텐츠 형식에 대해서 Business Data Connectivity Services 에서 권한을 할당해주어야 합니다. 외부 콘텐츠 형식을 일부 수정해서 저장하면 버전이 달라져 권한 설정을 새로 해주어야 합니다.
제품평가라는 사용자 지정 목록을 생성하고 “제품명” 이라는 열을 추가하면서 열 형식을 “ProductsFilter”로 선택하고 추가 열을 체크해서 화면에 같이 표시되도록 합니다.
제품명을 하나 추가하면 아래와 같은 외부 데이터 화면을 보실 수 있습니다. 제한 필터를 추가해서 200여개 정도로 제한을 해준다면 아래와 같은 붉은색 메시지는 나타나지 않습니다.
필터를 이용해서 제품을 선택한 후 항목을 추가해봅니다. 제품명에 대해서 외부 데이터를 이용해서 효과적으로 관리할 수 있습니다.
전 편에 이어 Sync Group을 생성해서 SQL Server - SQL Azure로 동기화를 해보도록 하겠습니다.
SQL Azure Data Sync CTP2 에 로컬의 데이터베이스를 등록했으며 이제 SQL Azure를 등록하도록 하겠습니다.
Sync Group은 SQL Azure Data Sync Service에 의해 상호 동기화되도록 구성된 SQL Azure와 SQL Server 데이터베이스의 모음으로 볼 수 있습니다. 하나의 HUB 데이터베이스(SQL Azure 데이터베이스)와 여러 Member 데이터베이스로 구성되어 있습니다.
자 로컬의 Demo 데이터베이스와 동기화 하기 위해 SQL Azure 데이터베이스에 연결하여 빈 데이터베이스를 생성합니다.
로컬의 데이터베이스는 SQL Azure Sync Services를 통해 등록하고 SQL Azure 데이터베이스는 SQL Azure Data Sync CTP2 사이트를 통해 등록합니다. SQL Azure Data Sync CTP2 사이트에서 Databases 탭을 클릭하고 Add를 클릭해서 위에서 생성한 SQL Azure Database를 등록합니다.
등록 정보가 이상 없다면 아래와 같이 등록된 것을 확인 가능합니다.
여러 데이터베이스를 등록할 수 있지만 여기서는 SQL Azure, SQL Server 데이터베이스 두 개만 등록합니다. 이제 Sync Group을 생성해보도록 하겠습니다.
SQL Azure Data Sync CTP2 사이트에서 Sync Groups 탭을 클릭하고 New Sync Group를 클릭해서 위에서 SQL Azure Database를 등록합니다.
New Sync Group의 이름은 “HJ” 로 입력하고 Registered Databases 를 통해 등록된 데이터베이스를 추가합니다. 그리고 SQL Azure 데이터베이스 중 하나를 선택해서 “Set HUB”를 클릭해서 Hub 데이터베이스로 지정합니다.
Next 를 클릭해서 동기화할 테이블과 스케쥴링을 아래와 같이 설정합니다. 동기화할 테이블은 하나만 있으며 시간은 5분으로 지정하겠습니다.
아래와 같이 새로운 Sync Group 이 생성된 것을 확인 가능합니다.
Sync Logs 에 보면 진행, 대기, 완료한 작업 등을 알 수 있으며 처음 동기화 작업이 처리된 것을 확인 가능합니다.
실제 SQL Azure Hub 데이터베이스를 보면 아래와 같이 테이블 스키마와 데이터가 동기화된 것을 확인 가능합니다.
nSQL Azure
기본적으로 변경 사항은 양 방향성격으로 Member 데이터베이스로부터의 변경 사항은 hub 데이터베이스로 전파되고 Hub 데이터베이스에서 Member 데이터베이스로 다시 전파되게 됩니다. 변경 사항의 전파는 Bi-directional, Sync to Hub, Sync from Hub 중에서 선택이 가능합니다.
위의 환경에서는 Hub 데이터베이스가 또한 Member 데이터베이스이므로 데이터를 Update 해보겠습니다. 스케뷸링 시간이 되면 아래와 같이 변경된 것을 확인 가능합니다.
nLocal SQL Server
Hub 데이터베이스에서는 추적을 위해 아래와 같이 몇몇 테이블이 자동으로 생성되게 됩니다.
데이터베이스를 추가하거나 스케쥴링 시간을 변경할 수도 있으며 Sync Group을 삭제할 수도 있습니다.
이번 글에서 SQL Server to SQL Azure Synchronization 에 대한 Sync Group 생성과 데이터 동기화의 설정에 대한 내용을 정리했습니다. 괜찮은 기능으로 보입니다. 속도,비용 등등 고려사항은 별도로 보더라도
그것의 존재에 의해 많은 잠재 고객으로 알려진 것입니다 있는지 확인하기 위해 신제품을 출시할 때. 연락처 다른 사이트는 인터넷 사용자에게 신속하게 동일한 도메인에있는 사이트를 방문할 수있는 기능을 제공합니다. 당신은 단지 링크를 제공 사이트를 방문한 수도 충분히 링크를 작성합니다.
SQL Azure의 경우 데이터베이스는 비즈니스 형태가 50GB 를 지원하고 있습니다. 이 용량을 넘어가는 경우 접근할 수 있는 방법에 대한 내용을 알아보도록 하겠습니다. SQL Azure Sharding 과 SQL Azure Federation 으로 대용량 데이터에 대한 부분을 접근할 수 있습니다. SQL Azure Federation은 차후 CTP 를 통해 다루어 보고 이번 글에서는 SQL Azure Sharding에 대한 내용을 알아봅니다.
Sharding은 여러 데이터 베이스를 통해 수평으로 파티션된 응용 프로그램 패턴이며 응용 프로그램을 위한 데이터의 수평적인 확장성을 제공해줍니다. Windows Azure Training Kit 의 데모에 SQL Azure Sharding에 대한 내용이 있어 적용해서 테스트해보겠습니다.
데이터에 대한 Partion을 생성 할 때 아래 관련 코드 중 PartionField 를 이용하여 여러 데이터베이스에 데이터를 파티션 시킵니다.
실제 응용 프로그램에서 파티션한 결과는 아래와 같습니다. 국가별로 SalesOrderHeader 테이블이 파티션되어 있습니다.
실제 데이터를 한번 살펴보도록 하겠습니다.
위 내용을 통해 응용 프로그램에서 ADO.NET을 이용하여 Sharding Library를 통해 처리된 것을 확인 가능합니다. SSMS를 이용하여 해당 데이터베이스에서 SalesOrderHeader를 SELECT 해보겠습니다. 데이터베이스 별로 Country별로 구분되어 있습니다.
파티션된 결과에 대해서 Select 하는 코드을 접근해보도록 하겠습니다. 아래 코드를 이용하여 Sharding 에 대한 데이터베이스를 병렬로 액세스해서 결과를 병합해주고 있습니다.
SELECT의 웹 페이지 결과는 다음과 같습니다.
Sharding에 대한 INSERT 에 대한 내용도 한번 알아보도록 하겠습니다. 아래 코드를 통해 해당 파티션에 INSERT를 수행하게 됩니다.
위에서 SQL Azure Sharding에 대해서 알아보았는데 SQL Server의 Partitioned 뷰와 유사하며 ADO.NET을 통해 Sharding 에 대한 생성, 조회, 추가를 처리할 수 있다는 것을 알 수 있습니다.
필터 매개 변수 구성에서는 값을 제한 하거나 와일드 카드를 통해 검색하는 것을 설정합니다. 외부 목록의 경우 값을 제한 하지 않으면 화면에 표시가 되지 않으므로 설정해야 합니다.
필터 매개 변수 추가를 클릭합니다. 그러면 오른쪽 상단의 “추가하려면 클릭” 링크를 볼 수 있습니다. 데이터베이스의 열을 적절히 선택하고 링크를 클릭합니다.
필터 구성 창에서는 필터 형식을 선택할 수 있습니다. 여기에서는 외부 목록을 위해 제한을 선택하고 확인을 클릭합니다.
“제한”에 대해서는 반드시 제한에 대한 기본값을 지정해야 합니다.
마침을 누르고 저장을 하면 외부 콘텐트 형식을 만들게 되고 Business Data Connectivity Services에 추가되게 됩니다.
외부 콘텐트 형식을 생성했다고 바로 외부 목록 등을 생성해서 이용 할 수는 없습니다. 중앙 관리의 Business Data Connectivity Services 서비스 응용 프로그램에서 개체 사용 권한 설정을 해주어야 합니다.
위에서 생성한 Contacts 를 선택하고 리본 메뉴의 개체 사용 권한 설정을 클릭합니다. 사용자나 그룹을 추가하고 권한을 선택합니다.
팀 사이트로 이동하여 사이트 작업, 기타 옵션에서 외부 목록을 선택하고 만들기를 클릭합니다.
이름을 입력하고 데이터 원본 구성에서 적절한 외부 콘텐츠 형식을 선택하고 확인을 클릭합니다.
그러면 아래와 같은 외부 콘텐츠 형식을 볼 수 있습니다.
외부 콘텐트 형식의 “모든 작업 만들기”를 선택하였으므로 외부 목록에서 수정하면 해당 데이터베이스의 값이 변경되게 됩니다. 그리고 Office 항목 형식과 오프 라인 사용에 따라서 Outlook의 연락처나 SharePoint Workspace 2010에서의 오프라인 사용도 가능합니다.
수정사항이 발생하여 외부 콘텐트 형식을 수정하면 외부 목록까지 같이 변경되는 것은 아닙니다.
외부 콘텐츠 형식을 만들기 위해 SharePoint Designer 2010을 이용하여 외부 목록을 생성해보도록 하겠습니다.
외부 콘텐츠 형식을 만들기 위해서는 SharePoint Designer 2010에서 사이트를 열어서 생성하게 됩니다.
위의 화면에서 리본 메뉴중의 외부 콘텐츠 형식을 클릭합니다.
이름과 표시이름은 데이터베이스의 테이블 이름과 동일하게 “Contacts”로 지정합니다. 네임스페이스는 이름보다 한 단계 위의 카테고리 개념으로 보면 됩니다. 또한 Office 항목 형식에서 지정한다면 Outlook의 연락처로 연결도 가능합니다. 그리고 SharePoint Workspace 2010에서 오프라인 동기화 사용을 체크할 수 있습니다.
맨 마지막의 외부 시스템을 클릭해서 데이터 원본 설정과 작업을 생성하게 됩니다.
연결 추가를 클릭하면 아래와 같은 화면을 볼 수 있습니다.
데이터 원본 설정에서는 “.NET 형식”, ”SQL Server”, ”WCF 서비스” 세 가지만 설정할 수 있습니다. 다른 데이터 원본에 대한 요구사항은 Visual Studio 2010을 통해 생성해야 합니다.
SQL Server를 선택하고 필요한 정보를 입력합니다.
보안 저장소 응용 프로그램 ID는 외부 데이터를 통합하는 Business Data Connectivity Services는 Secure Store Services 와 연관이 있습니다.
데이터 원본이 잘 연결되었다면 데이터 탐색기에서 데이터베이스를 확장해서 Contact 테이프를 오른쪽 클릭해서 “모든 작업 만들기”를 선택합니다.
마법사에서 작업에 대한 설정을 하게 됩니다.
다음을 클릭하고 외부 항목 선택 컨트롤에 표시하도록 선택한 필드가 없다는 경고에 따라 데이터원본 요소에서 “LastName” 을 선택하고 “선택 컨트롤에 표시”를 체크하고 다음을 클릭합니다.
ReportServcerCredentials같은 경우는 IReportServcerCredentials 형식이라 별도의 클래스를 생성해야 합니다. 해당 클래스는 IReportServcerCredentials 인터페이스를 상속해야 합니다. 인터페이스를 구현하면 아래와 같이 구성되게 됩니다. Authority는 서버전체이름 또는 도메인을 나타냅니다.
로컬에서 실행하고 테스트를 진행해봅니다.
이제 Windows Azure로 게시해보도록 하겠습니다. 물론 결과는 잘 나옵니다.
ReportViewer 컨트롤 외에 ReportService2010.asmx 를 통해서도 보고서를 액세스할 수 있습니다.
이상으로 SQL Azure Reporting에 대한 부분을 간략히 살펴보았습니다.
SQL Azure Reporting 은 아직 SSMS를 통해서 액세스가 되지는 않습니다. 또한 관리자 사이트를 별도로 제공하고 있지 않습니다. 보고서 권한, 매개변수, 스냅숏/캐시 등의 내용에는 제약이 있습니다. 지금은 CTP 입니다. ㅋ
Windows Azure 에서 SQL Azure 데이터를 기반으로 리포팅에 대한 내용을 지원해주고 있는 기능입니다.
SQL Azure Reporting 관련 문서는 아래를 참고하시면 됩니다. 또한 Sample을 다운로드 받을 수 있습니다.
이제 SQL Azure Reporting으로 배포를 하면 됩니다. 프로젝트를 오른쪽 클릭해서 속성을 선택합니다.
TargetServerURL 은 https://서버이름.ctp.reporting.database.windows.net/ReportServer 으로 지정하면 됩니다. Management Portal의 SQL Azure Reporting의 웹 서비스 URL에 대한 정보를 참조합니다.
프로젝트를 배포합니다. 배포할 경우 암호와 패스워드를 물어봅니다. Management Portal 의 SQL Azure Reporting의 User계정 정보에 암호를 입력합니다.
배포가 잘 되었으면 보고서 사이트를 방문해서 결과를 확인하면 됩니다.
https://서비이름.ctp.reporting.database.windows.net/ReportServer 사이트를 열어 SQL Azure Reporting 계정과 암호를 입력합니다. 그리고 나면 배포된 보고서를 확인 가능합니다.
앞에서 언급한대로 WCF REST 서비스를 JSON으로 Windows Phone에서 액세스 해보도록 하겠습니다.
WCF 서비스 웹 역할을 생성하고 서비스의 OperationContract을 아래와 같이 정의했습니다.
GetProductByCategoryID 메서드는 입력 매개변수에 따라 SQL Azure의 데이터를 액세스하고 JSON을 반환하는 내용입니다. 데이터 액세스는 SQL Azure의 아래 화면의 저장 프로시저를 호출하게 됩니다.
크로스 도메인 경계에 대한 내용으로 Clientaccesspolicy.xml 을 프로젝트에 추가했습니다.
로컬에서 테스트하고 아래와 같이 클라우드의 프로덕션 환경으로 게시했습니다.
Windows Phone 프로젝트를 생성하고 ListBox를 추가하고 ItemTemplate을 아래와 같이 지정합니다.
MainPage.xaml.cs 에서는 Load 이벤트에서 아래처럼 JSON 을 반환하기 위해 호출하게 됩니다.
OpenReadCompleted 이벤트에서는 DataContractJsonSerializer 를 이용해서 처리합니다.
자 최종결과는 아래와 같습니다. SQL Azure의 데이터를 WCF 서비스 웹 역할을 통해 Windows Phone에서도 손쉽게 이용할 수 있다는 것을 알 수 있습니다.
클라우드의 SQL Azure를 이용할 경우 IT 자산이 불필요하며 대역폭을 사용한 만큼 비용을 지불하는 장점이 있습니다. SQL Azure를 이용해서 다양한 클라우드 응용 프로그램에서 평상시 쓰던 ADO.NET을 이용해서 SQL Azure를 손쉽게 이용할 수 있다는 것을 알아보았습니다.
너무 멋져요을 개봉된! 나는 필자 전에 이런 걸 배우는 가정 없다. 그래서이 주제에 대한 몇 가지 참신한 아이디어가있는 모든 사람을 찾을 수 좋네요. 정말이 일을 시작 주셔서 감사합니다. 이 웹 사이트는 약간 독창성과 웹, 누군가에 원한의 한 가지입니다. 웹에 새로운 것을 가져다 유용 직업!
SharePoint 2010 프로젝트를 만들려고 하면 팜 솔루션이나 샌드박스 솔루션을 선택하는 창을 보게 됩니다.
Office 365 의 SharePoint Online 사이트에서는 팜 솔루션으로는 제한되고 Client OM, Silverlight, 샌드박스 솔루션을 위주로 진행하게 됩니다.
샌드박스 솔루션이 어떤 것인지 좀 더 구체적으로 알아보도록 하겠습니다.
위 화면의 옵션은 프로젝트를 생성할 때 선택이 가능하며 배포하기 전에도 속성을 변경이 가능합니다.
샌드박스 솔루션의 특징은 다음과 같습니다.
l해당 사이트 컬렉션의 기능에서만 보입니다. 다른 사이트 컬렉션에서는 보이지 않습니다.
l사이트 컬렉션 소유자가 wsp파일을 솔루션 갤러리에 업로드 할 수 있습니다. 그리고 활성화합니다.
l보안에 대해 안전하게 사용할 수 있다. 보안에 제한적이라는 의미입니다.
l리소스가 제한적으로 기본적으로 300 포인트에서만 동작되게 됩니다. 초과하게 되면 임시적으로 중지됩니다. CPU, 데이터베이스 쿼리 등이 리소스에 해당되며 내부적으로 포인트를 계산합니다. 물론 중앙관리에서 포인트를 수정 가능합니다.
l개발자가 코딩하는 것은 큰 차이 없습니다. 빌드, 디버그, 배포에도 큰 차이 없습니다. 해당 코딩에 대해서는 문제가 있을 경우 런타임에서 에러가 나타나게 됩니다. 전체 개체 모델의 SubSet으로 보면 됩니다.
lSPFarm, SPService, System.Net.HttpWebRequest.Create, SPSite 에서 다른 사이트를 액세스하려고 할 경우, SPSecurity.RunWithElevatedPrivileges, SQL Connection 등은 문제가 발생하게 됩니다. 해당 사이트 컬렉션에서만 놀아야 한다고 보시면 됩니다.
l모든 프로젝트 템플릿과 프로젝트 항목이 샌드박스 솔루션을 지원하는 것은 아닙니다. (비쥬얼 웹 파트, 사이트 정의, 비즈니스 데이터 연결 모델, 응용 프로그램 페이지 등)
l페이지 편집에서 웹파트 추가 등 사용하는 것에는 별 차이 없습니다.
l샌드박스 솔루션을 이용하기 위해서는 중앙관리에서 “Microsoft SharePoint Foundation 샌드박스를 작동하는 코드 서비스서비스를 시작해주어야 합니다.
lw3wp.exe 프로세스에서 운영되는 것이 아니라 SPUCWorkerProcess.exe에서 운영됩니다.
다음 내용에서 샌드박스 솔루션에서 직접 런타임에서 오류가 발생하는 내용을 알아보도록 하겠습니다.
너무 멋져요을 개봉된! 나는 필자 전에 이런 걸 배우는 가정 없다. 그래서이 주제에 대한 몇 가지 참신한 아이디어가있는 모든 사람을 찾을 수 좋네요. 정말이 일을 시작 주셔서 감사합니다. 이 웹 사이트는 약간 독창성과 웹, 누군가에 원한의 한 가지입니다. 웹에 새로운 것을 가져다 유용 직업!
요번 글에서는 페이징에 대한 내용을 다루어 보도록 하겠습니다. 커스터마이징을 통해 List의 데이터를 요구사항에 맞게 보여주게 됩니다. 그럴 경우 Server 개체 모델을 통해서는 SharePoint의 List의 데이터를 SPQuery 클래스를 이용해 CAML를 통해 쿼리, 정렬, 필터를 처리할수 있습니다.
그런데 트러블슈팅하러 업체에 가서 코드를 보니 전체를 들고 와서 처리하고 있어 간단히 정리해봅니다.
SPListItemCollectionPosition 클래스를 통해 페이징 처리하는 코드의 예를 한번 살펴보도록 하겠습니다. 먼저 아래와 같은 간단한 사용자 지정 목록에 데이터를 50건 입력했습니다. Ref 는 정렬을 하기 위한 내용으로 0~49까지의 값을 가지고 있습니다.
SharePoint OM에서 SPQuery를 통해 RowLimit, Query(Where, OrderBy)를 처리해서 1페이지에 대한 내용을 출력해줄 수 있습니다.
아래 코드의 내용을 보면 10건으로 제한하고 Ref를 Descending으로 정렬해서 화면에 출력해줍니다. 1 페이지의 경우 아래와 같이 처리하고 2 페이지부터는 페이징이 되도록 처리합니다.
1 페이지에 대한 결과는 아래와 같습니다.
2페이지에 대한 내용은 아래와 같이 처리할 수 있습니다. Lastitem은 직접 입력해서 처리했습니다.
SPListItemCollectionPosition 의 생성자의 매개변수(PageInfo)는 다양한 옵션들(Paged, p_정렬키, Next, Prev) 이 있으며 위의 코드에서는 아래와 같은 내용이 처리됩니다.
Paged=TRUE&p_Ref=40&p_ID=41
결과는 아래와 같습니다.
3페이지의 경우는 lastitem을 30으로 해서 실행해보면 됩니다.
물론 페이지 사이즈를 5로 지정해서 테스트할 수도 있습니다.
위의 코드를 기반으로 SPQuery에서 모두 들고 와서 해당 페이지에 대한 내용을 표시해주는 경우 SPListItemCollectionPosition 을 통해 해당 페이지에 대한 내용만 가져와서 표시해 줄 수 있습니다. 실제 SQL 쿼리에서도 SELECT TOP(@NUMROWS)가 처리됩니다.
Client OM에서도 동일한 클래스(SPListItemCollectionPosition) 를 볼 수 있으며 REST 에서도 페이징에 대한 내용을 지원해주고 있습니다.
댓글을 달아 주세요