| 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