레이블이 Queue인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Queue인 게시물을 표시합니다. 모든 게시물 표시

2017년 4월 14일 금요일

코드를 이용한 아이템 Publish 옵션 살펴보기

이번에는 프로그램 코드로 아이템을 페블리쉬하는 방법에 대하여 소개하겠다.

사이트코어는 Sitecore Publishing API를 이용하여, 다양한 Publishing 모드를 제공한다. 이번에는 각각의 Publishing 모드가 어떤 상황에서 적절히 쓰여야할지 알아보도록 하겠다.
  1. 새로운 "Publisher" 오브젝트를 이용하여 아이템을 Publish하는 방법

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    Sitecore.Publishing.PublishOptions publishOptions =
      new Sitecore.Publishing.PublishOptions(item.Database,
                                             Database.GetDatabase("web"),
                                             Sitecore.Publishing.PublishMode.SingleItem,
                                             item.Language,
                                             System.DateTime.Now);
    Sitecore.Publishing.Publisher publisher = new Sitecore.Publishing.Publisher(publishOptions);
    publisher.Options.RootItem = item;
    publisher.Options.Deep = true;
    var publishResult = publisher.PublishWithResult();
    
    • 장점
      • 프로세스가 끝나자마, 아이템을 즉시 Publish한다.
      • "PublishWithResult()" 메써드를 사용하여 Publish가 성공적으로 끝났는지 혹시 실패되었는지 확인할수가 있다.
    • 단점
      • "Job Manager"를 사용하지 않으므로써, 퍼블리쉬 진행상황을 "Job Viewer"를 통하여 확인할 수가 없다.
    • 언제 적절하게 사용되어질수 있나?
      • 코드에서 마스터 데이타베이스에 새로운 아이템을 생성하거나 기존 아이템을 수정하고, 즉시 아이템을 Publish해야하는 상활일 경우.
  2. "PublishPipeline"을 사용하는 방법

    1
    2
    PublishContext publishContext = PublishManager.CreatePublishContext(publishOptions);
    var publishResult = PublishPipeline.Run(publishContext);
    
    • 장점
      • Pipeline에서 곧바로 publishing을 진행하기 때문에 이전 옵션보다 신속하다
    • 단점
      • 사용하는데 있어서 복잡하다
      • 메뉴얼 세팅없이는 진행상황을 보고하지 않는다.
      • 대부분의 Sitecore Configuration을 일일히 체크한다.
    • 언제 적절하게 사용되어질수 있나?
      • 개인적으로 이 방범은 추천하지 않는다. 왜냐하면 페블리쉬된 아이템을 Versioning 하는데에 문제가 생길수가 있다.
  3. "Publishing Queue"를 이용하는 방법

    1
    Sitecore.Publishing.PublishManager.AddToPublishQueue(item, ItemUpdateType.Created);
    
    • 장점
      • "PublishingQueue table"에 publishing 목록을 신속하게 추가할수가있다.
      • 중복되어진 목록은 "Incremental Publish" 모드를 통하여 자동으로 제외한다.
    • 단점
      • 만약 Content Editor에서 아이템을 퍼블리쉬할 경우, Incremental Publish 옵션을 선택해야지만 Queue에 목록되어진 아이템이 퍼블리쉬 될수가 있다.
    • 언제 적절하게 사용되어질수 있나?
      • 많은 아이템의 업데이트가 자주가 일어날 경우, 이 옵션이 사용되어질수있다.
      • 개인적으로 이 옵션을 메인 publishing 모드로 사용할 경우, 기존의 메뉴얼 퍼블리쉬 기능은 숨겨두고, Publishing Agent를 통하여 아이템을 퍼블리쉬할수 있도록 사용자에게 권하는것이 좋다.
      • *현재 진행되고 있는 프로젝트에서 Workflow와 데이타소스들을 일괄적으로 업데이트하고 퍼블리쉬하는데 있어서 이 옵션이 사용되었다.
  4. "PublishManager"를 사용하여 Publish 하는 방법

    1
    2
    3
    4
    Database master = Sitecore.Configuration.Factory.GetDatabase("master");
    Database[] targetDBs = new Database[] { Sitecore.Configuration.Factory.GetDatabase("web") };
    Language[] languages = new Language[] { Sitecore.Data.Managers.LanguageManager.GetLanguage("en") };
    Sitecore.Publishing.PublishManager.PublishSmart(master, targetDBs, languages);
    • 장점
      • Sitecore UI를 통하여 아이테을 퍼블리쉬할시, 사용되는 기본 기능이다.
      • Sitecore 로그에 퍼블리쉬 상황을 등록할수가 있으며, 그 등록 기능은 "JobManager"를 통하여 작동된다.
    • 단점
      • 비동기적으로 퍼블리쉬를 수행하여 신속하지만, 프로그램 코더에서는 현지 진행되고 있는 아이템이 잘 퍼블리쉬되고있는지 또는 아닌지를 모니터해야한다.