SPNote

SharePoint Notes

차갑고 매서운 겨울은 점점...

새해의 시작을 알리는 그날...
마치 하늘은 구멍에 뚫린듯 앞을 가릴 수 없도록
무자비하게 눈다발이 쏟아지던 그날이 떠오른다.

그 잔혹한 흔적은 가끔 내리던 비마저 없어서인지...
한참이나 주변에 머뭇머뭇거리다가
요즘에야 저 구석 사이에 거무튀튀한 하얀색을 노출한다.

Visual Studio 2010 SharePoint Support

Visual Studio 2010 을 이용하여 SharePoint Application 을 개발하며 느낀 것은 새롭게 추가된 SharePoint를 지원하는 기능 중에 가장 유용한 부분 중 하나가 Packaging 이라고 생각합니다. SP 2007 시절, WSPBuilder 를 통해 WSP 파일을 만들거나 이 툴 역시 세밀한 컨트롤이 되지 않아서 직접 makecab 을 이용하여 만들기도 했었는데, 이젠 Visual Studio 에서 알아서 해주니 그야말로 편한 세상입니다. 하지만, 역시나 WSP 랑 비슷하게... 제공하는 것을 쓰다보면 맘에 안 드는 부분이 생기기 마련입니다. 직접 컨트롤하던 것과 비교하여 맘에 안 드는 부분이 생겨서 이 부분을 수정할 수 없나하고 뒤져보던 중... 프로젝트 파일 안의 Microsoft.VisualStudio.SharePoint.targets 을 알게 되었습니다. Andrew Connell 아저씨 방식처럼 Deployment Files 폴더 만들고 ddf, Targets 파일 만들고 직접 컨트롤 하는 방식과 유사하다면 유사하다고 할 수 있겠지만, 여기에 신경 좀 썼다는 것을 느낄수가 있었습니다.

첫째로, *.csproj 파일을 열어보면 아래와 같이 한줄이 추가되어 있는 것을 확인할 수 있습니다.

[code:xml;ln=off]

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\SharePointTools\Microsoft.VisualStudio.SharePoint.targets" />

[/code]

위 경로는 다음과 같습니다. ( MSBuildExtensionsPath32 : C:\Program Files (x86)\MSBuild )
"C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\SharePointTools" 즉, 위 경로로 이동하면 targets 파일을 찾을 수가 있는데, 이 파일을 열면 새로운 세상?을 만나게 됩니다. 프로젝트에서 빌드시 해당 내용에 따라 위의 파일에서 분기되어 처리되는 것을 예상하게 됩니다. (설마 아닐까???) (Visual Studio Add-In 제작과 MSBuild 의 사용 및 구성에 대해 공부할 필요를 느낍니다.)

MSBuild 와 Visual Studio 에 Add-In 된 기능들, 그리고 Microsoft.VisualStudio.SharePoint.Tasks.dll 의 로직을 분석하면 Visual Studio 2010 에 추가된 Solution Build 기능의 해부가 가능할 것 같습니다. 하루빨리 누군가가 정리해서 올려주면 감사할 것 같네요~ (넘기기) ^^ 평소에 친숙하지 않는 분야를 건너뛰기 위해선 흘려야 할 피가 많아서??? 여튼, Amazon.com 에 가서 보니, MSBuild 에 대한 정보가 별로 없다고 하군요... 대신 책 하나 좋은 거 있으니 추천별 5개에 그 이름은 Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build 입니다. 그리고 Visual Studio Add-In 관련해서는 Professional Visual Studio Extensibility (저자 아저씨 머리 웃김...) 입니다. 요즘 사고 싶은 책들이 많아 몸이 근질근질 합니다. ㅠㅠ

 기존의 Application 을 VS 2010 에서 Converting 하던 중... 패키징시 Feature 폴더 이름이 "{솔루션 이름}_{Feature 이름}" 이러게 되어 있어 맘에 안들어서 여기까지 왔습니다. 왜 Solution 이름과 Feature 이름이 포함되고 UnderScore( _ ) 는 왜 들어가는지??? (기존 Feature 이름과의 충돌을 막기 위해서라는 생각밖엔...) 만약 이 부분이 커스터마이징이 안된다면 저 책들을 사던지, 아님 돈 없으면 시간과 노력을 투자하던지 할 것 같습니다.

