문제

웹 애플리케이션과 리치 클라이언트 애플리케이션 모두에서 사용되는 .NET 구성 요소의 경우 캐싱에 대한 두 가지 확실한 옵션이 있는 것 같습니다.System.Web.Caching 또는 Ent.도서관.캐싱 블록.

  • 당신은 무엇을 사용합니까?
  • 왜?

시스템.웹.캐싱

웹 앱 외부에서 사용해도 안전한가요?나는 혼합된 정보를 보았지만 대답은 실제로는 아닐 수도 있다고 생각합니다.

나는 그 하이라이트 중 하나를 사용할 것으로 기대하지 않습니다. SqlCache종속성, 그러나 추가 CacheItemUpdate콜백 .NET 3.5에서는 정말 좋은 것 같습니다.

엔터프라이즈 라이브러리 캐싱 애플리케이션 블록

  • 다른 블록이 이미 사용 중이므로 종속성이 이미 존재합니다.
  • 캐시 지속성은 필요하지 않습니다.다시 시작할 때 캐시를 재생성해도 괜찮습니다.

일부 캐시 항목은 항상 사용할 수 있어야 하지만 주기적으로 새로 고쳐져야 합니다.이러한 항목에 대해 콜백 받기 ~ 후에 항목이 제거된 것은 그리 편리하지 않습니다.클라이언트는 캐시 항목이 다시 채워질 때까지 잠자기 상태에서 폴링만 하면 되는 것 같습니다.

Win32용 Memcached + .NET 클라이언트

필요하지 않을 때의 장점과 단점은 무엇입니까? 분산 은닉처?

도움이 되었습니까?

해결책

캐싱 주제에 대해 제가 고려하는 항목은 다음과 같습니다.

Memcached Win32 Velocity .NET 캐시 엔터프라이즈 라이브러리 캐싱 애플리케이션 블록

MemCached Win32: 최근까지 저는 MemCached Win32를 사용해왔습니다.이는 웹 팜(고가용성을 위해 동일한 콘텐츠를 제공하는 많은 서버)과 유사하지만 캐시 팜입니다.이는 더 큰 규모로 확장할 리소스가 없는 경우 처음에 웹 서버에 로컬로 설치할 수 있음을 의미합니다.그런 다음 진행하면서 수평적으로(더 많은 서버) 또는 수직적으로(더 많은 하드웨어) 확장할 수 있습니다.원래 MemCached를 Windows에서 작동하도록 포팅한 제품입니다.이 제품은 트래픽이 매우 많은 사이트에서 광범위하게 사용되었습니다. http://lineofthought.com/tools/memcached

속도: 이는 MemCached와 같은 제품에 대한 Microsoft의 답변입니다.MemCached는 꽤 오랫동안 출시되지 않았으며 Velocity는 CTP 모드에 있습니다.지금까지 읽은 내용에 따르면 이 제품은 일단 출시되면 확실히 내 머리를 돌릴 것입니다.하지만 실적이 전혀 없는 CTP 제품에 대한 대규모 생산 프로젝트를 실행할 수는 없습니다.나는 그것을 가지고 놀기 시작했지만 일단 추진력을 얻으면 MemCached는 Windows 세계에 잠겨 있는 사람들과 비교조차 되지 않을 것입니다! http://blogs.msdn.com/velocity/

.NET 캐시: 표준 .NET 캐시를 할인할 이유가 없습니다.내장되어 있으며 무료로 사용할 수 있으며 (주요) 설정이 필요하지 않습니다.로컬 메모리, 단일 상태 서버 또는 중앙 집중식 데이터베이스에 항목을 저장하기 위한 메커니즘을 제공하여 유연성을 제공합니다.단일 상태 서버(메모리 내 캐시) 이상이 필요하고 캐시를 보관하기 위해 느린 데이터베이스를 사용하고 싶지 않은 경우 Velocity가 사용됩니다.

엔터프라이즈 애플리케이션 블록: 나는 모든 Enterprise Application Block에서 멀리 떨어져 있습니다.그것은 내가 일반적으로 요구하는 것보다 더 많은 것을 제공하는 무거운 프레임워크입니다!자신의 것이 아닌 코드와 관련된 모든 것을 래핑하고 간단한 코딩 규칙을 따르는 한, 이 방법보다 다른 방법을 고수하십시오!(물론 제 생각입니다. MySpace는 Enterprise Application Block을 최대한 활용합니다!)

