From : Vazha Ezugbaia <VEzugbaia@hssp.org.ge>
To : Manuchar Tokhadze <MTokhadze@hssp.org.ge>; Tamta Kobakhidze <tkobakhidze@hssp.org.ge>; Natia Baratelia <nbaratelia@hssp.org.ge>; Adelina Faradian <AFaradian@hssp.org.ge>; Alexander Turdziladze <aturdziladze@hssp.org.ge>; Arsen Khitiri <akhitiri@hssp.org.ge>; Dimitri Ivanauri <DIvanauri@hssp.org.ge>; Giorgi Lobjanidze <GLobjanidze@hssp.org.ge>; Giorgi Usharauli <GUsharauli@hssp.org.ge>; Ketevan Tatoshvili <ktatoshvili@hssp.org.ge>; Konstantine Muradov <Konstantine_Muradov@hssp.org.ge>; Mary Gelashvili <MGelashvili@hssp.org.ge>; Niko Khvichia <Niko_Khvichia@hssp.org.ge>; Nikoloz Ivanauri <Nivanauri@hssp.org.ge>; Sergo Rostiashvili <SRostiashvili@hssp.org.ge>; Valerian Khvichia <VKhvichia@hssp.org.ge>; Zurab Dalakishvili <ZDalakishvili@hssp.org.ge>
Subject : WCF Service Message Encoding
Received On : 03.11.2014 08:46

მოგესალმებით

 

 

რამოდენიმე დღის წინ ჩავატარე ტესტები

სამწუხაროდ ჩვენს რჩეულ Mtom-ს აქვს პრობლემები

კერძოდ ის რო თუ რეზულტატში ბრუნდება Dictionary რომელსაც აქვს ასეთი Key-ები

dictionary[“ AAA”]

dictionary[“AAA ”]

dictionary[“AAA”]

 

ამათ აღიქვავს როგორც ერთ Key-ს

რაც ნიშნავს იმას რომ სერიალიზაციის ან დესერიალიზაციის დროს უკეთებს Trim-ს და შემდეგ

დესერიალიზაციის დრო ისვრის Exception-ს "An item with the same key has already been added"

 

ამიტომ კიდევ ჩავატარე რაღაც ტესტები და ტრაფიკის მოცულობის და Perfomance-ს მხრივ ყველაზე საუკეთესო ვარიანტი არის binary message encoding

 

თუმცა ამის ჩართვა მოითხოვს ცვლილებებს Web.Config-ებში

კერძოდ უნდა გადავიდეთ CustomBinding-ზე

 

ქვემოთ არის მაგალითი

 

SERVER SIDE (Web.Config)

 

  <system.serviceModel>

    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

    <behaviors>

      <serviceBehaviors>

        <behavior name="">

          <serviceDebug includeExceptionDetailInFaults="true" />

          <dataContractSerializer maxItemsInObjectGraph="2147483647" />

          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />

          <serviceThrottling maxConcurrentCalls="4096" maxConcurrentSessions="1024" maxConcurrentInstances="8192" />

        behavior>

      serviceBehaviors>

    behaviors>

    <bindings>

      <customBinding>

        <binding name="" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00">

          <binaryMessageEncoding compressionFormat="Deflate" />

          <httpTransport maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" />

        binding>

      customBinding>

    bindings>

    <services>

      <service name="Services.TestWcfService">

        <endpoint binding="customBinding" bindingConfiguration="" contract="Services.ITestWcfService" name="HttpBinding" />

      service>

    services>

  system.serviceModel>

 

 

CLIENT SIDE (Web.Config, App.Config)

 

  <system.serviceModel>

    <bindings>

      <customBinding>

        <binding name="" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00">

          <binaryMessageEncoding compressionFormat="Deflate" />

          <httpTransport maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" />

        binding>

      customBinding>

    bindings>

    <client>

      <endpoint address=" http://localhost:38680/Services/TestWcfService.svc"

          binding="customBinding" contract="TestClientWcfService.ITestWcfService" name="HttpBinding" />

    client>

  system.serviceModel>

 

 

როგორც ხედავთ ყველაფერი ბევრად მარტივი და გასაგებია ვიდრე wsHttpBinding-ის ან basicHttpBinding-ის კონფიგურაცია

არანაირი ზედმერი ხუჭუჭები

მხოლოდ timeout--ები da buffer-ების ზომები

 

ამიტომ იზრუნეთ იმაზე რომ ეტაპობრივად ამაზე უნდა გადავიდეთ

რათმქუნდა Reporting-ის სერვიცებს პირველ რიგში გადავიწყობ რადგან პრობლემები მანდ წარმოიშვა

და გაითვალისწინეთ ეს ყველამ ვინც Reporting-ის სერვისს იყენებთ

ახალი ვერსია რომელიც გადავა სერვერზე იქნება ახალი კონფიგურაციით (გადატანისას რათქმაუნდა მოვიწერები)

 

პატივისცემით

 

 

Vazha Ezugbaia

Master Developer

Abt Associates Incorporated - Georgia

USAID Health System Strengthening Project

A. Tsereteli ave. #144 16nd FL. Tblisi Georgia

Tbilisi, Georgia  Tel. (995 32) 251 00 21 (ext: 1617)

Mob: (995  55) 545 32 62