이 분야에서 전문가의 의견을 듣기를 희망하며 다른 분들도 여기에 살짝 발을 담가보시는건 어떠실지??? 추천을 해봅니다.

SharePoint 2010 Debugging

SharePoint 2010 Debugging  은 SP 2007 과 거의 같습니다. (지금 SP 2007 web.config 가 없어서 확신이 없음...) 이전 글에서 AllowInefficientQueries 에러를 만나고 나서 이전 방식으로 Web.config 파일을 수정했는데, Visual Studio 에서 Script Debugging 이 잘 동작했습니다. 주석으로 Line 번호를 추가하였으니 문자열 검색 혹은 VS 에서 Ctrl + G 하시고 Line 번호 넣고 찾아가셔도 됩니다.

SharePoint 2010 Debugging is almost same with MOSS 2007. Find a web.config file for your Web Application and change values.
  - Path might be: "C:\Inetpub\wwwroot\wss\VirtualDirectoties\<YourWebApplicationName>”
    ex) C:\inetpub\wwwroot\wss\VirtualDirectories\intranet.spnote.dev80

수정할 부분은 아래와 같습니다.
What items should you change are below.

  1. CallStack : true
  2. customErrors : Off (case sensitive)
  3. debug: true

[code:xml;ln=off]

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <SharePoint>
    <SafeMode CallStack="true"> <!-- Line: 51 -->
  </SharePoint>
  <system.web>
    <customErrors mode="Off" /> <!-- Line: 341 -->
    <debug="true">              <!-- Line: 350 -->
  </system.web>
</configuration>

[/code]

위 설정을 완료했음에도 아래의 메시지가 나타날 수 있습니다.
Even though you have configured the values on web.config, you may encounter an error screen below.

image

