2011-12-07 2 views
1

는 RssXmlHelper.cs에 RssToolkit에서 다음 코드를 감안할 때 :XmlSerializer.Serialize는 시간이 오래 걸립니다 ... 왜?

serializer.Serialize()가 내 WCF 서비스를 호출한다
/// <summary> 
    /// Returns XML of the Generic Type. 
    /// </summary> 
    /// <param name="rssDocument">The RSS document.</param> 
    /// <typeparam name="T">RssDocumentBase</typeparam> 
    /// <returns>string</returns> 
    public static string ToRssXml<T>(T rssDocument) where T : RssDocumentBase 
    { 
     if (rssDocument == null) 
     { 
      throw new ArgumentNullException("rssDocument"); 
     } 

     using (StringWriter output = new StringWriter(new StringBuilder(), CultureInfo.InvariantCulture)) 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(T)); 
      serializer.Serialize(output, rssDocument); 
      return output.ToString(); 
     } 
    } 

, 그것은 시간의 전체 많이 걸립니다.

나는 내 프로젝트에서 호출하는 WCF 서비스에 앉아있다. 나는 그것에 들어가며, 물론, 그것이 문제의 핵심입니다.

다음 내 솔루션 내에서 프로젝트를 참조하고 아무런 문제가 없습니다.

WCF 서비스에서 이것을 사용할 때 다르게해야 할 일이 있습니까?

- UPDATE -

좋아, 그래서, Windows 7 및 .NET 프레임 워크 4 마이크로 소프트 윈도우 SDK를 설치 sgne.exe RssToolkit.dll를 실행하고 다음과 같은 오류 얻을 :

Error: An attempt was made to load an assembly with in incorrect format [path to rsstoolkit.dll] 
- Could not load file or assemply [path to rsstoolkit.dll] or one of its dependencies. This assembly was build by a runtime newer than the currently loaded runtime and cannot be loaded. 

내 RssToolkit 프로젝트의 대상 프레임 워크가 Windows SDK for .NET 4.와 일치하는 4.0으로 설정됩니다. 올바르지 않습니까?

+0

제목이 약간 잘못되었습니다. WCF는 느린'XmlSerializer '문제와 관련이 없으므로 편집했습니다. –

답변

3

Windows SDK와 함께 제공되는 XML Serializer Generator 도구 인 sgen.exe을 사용하여 직렬화 어셈블리를 생성 할 수 있습니다. 큰 클래스에서 사용하여 크게 개선되었습니다.

기본적으로 도메인에있는 모든 개체를 직렬화 및 비 직렬화하는 방법을 알고있는 코드가 생성됩니다. DLL을 생성하고 나면 어셈블리 참조로 프로젝트에 포함시킨 다음 지금 사용중인 XmlSerializer 대신 클래스를 사용할 수 있습니다.

+0

thx. 위에 업데이트 됨. – ElHaix

+0

4.0 버전을 찾았습니다. 어떤 이유로 v2.0 및 v4.0이 포함되어 있습니다. 4.0 bin \ NETFX 4.0 Tools \ sgen.exe – ElHaix

+0

기본적으로이 문제가 너무 복잡하다는 것이 나타났습니다. 이 서비스는 직렬화 된 데이터를 반환하기 만하면되므로 HTML 형식의 스트림을 읽고 전달했습니다. 정보에 대한 Thx. – ElHaix

관련 문제