Microsoft SharePoint menyediakan berbagai macam Web Service standar yang dapat digunakan untuk mengakses objek-objek didalam SharePoint seperti List, Document Library, User atau Group. Web Service tersebut biasanya membutuhkan parameter masukan atau nilai keluaran yang berupa data XML. Didalam proses kustomisasi, kadangkala kita membutuhkan parameter masukan atau nilai keluaran yang lebih sederhana atau lebih spesifik terhadap kebutuhan aplikasi.

Bagaimana langkah-langkah untuk membuat dan mendistribusikan web service kustom untuk Microsoft SharePoint 2010 akan disajikan disini. Langkah-langkah berikut berlaku ***, jika Anda bekerja dengan Windows SharePoint Service 3.0.
Membuat Solusi Visual Studio
  1. Buka Visual Studio 2010
  2. Buatlah solusi kosong di Visual Studio. Beri nama DemoCustomWS.

            

Membuat Web Service ASP.NET 
  1. Tambahkan projek aplikasi ASP.NET Web Service. Beri nama CustomWS.

  2. Buka Service1.asmx.cs dan ubah implementasinya sesuai dengan kebutuhan. Contohnya, sesuaikan nama namespace, class dan lain sebagainya.

  3. Buka properti project CustomWS dan pilih Signing assembly
  4. Kompilasi dan buka web service yang baru didalam browser
  5. Buka jendela perintah (command prompt) dan jalankan Disco.exe terhadap URL web service tersebut

  6. Jalankan *** SN.EXE untuk mendapatkan nilai PublicKeyToken

  7. Buka dan edit Service1.asmx pada halaman markup, dan ubah markup agar sesuai dengan nilai PublicKeyToken yang diperoleh dari langkah sebelumnya. (Perhatikan, sesuaikan markup berikut sesuai dengan konfigurasi di komputer Anda.)
    <%@ WebService Language="C#" Class="CustomWS.CustomService, CustomWS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=293c0f6de57e7690" %>
Membuat Project SharePoint 2010
  1. Tambahkan project SharePoint kosong. Beri nama DemoWS.
  2. Buka property project DemoWS dan pilih Signing assembly.
  3. Didalam DemoWS, buka package designer. Pilih "Add Assembly from project output".
  4. Pilih project CustomWS dan pilih deploy in GAC.
  5. Klik kanan dalam project DemoWS, pilih "Add SharePoint Mapped Folder". Pada jendela pilihan, pilihlan ISAPI\CustomWS. Jika folder tersebut tidak tersedia, buatlah folder ISAPI\CustomWS didalam SharePoint hive.
  6. Tambahkan file CustomService.disco dan CustomService.wsdl ke dalam folder CustomWS.
  7. Ubah nama CustomService.disco menjadi CustomServiceDisco.aspx dan CustomService.wsdl menjadi CustomServiceWSDL.aspx
  8. Ubah implementasi dari CustomServiceDisco.aspx dan CustomServiceWsdl.aspx agar dapat mendukung virtualisasi (Baca Writing Bustom Web Services for SharePoint Products and Technology).
  9. Tambahkan file CustomService.asmx ke dalam folder CustomWS didalam project DemoWS.
  10. Klik kanan dalam project DemoWS, pilih "Add SharePoint Mapped Folder". Kali ini pilih ISAPI
  11. Buat salinan file SPDISCO.ASPX dari folder ISAPI di SharePoint hive dan simpan kedalam folder ISAPI didalam project DemoWS.
  12. Ganti nama SPDISCO.ASPX menjadi SPDISCO.DISCO.ASPX
  13. Buat salinan file SPDISCO.DISCO.ASPX dan beri nama DemoWS.SPDISCO.ASPX
  14. Hapus semua baris didalam DemoWS.SPDISCO.ASPX - dan tambahkan baris untuk registrasi web service baru
  15. Tambahkan class HttpHandler kedalam DemoWS. Didalam class ini, kita akan menggabungkan isi dari SPDISCO.ASPX dengan isi dari DemoWS.SPDISCO.ASPX

    public void ProcessRequest(HttpContext context)
    {
      StringWriter sw1 = new StringWriter();
      // Original - cop spdisco.aspx
      context.Server.Execute("spdisco.disco.aspx", sw1);
      XmlDocument spdiscoXml = new XmlDocument();
      spdiscoXml.LoadXml(sw1.ToString());
     
      var files = Directory.GetFiles(context.Server.MapPath(""), "*.spdisco.aspx");
      foreach (var file in files)
      {
        StringWriter sw2 = new StringWriter();
        context.Server.Execute(System.IO.Path.GetFileName(file), sw2);
         
        XmlDocument otherSPDiscoXml = new XmlDocument();
        otherSPDiscoXml.LoadXml(sw2.ToString());
     
        foreach (XmlNode importedNode in otherSPDiscoXml.DocumentElement.ChildNodes)
        {
     
            spdiscoXml.DocumentElement.AppendChild(spdiscoXml.ImportNode(importedNode, true));
        }
     
      }
     
      context.Response.Write(String.Format("<?xml version='1.0' encoding='utf-8' ?> {0}", spdiscoXml.InnerXml));
    }

  16. Klik kanan dalam project DemoWS, pilih "Add SharePoint Mapped Folder". Kali ini pilih CONFIG.
  17. Tambahkan webconfig.demows.xml kedalam folder CONFIG. Webconfig.demows.xml kita gunakan untuk melakukan registrasi perubahan HttpHandler kedalam SharePoint.

Akhirnya solusi Web Service kustom tersebut sudah siap untuk dibuild dan didistribusikan.

Informasi Lebih Lanjut
  1. Writing Custom Web Services for SharePoint Products and Technology (http://msdn.microsoft.com/en-us/library/dd583131(v=office.11).aspx)df
  2. SharePoint Architecture (http://msdn.microsoft.com/en-us/library/bb892189(v=office.12).aspx  )dfd
  3. Architectural Overview of Windows SharePoint Services (http://msdn.microsoft.com/en-us/library/dd583133(v=office.11).aspx  ) fd
  4. Modifying Built-In SharePoint Files (http://msdn.microsoft.com/en-us/library/bb803457(v=office.12).aspx  )
Kode Sumber
  1. SharePoint 2010 and Visual Studio 2010 Sample Code : Demo Custom WS (http://code.msdn.microsoft.com/Writing-SharePoint-Web-in-cb9de1be)