이때 주소가 /_layouts/* 로 시작된 것이라면 이 Virtual Directory 내의 Web.config 파일도 수정을 해야합니다. 이때는 customErrors Mode 만 Off 로 설정하면 됩니다.
If the URL is like /_layouts/* then you need to change the web.config in _layouts(Virtual Directory) as well. You can simply change customErros Mode to Off.
  - Path: 14 HIVE\TEMPLATE\LAYOUTS\web.config

image

[참고]
- Download Web.config: web.config.zip (9.48 kb)

A first look at SharePoint 2010 Development

SharePoint Server Search Service 시작 이후, 부쩍 늘어난 메모리 사용량을 해결하고자 4GB RAM 의 추가 구매를 했습니다. ㅠㅠ VS 2010 실행하고 간단한 코드 작성과 팀사이트 하나 열고 작업관리자를 보니 약 3.0GB 를 차지합니다. 중앙관리까지 열면??? 다시 한번, 하드웨어 사양이 중요함을 느낍니다.  ㅡㅡ;

Anyhow, Toatal 8GB RAM 장착 기념으로 SharePoint 2010 Developer Walkthroughs 1 을 따라해봤습니다. Title 은 Walkthrough 1: Using LINQ to SharePoint from within a Visaul web part ( SharePoint Visual web part 에서 LINQ 사용하기) 입니다. 흠... 첫번째라 만만히 봤는데, 단지 기능적인 부분이 아닌 완벽한 소스 따라하기?를 하다보니 애로사항이 있었습니다. 그리고 Visual Studio 2010 에서 추가된 막강한? 기능들을 보니 확실히 수작업? 했던 예전에 비하면 완젼 편해졌지만... 어느정도 단점이 될만한 부분도 있더군요... 우선, 이번 작업을 하면서 발견한 사항들입니다.

Things to study...
( 앞으로 공부할 내용으로, 현재 알고 있는 지식 혹은 느낌으로만 요약함 )

  1. Sandboxed Solution VS Farm Solution
    - SP 2007 에서 Farm 배포만 되던 solution 이 Site Collection 레벨에서 배포 테스트 용도 혹은 작은 단위의 Solution ? 등으로 활요할 것으로 보임
  2. Microsoft.SharePoint.Linq 와 SPMetal 명령어 툴
    - Linq 는 써보지 않았지만, 예전 CAML Query 로 제한이 많았던 부분을 어느정도 해소할 것으로 기대함
    - SPMetal 은 List 로부터 content type 정의와 list schema 를 읽어서 Entity Class 를 생성해준다.
      ( 한번 써본 결과의 평가 : Good~~ )
  3. SharePoint 2010 Templates
    - 종류가 여러가지이나, 이번 예제에서 사용되는 Visual Web Part Template 은 SP2007 시절시 UserControl WebPart 를 연상하게 한다.
  4. Visual Studio 2010 Support
    - Template 만으로도 간단히 Solution 파일이 생성되고 솔루션 배포 그리고 필요한 Feature 까지 Activation 되는 놀라운 기본 기능
    - 프로젝트 파일을 열어보니 특별한 target 을 사용하는 부분을 발견했습니다. SP 2007 에서 주로 사용했던 Andrew Connel 방식과 유사할 것으로 예상합니다.

흠... 역시나 SharePoint 의 새 버전 출시는 많은 것을 들고 나오기에 따라가기가 쉽지 않네요... SP 2007 이 해외에서 너무 많이 팔려서 그런지 MS 에서 힘 좀 쓴 걸로 보입니다. 환율이 좋은 이 즈음, Amazon 에 가서 선 책주문을 걸어놔야겠습니다.

 

자~ 그럼 Walkthrough 1으로 돌아가겠습니다. 위 링크를 따라가서 다운받은 PDF 문서를 보면 SharePoint 개발자라면 충분히 따라할 내용이니 세부 설명은 생략하고 제가 진행하면서 막혔던 부분이나 의문을 가졌던 부분을 설명하겠습니다. 그 첫째는 SPMetal 의 실행입니다. 둘째는, Linq 를 사용하는 코드에서 다른 리스트의 내용을 참조하는 부분입니다.

  1. SPMetal 의 실행
    - Visual Studio Command Prompt(2010) 메뉴로 들어가서 spmetal 하고 치면, 안됩니다. ㅡㅡ;
    환경 변수에 들어가 있지 않으니, 당연히 안되는 것으로 생각하고 있습니다. 하지만, 이 명령어의 위치는 알고 있으므로 직접 가서 실행하면 됩니다.

    Path: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN
    ex) spmetal /web:http://wss40 /namespace:SPNote.Projects
          /code:E:\SharePoint\SPHOLs\SPLinqSolutionDemo\SPNote.Projects.cs
         (실행을 하기 위해 한줄로 붙이는 센스는 물어볼 필요없는 덕목?입니다.)

    실행하면 다음과 같은 경고 메시지가 나오는데, List Form Templates 는 빠진다는 내용으로 현재 예제 실행과는 관계 없으므로 과감히 무시해도 됩니다.

      # 예제 실행화면


  2. Sample Code 에서 Employee Entity 에서 Project Entity 를 Property 로 참조하는 부분
    우선 코드는 단편적인 코드는 아래와 같습니다.

      # 코드 요약


    위의 음영된 부분인 Project 는 어떻게 List 를 구성하면 나오는 걸까??? 하고 무지 궁금했습니다. 마침 약속까지 있는 상황에서 조급해지는 마음에 비체계적인 방법으로 새로 추가된 기능인가? 등 무지막지하게 시도를 해보았는데... 잘 안되더군요... 지금 생각해보면 마치 웹에서 지도 감상시 축소 한번만 하면 순식간에 해결될 듯한 문제였습니다. 흠... 혹시 위 문장이 이해가 안되는 분들을 위해서 설명을 드리자만... 특정 범위내에서 한정하기보다 좀 더 위로 올라가서 일반적인 시각으로 본다는 머 그런 내용입니다. 저는 Content Type 을 이용하여 도전해 보았는데 Item 을 상속하므로 Title 은 둘다 있게 되어 값을 저장하면 같이 저장되는??? 안타까운 현실에 어떻게 풀어볼까 시간 소모만 했었습니다. 정리하자면, 쉽게 생각하면 아주 쉬울수도 있고 괜히 다른 옵션들 안 누르는게 좋다는 것입니다. 
    (덕분에 AllowInefficientQueries TRUE 해달라는 에러까지 도달하였는데, Beta2 부터 안된답니다. ㅡㅡ; 여튼, 다시 한번 축소했기에 Go to bed 가 눈 앞에 있습니다. ) 덕분에 구글링 좀 해보니 JOIN 도 되고 완젼 좋아 보입니다. ^^ 보너스로 비효율적 LINQ 연산자 리스트 주소 남깁니다.

    여러분도 한번 해보시기 바랍니다. 빠르게 한방에 되는 것도 좋지만, 시행착오 속에 발전하는 실력과 SharePoint 의 폭넓은? 이해가 아닐까요? ^^ 저는 덕분에 SDK 좀 뒤져보고 Microsoft SharePoint Foundation 2010.chm 이 더 자주 사용하게 될 것으로 예상하고 있습니다. (WSS 3.0 의 계보를 잇는?)

 

마지막으로 Employees List 의 AllItems 와 테스트 결과 화면입니다.

  # Employees List 의 AllItems.aspx



  # 테스트 결과

 

결론은, 역시나 Sharepoint 2010 개발도 많은 경험과 깊은 연구? 생활을 다시한번 요구될 것으로 예상합니다. 다들 힘내시라는 말밖엔...

위 작업하다가 궁금한 부분이 있으면 질문 환영합니다. 현재 SP2010 Machine 이 집에만 있는 관계로 답변은 느립니다. 참조하시기 바랍니다.

 

SharePoint 2010 Columns

안녕하세요?

Will입니다. 이번에는 저번에 2007에서 개발한 소스를 가지고 SharePoint 2010 에서 다시 사용 할 수 있는지

체크를 해보도록 하겠습니다.

VS2010 의 Class Library를 사용해서 만들어 보았습니다 밑에 포스팅 되어 있는 내용을 참고로 하시면은 됩니다.

그리고 나서 배포를 해보았습니다. 배포후 아래와 같은 결과 하면을 볼 수 있습니다.

결과 1) 새글 추가

 결과2) 내용을 채우 겠습니다.

결과 3) 내용을 쓰면은 0의 값이 들어 가는걸 확인 할 수 있을 것입니다. 

 결과 4) 그리고 나서 DisplayMode에서 확인한 결과 버튼이 잘나오네요.

 결과 5)버튼을 클릭 해 보았습니다.

 

결과 6) 그리고 닫으니.... 허걱 값이 안변하네요! 아마 중간에 확인을 눌렀을시 이벤트가 동작 해야 되는데 닫기를 눌럿더니 값이 안변한것 같습니다.

결과 7) 하지만 F5을 눌러 Refresh를 하니 아래와 같이 값이 들어가 있는 걸 확인 할 수 있습니다.  

SharePoint 2010은 ClientScript로 Ajax처리가 되어 있어서 값의 변화가 있을 시 제로드를 하기 때문에 기존의 값이 변하지 않는 것을 확인 할 수 있습니다.

하지만 자체 DB에 저장되어 있는 값은 +1이 되어 있는 것을 확인 할 수 있습니다.  해당 문제에 대해서는 조금 더 SharePoint 2010을 분석한 후에 추후에

수정 하도록 하겠습니다.  밑에 SharePoint 2010 개발 소스를 올립니다. 참고 하시고 소스에는 주석으로 저희 사이트 이름을 소스에 꼭 넣어서 사용해 주시기 바랍니다.

 질문은 메일로 보내주시거나 코멘트를 다시면은 답변을 드리도록 하겠습니다.

 

SPNote.SharePoint.Fields.zip (38.15 kb)

SharePoint 2010 Study 1

안녕하세요? Karl 입니다.

Finally!!! 개발 PC를 손에 넣었습니다. 그동안 눈팅만 하다가 저만의 규칙?에 따라 그냥 구매했습니다.
(규칙: 소비만큼 열씨미 하게 된다? CPU 는 중간에 바꾸기 어려우므로 좋은걸로 산다. 등등...)
Will 과 함께 2010년 1월 9일(토요일) AM 10:00 에 용산에서 만나서 집으로 옮기고 밤새 조립을...
그리고 현재의 Fantastic PC 를 감상하고 있답니다.

웁스~ Windows 2008 부터 시작하여 SharePoint 2010 까지 설치하는데 거의 하루가 걸렸습니다... ㅡㅡ;
더욱 맘에 안드는 것은 Search 서비스 시작하고 나서 메모리를 확 잡아 먹는다는 것입니다.
(메모리가 4GB 인데, 거의 잡아먹습니다. => 식충으로 예상하고 있음...)
Stop 시키고 싶지만, SP 2007 처럼 버튼 한방에 안되는 관계로 PASS~~ 했습니다. ㅠㅠ
흠... List(목록)의 Item 출력이 궁금해서 AllItems.aspx 렌더링된 html 을 Visual Studio 2010 으로 열었더니...
기어갑니다. TAB 누르면 잠시 있다가 움직이는 그런 비쥬얼 효과... , 승질나서 VS 2008 로 이사갔습니다. ㅡㅡ;

여담이 길었습니다만...
SP2010 개발을 위해서는 고사양의 시스템이 받쳐주지 않으면 일 못한다고 배째야할 것 같습니다.

 

그럼 SharePoint 2010 Study 을 시작하겠습니다. 주제는 예상하셨다시피... AllItems.aspx 입니다.

[AllItems.aspx]

[code:html;ln=off]

<!-- Item1 Begin -->
<tr class="ms-itmhover" iid="2,1,0">
    <td class="ms-vb-itmcbx ms-vb-firstCell">
        <input type="checkbox" class="s4-itm-cbx" />
    </td>
    <td class="ms-vb2"></td>
    <td height="100%" onmouseover="OnChildItem(this)" class="ms-vb-title">
        <div class="ms-vb itx" CTXName="ctx2" id="1" Field="LinkTitle" Perm="0x7fffffffffffffff" EventType="">
            <a onfocus="OnLink(this)"
                href="http://wss40/_layouts/listform.aspx?
                    PageType=4&amp;
                    ListId={A5E99EC8-9246-41C2-8539-483BCEC57E0A}&amp;
                    ID=1&amp;
                    ContentTypeID=0x010097742119E6460B479093DF8B310706DF"
                onclick="EditLink2(this,2);return false;" target="_self">
                Item1
            </a>
            <img src="/_layouts/1033/images/new.gif" alt="New" title="New" class="ms-newgif" />
        </div>
        <div class="s4-ctx">
            <span> </span>
            <a onfocus="OnChildItem(this.parentNode.parentNode); return false;"
                onclick="PopMenuFromChevron(event); return false;" href="javascript:;" title="Open Menu"></a>
            <span> </span>
        </div>
    </td>
    <!-- Body Column1 -->
    <td class="ms-vb2">
        <div dir="" class="ms-rtestate-field">
            <div class="ExternalClass0463C750337B4A10B3DC94F5CC2F35FF"><p>Body​</p></div>
        </div>
    </td>
</tr>
<!-- Item1 End -->

[/code]

현재 SP2007 이 없어서 비교할 수는 없지만, 기억을 더듬어 간략히 정리하겠습니다.
첫째로, 렌더링을 담당했던 schema.xml 에서 이제는 XSL 로 대체되는 것으로 보입니다.
schema.xml 라인수는 87 밖에 되지 않고 main.xsl 을 참조합니다.

<XslLinkDefault="TRUE">main.xsl</XslLink>

그리고 main.xsl 은 아래와 같이 필드타입, 뷰스타일 xsl 파일을 참조합니다.
<xsl:importhref="/_layouts/xsl/fldtypes.xsl"/>
<
xsl:importhref="/_layouts/xsl/vwstyles.xsl"/>

뒤져보시면, 위 XSL 파일에서 Item Rendering 부분이 보입니다.
SP2010 에서는 XSLT 가 지원된다고 하지만, 기존의 CAML 방식에서 XSLT 로 변환이라고 한다면
schema.xml 부분이 그 대상이라고 생각합니다.
둘다 복잡해보이긴 하지만, 상대적으로 표준적인 XSLT 방식을 채택한 것은 좋은 변화라고 생각합니다.
(참조: Microsoft Professional Evaluation Guide Part - 30 Page)

 

호기심으로 시작한 이번 글은 여기서 마치도록 하겠습니다.
다음 주제는 아래 중 하나가 될 것으로 예상합니다.
  1. VS2010 에 추가된 SharePoint Templates
  2. VS2010 에 추가된 기능 (SandBoxed solution, Server Explorer 에서 탐색기 형태로 사이트를 볼 수 있는 기능 등)
  3. Microsoft Professional Evaluation Guide Part 2

그럼 이만 줄이겠습니다.

[참조]
SP2010_Study1.zip (57.88 kb)

SharePoint Object Model

안녕하세요?

Will 입니다.

이번에는 SharePoint2010 OM에 대해서 내용을 적기로 하겠습니다.

우선 OM(Object Model) SharePoint2010에서는 사용자 단에서 즉 클라이언트 단에서 돌아 갈 수 있도록 dll로 정의가 되어 있는데요, Windows 응용프로그램, Consol 응용프로그램, Silverligth 응용프로그램 그리고 Javascript 에서 클라이언트 스크립팅으로 사용을 할 수 있습니다.

 

1 .Clinet Object Model

 우선 VS2010으로 Window응용프로그램을 만들도록 하겠습니다. 응용프로그램을 만드실 때 .net 3.5를 베이스로 해주시고 만드시면은 되겠습니다.

그리고 폼에 각각의 컨트롤들을 그림과 같이 배치 하시면은 되겠습니다.

컨트롤

ID

Event

Text Box

txtUrl

 

List Box

lstCollection

 

Button

btnSearch

btnSearch_Click
  

 

그런 다음 참조를 통해서 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI 해당 경로에 잇는 Microsoft.SharePoint.Client.dll Microsoft.SharePoint.Client.Runtime.dll 을 추가해 줍니다.

  

그런 다음 해당 소스를 자신의 코딩에 맞춰서 넣습니다.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using Microsoft.SharePoint.Client;   

namespace SPNote.SharePoint.ObjectModel{   

public partial class ClientOM : System.Windows.Forms.Form    {       

public ClientOM()        {            

InitializeComponent();       

}        

private void btnSearch_Click(object sender, EventArgs e)        {           

//Create A Client Connection           

using (ClientContext clientCon = new ClientContext(txtUrl.Text))           

{                //Get the Site Collection               

Site csite = clientCon.Site;                

//Fill SharePoint Data               

clientCon.Load(csite);               

 clientCon.ExecuteQuery();                

lstCollection.Items.Add(csite.Url);                

//Get the Site                

Web cWeb = clientCon.Web;                

//Fill SharePoint Data               

clientCon.Load(cWeb);               

clientCon.ExecuteQuery();                 

lstCollection.Items.Add(cWeb.Title);                

//Load Lists               

clientCon.Load(cWeb.Lists);               

clientCon.Load(cWeb, x => x.Lists.Where(l => l.Title != null));               

clientCon.ExecuteQuery();                 

foreach (List list in cWeb.Lists)               

{                   

lstCollection.Items.Add(list.Title);               

}           

}       

}   

}//class

}//namespace  

그리고 실행을 하면은 해당 값들을 확인 할 수 있습니다.

  

 

2. ECMAScript Client Object Model

 Script단에서 SharePoint 컨트롤을 사용 할 수 있도록 정의가 되어 있는 것이다. 우선 Project를 새로 생성 하는데 SharePoint 의 빈 SharePoint 프로젝트를 선택하고 생성 한 다음 Applicationpage를 추가 한다. 그럼 Layouts 밑에 해당 페이지가 생성 되게 된다.

  

그리고 나서 해당 소스를 집어 넣고 돌려 본다. 첫번째 했던 ClientOM과 비슷한 소스 이다. 보고 이해 하시기 바랍니다. 그럼 해당 컨트롤을 통해서 Ajax처리가 되어서 해당 사이트의 타이틀을 읽어 올 수 있습니다.

<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>

<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>

<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %><%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %><%@ Import Namespace="Microsoft.SharePoint" %><%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ECMAScript.aspx.cs" Inherits="EcmascriptClientOM.Layouts.EcmascriptClientOM.ECMAScript" DynamicMasterPageFile="~masterurl/default.master" %> 

<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">

<SharePoint:ScriptLink ID="SPScriptLink" runat="server" LoadAfterUI="true" Localizable="false" Name="sp.js" /> 

<script language="javascript" type="text/jscript" >   

function eClientOM(){       

var context = new SP.ClientContext.get_current();       

this.site = context.get_web();       

context.load(this.site);       

context.executeQueryAsync(Function.createDelegate(this,this.rSuceess),Function.createDelegate(this,this.rFailure));   

}    

function rSuceess(senger, args){       

alert("site title" + this.site.get_title());   

}       

function rFailure(sender, args){       

alert("Request failed " + args.get_message());   

}</script>

</asp:Content> 

<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">   

<input type="button" onclick="eClientOM()" value="Ecmas" />

</asp:Content> 

<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">Application Page</asp:Content> 

<asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" >My Application Page</asp:Content>   

 

3. Silverlight Client Object Model

 해당 dll의 오류가 있어서 지금 작업은 하지 못하였으나 조만간 작업을 하여서 올리도록 하겠습니다.

 

좋은 한해 보내시고 질문 사항이 있으면은 메일을 주시거나 코멘트를 달아 주시면은 답변을 드리도록 하겠습니다.

 

  

SP.js (379.92 kb)

Microsoft Professional Evaluation Guide Part 1

Microsoft Professional Evaluation Guide Part 1
Ver 1.0
Jan 1st, 2010 

이 문서는 SharePoint 2010 에 대해 개발자로서의 개인적인 해석의 간략한 정리입니다. 2년간의 MOSS 2007 개발 경험을 바탕으로 문서를 작성했으나 개인이 작성한 문서이므로 너무 믿으면 후회할 수도 있습니다 

얼마 전 있었던 SharePoint 2010 Ignite Training for Partners 프로그램에 참가하지는 못했지만 이 문서의 정리를 위해 Microsoft Professional Evaluation Guide Part 를 선택했습니다.
원본 문서에서 참고한 모든 내용의 권리는 Microsoft 에 있습니다. 

비 영어권 Korean 으로서 웹에서 자료만 뒤지는 게 아쉽지만, 온라인 그리고 곧 출시될 서적 등의 리소스를 활용하면 이전 버전인 2007 에서 했던 것처럼 같이 많은 부분을 커버할 수 있을 것 같습니다. (인도 방갈로에서 곧 열린다고 합니다. 자신의 파워?를 이용하여 기회를 살리시기 바랍니다.) 

문서의 구성은 크게 2 단계 혹은 3 단계로 나누어 진행하려고 합니다.SP 2010 에 대한 내용과 개발 예제가 그것이지만 아직 개발 PC 의 구매가 이루어지지 않은 관계로 우선은 내용에 대한 생각이 주가 될 것으로 예상합니다  

 

문서 요약
Microsoft SharePoint 2010 의 기능 집합과 확장 가능한 부분에 개요이며 개발자가 위를 이용하여 포괄적인 솔루션을 생성할 수 있도록 이해를 주기 위한 문서입니다. 

소개
빠르게 솔루션을 개발할 수 있도록 풍부한 기능의 제공과 Visual Studio 2010 SharePoint Designer 2010 를 이용하여 생산성 향상과 Visual Studio Team Foundation Server Application lifecyle 의 관리를 제공합니다. 

주목할 부분으로는 아래와 같습니다. (개인 중심의 해석)
1. 개발 플랫폼으로 많은 기능들이 VS 2010 Add In 되어 개발에 편리함과 생산성에 향상
2. BCS(Business Connectivity Services) 에서는 기본의 BDC(Business Data Catalog) 에서 제공하지 않았던  Write(쓰기) 의 지원
3. 기존의 솔루션(WSP)이 중앙 관리에 설치되어 전체가 적용이 되던 부분이 SandBoxed Solution 이라는 새로운 개념이 도입되어 사이트 단위로 솔루션 배포와 활용이 가능 

새로운 기능의 추가에 대한 요약 

개발자 생산성
Visual Studio 2010 SharePoint 프로젝트 타입과 항목?
Visual Studio 2010 SharePoint 툴 확장
Visual Studio Extensions For SharePoint 업그레이드
Windows 7 and Windows Vista 운영체제 지원
SharePoint Designer 2010
Developer Dashboard
Team Foundation Server 2010 통합
  
다양한 플랫폼 서비스
SharePoint 리본
SharePoint 다이얼로그(새창)
Silverlight 웹 파트
List 참조와 관계
Business Connectivity Services (BDC 의 새로운 버전)
LINQ to SharePoint


유연한 배포
Sandboxed Solutions
SharePoint Online
Upgrading Solutions

개발자에 의해 SharePoint 에 포함된 핵심 솔루션 종류 
우선은 Visual Studio 2010 SharePoint Designer 2010 을 이용하여 솔루션 개발을 보다 쉽게, 빠르게, 유연하게 만들 수 있습니다. SP Designer 를 이용하여 Web UI 를 구성하고 코드의 부분은 개발자가 구현하여 빠른 생산성을 기대한다고 합니다. 국내에서의 경험으로는 디자이너 분들이 Designer Tool core.CSS 의 경험 부재로 인해 쉽지는 않을 것 같지만, Workflow 같은 경우라면 wsp 파일로 내보내기가 지원된다고 하니, 개발 이외의 작업 분담과 개발자는 코딩에 집중하는 업무의 형태도 불가능하지는 않을 것 같습니다. 

문서와 목록 관리의 변화된 부분은 아래와 같습니다.
1. 규모가 큰 목록 지원
2. 향상된 검증 (Form?)
3. LOB(Line Of Business) 시스템 연결 

기타 나머지 부분은 아래와 같습니다.
  -  Workflow SharePoint Workspace 를 포함하는 Client 어플리케이션의 향상
  -  태깅과 평가에 대한 지원
  -BCS 에서 Write(쓰기) 가 가능하므로 기존의 데이터 관리에 유리

WF 를 이용하여 국내 기업에서 구매할 수 있을 정도의 전자결재 제품이 출시된다면 SharePoint 가 널리 퍼질 것 같기도 합니다.
(전자결재 전문가와 함께 오픈 소스를 시작하고 싶은 소망이 있습니다.)  

기존의 주 기능에 수정 및 확장 가능한 부분은 아래의 테이블과 같습니다.

주 기능 기본 기능 확장 가능 부분
Sites 목록과 문서 라이브러리의 자료에 저장과 가져오기시 쉽고 유연한 방법의 제공 웹 파트, 마스터 페이지, 페이지, 델리게이트 컨트롤, InfoPath 양식, Word 변환 서비스를 활용하는 솔루션, Access 서비스 이용
Communities 사용자에 관련된 기능태깅과 평가 기능 정의된 검색, 검색 웹 파트, 태깅 과 평가 및 사용자 커스텀 인터페이스
Content 웹 페이지, 문서, 레코드 등의 자료 관리 커스텀 페이지 타입, 필드 컨트롤, 컨텐트 타입, 문서 세트, 원격 블로그 저장 프로바이터, 워크플로와 Word 서비스. 레코드 관리의 확장과 공용 웹 사이트 확장
Search Database 를 포함한 SharePoint 의 안과 밖의 검색 기능 정의된 검색 결과 변환. 자료의 네비게이션과 위치 파악을 나타내는 그리고 다른 데이터 스토어의 연결을 하는 웹 파트. IFilter 와 프로토콜 핸들러
Insights 엑셀 서비스, 웹 페이지 표시, Dashboard, KPI 기본 기능의 기능 확장
Composites 해당 플랫폼을 이용한 솔루션 기능 웹 파트, 워크 플로, InfoPath 폼 서비스는 사용자가 활용 가능한 툴 사용 증가?


직접 사용해보지 않고 문서만 보고 글 작성을 하려고 하니 한계가 많습니다. 점차 기능을 활용해보고 문서를 수정하도록 하겠습니다