문제

가 silverlight2beta2 응용 프로그램에 액세스하는 WCF 웹 서비스입니다.이 때문에 현재 사용할 수 있습 basicHttp 구속력이 있습니다.Webservice 반환됩니다 상당히 많은 양의 XML 데이터가 포함됩니다.이것은 상당히 낭비에서 대역폭 사용량 관점에 대한 응답으로,압축 하는 경우,작은 것입 요인에 의하여 5(실제로 붙여 응답으로 txt 파일을 압축된다.).

요청에는"Accept-Encoding:gzip deflate"-는 방법은 없는 WCF 서비스 gzip(또는 그렇지 않으면 압축)응답?

내가 찾았어요 이 링크 하지만 그것은 확실히 보이는 조금 복잡한 기능을 처리해야 out-of-the-box 계되었습니다.

OK-에 표시된 솔루션을 사용하는 시스템입니다.IO.압축으로의 응답으로 나가지 않을 수"것을 얻기 위해"IIS7 동적 압축하여 작동합니다.뿐만 아니라,그것은 밝혀:

  1. 동적 압축 IIS7 작업 al 니다.그것은 단지하고 있는 웹 개발자 도우미 플러그인에 대한 즉 보이지 않았습니다.나의 추측되기 때문 SL 손 웹 서비스 호출에 떨어져 브라우저는 브라우저를 처리하"개"와 로스의 도구 결코 보고 압축된 응답입니다.나를 확인 할 수 있었을 사용하여 이 Fiddler 는 트래픽을 모니터링 외부 브라우저 응용 프로그램입니다.에 fiddler,응답에서 실제로,gzip 으로 압축된!!

  2. 다른 문제로 시스템입니다.IO.압축 솔루션 시스템입니다.IO.압축에 존재하지 않 Silverlight CLR.

그래서 나의 관점에서는 가장 쉬운 방법을 사용 WCF 압축 Silverlight 에서 사용하려면 동적 압축 IIS7 고 쓰는 코드가 없다.

도움이 되었습니까?

해결책

를 사용하는 경우 IIS7,살펴보 압축 모듈.이를 구성할 수 있습 압축 HTTP 요청에 대한 귀하의 서버입니다.

다른 팁

WS-에 대한 압축 WCF 할 수 있도록 구성 압축에서 구속력이 있습니다.

WS-에 대한 압축 WCF 파블로 M.Cibraro

또는 마이크로 소프트 GZip Encoder 샘플 는"만듭니다 인코더 채널을 사용하는 시스템입니다.IO.압축합니다.GZipStream 클래스를 압축하는 메시지를 보내는 WCF"

나는 보지 않았어 방법에 대한 WCF 을 압축을 수행할 때 WCF 프로젝트였습니다.나는 그냥을 사용한 시스템입니다.IO.압축 네임스페이스와 빠른 압축기입니다.여기에는 코드 사용

public static class CompressedSerializer
{
    /// <summary>
    /// Decompresses the specified compressed data.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="compressedData">The compressed data.</param>
    /// <returns></returns>
    public static T Decompress<T>(byte[] compressedData) where T : class
    {
        T result = null;
        using (MemoryStream memory = new MemoryStream())
        {
            memory.Write(compressedData, 0, compressedData.Length);
            memory.Position = 0L;

            using (GZipStream zip= new GZipStream(memory, CompressionMode.Decompress, true))
            {
                zip.Flush();
                var formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                result = formatter.Deserialize(zip) as T;
            }
        }

        return result;
    }

    /// <summary>
    /// Compresses the specified data.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="data">The data.</param>
    /// <returns></returns>
    public static byte[] Compress<T>(T data)
    {
        byte[] result = null;
        using (MemoryStream memory = new MemoryStream())
        {
            using (GZipStream zip= new GZipStream(memory, CompressionMode.Compress, true))
            {
                var formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                formatter.Serialize(zip, data);
            }

            result = memory.ToArray();
        }

        return result;
    }
}

그때 나는 단지 나의 서비스에서는 바이트 배열로 입력,다음과 같은

void ReceiveData(byte[] data);

밖으로 잘 나를 위해 일했다.

그것은 또한 주목해야한 당신이해야 할 수도 있습니다 추가 mime 유형 applicationHost.config<httpCompression><dynamicTypes> 섹션을 사용하도록 설정하는 것 외에도 압축을 위한 사이트:

<add mimeType="application/soap+msbin1" enabled="true" />

특정한 경우는 동적 응답지 않은 압축(그리고 일부는)그것이 될 수 있는 mime 형식이 문제입니다.사용 Fiddler 을 얻을의 특성과 관련된 요청을 합니다.실패한 요청을 추적할 수 있습에 도움이 될 것인지 여부를 결정 IIS 도하려고하면 압축 응답.는 경우에는 압축가 올바르게 구성할 것을 볼 수 NO_MATCHING_CONTENT_TYPE체 추적 섹션 추적이 출력됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top