미리 선택할 필요는 없습니다! 나는 일반적으로 Get, Set, Exists, Remove, ListKeys 등과 같은 메서드에 대해 코드에서 통신하는 캐시 래퍼를 만듭니다.그런 다음 MemCached, Velocity 또는 .NET 캐시를 가리킬 수 있는 캐시 추상화의 기본 수준을 가리킵니다.주어진 환경에 사용하려는 캐시 형식을 주입하기 위해 StructureMap을 사용하거나 다른 IoC 컨테이너를 선택합니다.내 로컬 개발 상자에서는 세션에서 .NET 캐시를 사용할 수 있습니다.프로덕션에서는 일반적으로 MemCached Win 32를 사용합니다.그러나 설정 방법에 관계없이 쉽게 교체하여 각 시스템을 시험해보고 자신에게 가장 적합한 것이 무엇인지 확인할 수 있습니다.애플리케이션이 캐시되는 방식에 대해 가능한 한 적게 알고 있는지 확인하면 됩니다.이 추상화 계층이 마련되면 캐시에 들어오고 나가는 모든 데이터에 대해 압축 알고리즘(gzip)을 실행하여 캐시에 10배의 데이터 양을 저장할 수 있는 등의 작업을 수행할 수 있습니다.- 투명하게.

관심이 있으시면 제 책에서 .NET Cache, MemCached Win32, StructureMap 및 적절한 추상화를 다루겠습니다!

ASP.NET 3.5 소셜 네트워킹(http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1 ) Andrew Siemer www.andrewsiemer.com blog.andrewsiemer.com www.socialnetworkingin.net

업데이트memcached를 사용하여 사이트를 나열하는 링크를 변경했습니다.깨진 것을 알아차린 David에게 감사합니다!

다른 팁

EntLib 설명서는 ASP.NET 응용 프로그램용 ASP.NET 캐시에 대해 구체적으로 안내합니다.아마도 여기에서 사용하는 것에 대한 가장 강력한 권장 사항 일 것입니다.게다가 EntLib 캐시에는 종속성이 없기 때문에 이를 사용하지 않는 큰 이유가 됩니다.

System.Web을 앱의 일부로 제공하는 것과 같은 기술적 제한은 없다고 생각합니다. 하지만 .NET 3.5 페이지에 해당 공지를 넣은 것은 약간 이상합니다.실제로 Hanselman은 이 개념에 겁이 나기 시작했지만 확신을 갖게 되었다고 말했습니다.또한 댓글을 읽어보면 블록에 움직이는 부분이 너무 많고 ASP.NET 캐시가 훨씬 가볍다고 말합니다.
내 생각엔 이게 바로 그런 문제인 것 같아. 속도 해결될 예정이지만 지금은 미리보기일 뿐입니다. :-(

Web.Caching을 사용하고 어떻게 진행되는지 살펴보겠습니다.그 위에 어떤 종류의 추상화 레이어를 놓는 경우 나중에 문제가 발견되면 언제든지 EntLib 블록으로 교체할 수 있는 옵션이 있습니다.

보세요 멤캐시드.정말 멋지고 빠르며 가벼운 분산 캐싱 시스템입니다.C#을 포함하여 가장 널리 사용되는 여러 언어에 대한 API가 있습니다.클라이언트 측에서는 제대로 작동하지 않을 수 있습니다(물론 클라이언트가 어떤 종류의 서버에서 캐시된 데이터를 가져오는 경우 제외). 하지만 memcached 사용을 특정 인터페이스로 추상화하면 다른 캐싱을 사용하여 인터페이스를 구현할 수 있습니다. 체계.

@다비데 보스티

"그들이 웹 네임 스페이스에 넣으면 그것이 좋은 이유라고 생각합니다." 동일한 논리가 로봇 스튜디오의 동시성 및 조정 런타임 (CCR)에 적용됩니까?아니요?그렇게 생각하지 않았습니다.

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