사이트코어는 Sitecore Publishing API를 이용하여, 다양한 Publishing 모드를 제공한다. 이번에는 각각의 Publishing 모드가 어떤 상황에서 적절히 쓰여야할지 알아보도록 하겠다.
- 새로운 "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해야하는 상활일 경우.
- "PublishPipeline"을 사용하는 방법
1 2
PublishContext publishContext = PublishManager.CreatePublishContext(publishOptions); var publishResult = PublishPipeline.Run(publishContext);
- 장점
- Pipeline에서 곧바로 publishing을 진행하기 때문에 이전 옵션보다 신속하다
- 단점
- 사용하는데 있어서 복잡하다
- 메뉴얼 세팅없이는 진행상황을 보고하지 않는다.
- 대부분의 Sitecore Configuration을 일일히 체크한다.
- 언제 적절하게 사용되어질수 있나?
- 개인적으로 이 방범은 추천하지 않는다. 왜냐하면 페블리쉬된 아이템을 Versioning 하는데에 문제가 생길수가 있다.
- "Publishing Queue"를 이용하는 방법
1
Sitecore.Publishing.PublishManager.AddToPublishQueue(item, ItemUpdateType.Created);
- 장점
- "PublishingQueue table"에 publishing 목록을 신속하게 추가할수가있다.
- 중복되어진 목록은 "Incremental Publish" 모드를 통하여 자동으로 제외한다.
- 단점
- 만약 Content Editor에서 아이템을 퍼블리쉬할 경우, Incremental Publish 옵션을 선택해야지만 Queue에 목록되어진 아이템이 퍼블리쉬 될수가 있다.
- 언제 적절하게 사용되어질수 있나?
- 많은 아이템의 업데이트가 자주가 일어날 경우, 이 옵션이 사용되어질수있다.
- 개인적으로 이 옵션을 메인 publishing 모드로 사용할 경우, 기존의 메뉴얼 퍼블리쉬 기능은 숨겨두고, Publishing Agent를 통하여 아이템을 퍼블리쉬할수 있도록 사용자에게 권하는것이 좋다.
- *현재 진행되고 있는 프로젝트에서 Workflow와 데이타소스들을 일괄적으로 업데이트하고 퍼블리쉬하는데 있어서 이 옵션이 사용되었다.
- "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"를 통하여 작동된다.
- 단점
- 비동기적으로 퍼블리쉬를 수행하여 신속하지만, 프로그램 코더에서는 현지 진행되고 있는 아이템이 잘 퍼블리쉬되고있는지 또는 아닌지를 모니터해야한다.