Konfiguruję nową usługę WCF .NET 4.0 za pomocą metody (operacji), która przyjmuje parametry typów generowanych przez XSD jako parametry. Sprawia to, że rzeczy są czyste i uporządkowane dla klienta - klient może pracować z silnymi typami i nie musi myśleć o XML.Uzyskaj surowy kod XML parametrów w implementacji usługi WCF
Jednak w implementacji usługi WCF wolałbym traktować dane parametrów jako dokumenty XML (LINQ XDocument) zamiast deserializowanych typów obiektów. Fajnie, że WCF będzie deserializować do typów jawnych, ale dla mojego generycznego algorytmu jest wygodniejsze i bardziej elastyczne radzenie sobie z dokumentami xml, głównie dlatego, że przychodzące dane są polimorficzne.
Wiem, że mogę po prostu wziąć obiekty parametrów i serializować je z powrotem do XML, ale wydaje się to marnotrawstwem.
Rozumiem, że prawdopodobnie mógłbym zastąpić mocno wpisane parametry XElement, aby uzyskać to, co chcę dla wygody implementacji, ale straci to zalety silnego pisania (sprawdzania kompilatora, intellisense, własnej dokumentacji) dla klienta.
Czy jest jakiś sposób, aby powiedzieć WCF, że w mojej implementacji usługi nie potrzebuję zderializowanych obiektów parametrów, że chcę je jako XML zamiast?
Czy istnieje sposób uzyskania dostępu do nieprzetworzonego kodu XML tych parametrów, tak jak przed przekształceniem ich w obiekty WCF? Jeśli nie mogę uniemożliwić WCF spędzania czasu na deserializacji obiektów, przynajmniej pozwoliłoby to na uniknięcie kosztów ponownego ich przywrócenia do formatu XML.
Nadal uważam, że naprawdę warto kłopotów, dlaczego nie przyspieszyć serailization i deserilazation. –
@SurjitSamra Nie rozumiem twojego komentarza. Mówisz, że WCF nie jest warte kłopotów, czy moje zainteresowanie dostępem do surowego XML nie jest warte kłopotów? Nie mogę zrobić nic, jeśli chodzi o przyspieszenie serializacji lub deserializacji, poza unikaniem niepotrzebnych podróży w obie strony. – dthorpe
Przepraszam, że nie było jasne, w moim komentarzu, rzeczywiście chodzi o to, że uzyskanie dostępu do surowego XML jest warte kłopotów? WCF jest warte każdego kłopotu :), niedawno przeprowadziłem migrację ponad 10-letniego .NET remotującego distrubuted system w WCF, istnieje ciężka niestandardowa serializacja/deserializacja, aby przyspieszyć wszystko, jeśli używasz jakiegoś rodzaju zastrzyków np. Jeden marc_s powiedział w swoim ans wtedy dowiesz się, jak długo wszystko zajmuje wszystko, w moim przypadku byłem szczęśliwy, że deserializacja zajęła tylko <30 ms. –