Malam pertama belah duren WCF dan Silverlight

Malam pertama belah duren WCF dan Silverlight
(Sekilat info setelah pecah ndas & ndas mumet ...Angry)

Pertama kali kita mencoba selalu ada masalah teknikal yang muncul entah itu setting, configuration ataupun code untuk quick start development.
Kalau anda masih bingung dari mana mulainya bis baca artikel ini: part 1 http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-1-creating-quot-hello-world-quot-with-silverlight-2-and-vs-2008.aspx sampai part 8

Berikut permasalahan yan muncul saat saya pertama kali mencoba silverlight application dan WCF

1. Permasalahan security domain
Silverlight project menghasilkan XAP file yang nantinya di download di web aplikasi yang kemudian di render oleh silverlight plugin di browser. Hal ini menyebabkan perlu adanya policy di IIS kita untuk membuat client browser bisa me - akses resource server kalau misalnya akses dari beda domain.
Solusi: Coba bikin file clientaccesspolicy.xml letakkan di root virtual folder dari host domain kita(misal kalau masih default setting di: C:\Inetpub\wwwroot). Dan berikut content filenya:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
   <
cross-domain-access>
       <
policy>
           <
allow-from http-request-headers="*">
              <
domain uri="*"/>
           </
allow-from>
           <
grant-to>
              <
resource path="/" include-subpaths="true"/>
          </
grant-to>
         </
policy>
    </
cross-domain-access>
</
access-policy>

Kalau anda ingin set khusus untuk folder aplikasi silverlight saja yang saat ini anda bikin bisa diubah setting pada node:

       <grant-to>
        <resource path="/SilverghtTestingWeb" include-subpaths="true"/>
      </grant-to>

2. Trik untuk desain graphic nya. Lebih baik kita buka 1 solution di 2 tools satunya di Visual studio dan satunya di Expression blend. Kenapa harus begini... karena design gambar pakai visual studio sangat menyebalkan dan kaku... tetapi kalau kita mau custom xaml file lebih bagus kita gunakan visual studio karena dia ada intellisense yang bisa membuat kita explore apa aja sih yang dipunyai object control ini...J

3. Bikin style di static resource supaya kita mudah untuk merubah tampilan supaya seragam. Contoh bikin style

<Style x:Name="GridContent" TargetType="TextBlock">
<
Setter Property="FontFamily" Value="Arial"/>
<
Setter Property="FontSize" Value="10"/>
<
Setter Property="VerticalAlignment" Value="Center"/>
<
Setter Property="Foreground" Value="#FF000000"/>
<
Setter Property="TextWrapping" Value="NoWrap"/>
<
Setter Property="Margin" Value="0,0,1,0"/>
</
Style>

4. Pergunakan stackpanel & grid control untuk pengaturan layout karena sangat membantu adjust position saat designer graphic merubah UI
5. Kalau anda ingin menampilkan data bind dari database coba gunakan datagrid karena sangat membantu karena cell columnnya juga bisa custom template
Contoh custom cell:
<data:DataGridTemplateColumn >
<
data:DataGridTemplateColumn.CellTemplate >
   <
DataTemplate >
      <
TextBlock Text="{Binding Path=YearToDate}" HorizontalAlignment="Right" Style="{StaticResource GridContent}" />
   </
DataTemplate>
</
data:DataGridTemplateColumn.CellTemplate>
</
data:DataGridTemplateColumn>
Kalau masih belum puas dengan tampilan yang ada pada control yang Microsoft kasih. Anda bisa me custom nya dengan copy template dari blend jadikan resource dari situ tercera anda utek utek templatenya semaunya... dari rubah background animationnya nya sampai sak karepmu ...jungkel balik di template control.
Caranya: buka expresión blend - Terus klik kanan control yang mau dirubah templatenya, kemudian klik "Edit Control Parts(Template)" - Terus klik "Edit a Copy" kemudian kamu bisa lihat hasil copynya di static resource node di XAML file dan bisa kamu edit dari situ
See: http://silverlight.net/forums/p/51905/135640.aspx#135640 untuk lengkapnya

6. pada saat testing WCF muncul error seperti berikut: "...This collection already contains an address with scheme http..." maka server web nya punya setting multiple identities check di advance setting pada web host. Solusinya:
bikin class yang inherits ServiceHostFactory untk memastikan hanya satu url saja yang valid untuk digunakan WCF saat processing service nya.

public class MultipleIISBindingSupportServiceHostFactory : ServiceHostFactory
{
    
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
     {
Uri[] requiredAddress = GetAppropriateBase(baseAddresses);
       
return base.CreateServiceHost(serviceType, requiredAddress);
      }
      private static Uri[] GetAppropriateBase(Uri[] baseAddresses){
             
if (baseAddresses.Length > 0)
               {
                  
return baseAddresses[0];}
             
else{
               
return baseAddresses;}
      }
}

Kemudian tambah attribute di services pada {namaService}.svc file dengan klik kanan view markup pada svc file dan berikut attributenya:
<%@ ServiceHost Language="C#" Debug="true" Factory="{nameSpaceAnda}.MultipleIISBindingSupportServiceHostFactory"

7. Kalau masih menemukan masalah security /access error coba dengan me enable [checkbox] anonymous access di security tab pada IIS application folder

Sekian sekilat info setelah pecah ndas & sira mumet ...Smile

Share this post: | | | |
Published Tuesday, November 25, 2008 4:52 PM by Rahman_Hadi
Filed under:

Comments

Tuesday, November 25, 2008 10:43 PM by dondy

# re: Malam pertama belah duren WCF dan Silverlight

Keren.. Keren.. keep posting :)

Wednesday, November 26, 2008 8:30 AM by Rahman_Hadi

# re: Malam pertama belah duren WCF dan Silverlight

Thanks boss .. insyallah ...:)

Wednesday, November 26, 2008 1:52 PM by Agus S

# re: Malam pertama belah duren WCF dan Silverlight

Walah walah... bahasanya khas Rahman Hadi sahabat saya di-office... ternyata bener-bener dikau... OK, posting lagi teruuuussss!

Sunday, April 26, 2009 3:38 PM by tomi

# re: Malam pertama belah duren WCF dan Silverlight

anak anjing

Sunday, April 26, 2009 3:39 PM by tomi

# re: Malam pertama belah duren WCF dan Silverlight

kalau belah duren tu enak?