Могут ли zip-файлы и изображения храниться в кэше AppFabric - PullRequest
3 голосов
/ 21 июля 2010

Хотелось бы узнать, могу ли я хранить zip-файлы Plist и Images в кеше AppFabric? Если да, то как? Нужно ли нам конвертировать zip-файлы в двоичный формат или какой-либо другой формат, чтобы его можно было сохранить в App Fabric.

Я собираюсь сохранить весь zip-контент в кэше AppFabric, чтобы улучшить производительность и масштабируемость моего приложения.

Я разрабатываю свой веб-сервис на .net c #.

Ответы [ 2 ]

3 голосов
/ 21 июля 2010

Да, вы можете хранить эти файлы в AppFabric - ограничение для хранения объектов в AppFabric состоит в том, что они сериализуются (или сериализуются , если вы находитесь в США :-)).Как превратить файл в сериализуемый объект?Вы превращаете его в байты - вот пример, который позволяет загружать zip-файлы с веб-страницы.

<asp:FileUpload runat="server" ID="ZipFileUpload" /><br />
<asp:Button runat="server" ID="UploadButton" Text="Upload file to AppFabric" OnClick="UploadButton_Click" />
<hr />
<asp:GridView runat="server" AutoGenerateColumns="false" ID="CachedZipFilesGridview">
    <Columns>
        <asp:BoundField DataField="Key" />
    </Columns>
</asp:GridView>

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            bindGrid();
        }
    }

    protected void UploadButton_Click(object sender, EventArgs e)
    {
        DataCacheFactory factory;
        DataCache zipCache;
        Byte[] zipArray;

        // Check to see if the user uploaded a zip file
        if (ZipFileUpload.HasFile && ZipFileUpload.PostedFile.FileName.EndsWith(".zip"))
        {
            // Initialise the byte array to the length of the uploaded file
            zipArray = new Byte[ZipFileUpload.PostedFile.ContentLength];

            // Read the uploaded file into the byte array
            ZipFileUpload.PostedFile.InputStream.Read(zipArray, 0, ZipFileUpload.PostedFile.ContentLength);

            factory = new DataCacheFactory();

            // Get the "files" cache
            zipCache = factory.GetCache("files");

            // Add the byte array to the zipfiles region of the cache
            // Using regions allows us to separate out images and zips
            zipCache.Add(ZipFileUpload.PostedFile.FileName, zipArray,new TimeSpan(1,0,0), "zipfiles");

            bindGrid();
        }
    }

    protected void bindGrid()
    {
        DataCacheFactory factory;
        DataCache zipCache;
        IEnumerable<KeyValuePair<string, object>> cachedFiles;
        DataTable cachedFilesDataTable;

        factory = new DataCacheFactory();

        zipCache = factory.GetCache("files");

        cachedFiles = zipCache.GetObjectsInRegion("zipfiles");

        cachedFilesDataTable = new DataTable();
        cachedFilesDataTable.Columns.Add(new DataColumn("Key", typeof(string)));

        foreach (KeyValuePair<string, object> cachedFile in cachedFiles)
        {
            cachedFilesDataTable.Rows.Add(cachedFile.Key);
        }

        CachedZipFilesGridview.DataSource = cachedFilesDataTable;
        CachedZipFilesGridview.DataBind();
    }
}
0 голосов
/ 26 июля 2010

, если содержимое файлов zip и изображений не создаются динамически, почему бы не использовать кэш iis для кэширования этих файлов. Файловый кэш (IIS 6.0)

...