10/29/2008

На PDC08 представлен новый набор контролов для Silverlight 2.0

Silverlight Toolkit - 12 новых контролов, исходники, юнит-тесты, темы, примеры, документация.

Использование JSON в Silverlight 2.0

Äëÿ ñåðèàëèçàöèè îáúåêòîâ â JSON ïðåäíàçíà÷åí DataContractJsonSerializer.
Íàïðèìåð, åñòü ñëåäóþùèé êëàññ:

public class DTO
{
    public Guid Id { get; set; }
    public string Value { get; set; } 

    public override string ToString()
    {
        return string.Concat("{Id='", this.Id, "', Value='", this.Value, "'}");
    }
}

ñîçäàåì ýêçåìïëÿð êëàññà:
var ct = new DTO() { Id = Guid.NewGuid(), Value = "hello" };

ñåðèàëèçîâàòü:
string json = JSON.Serialize(ct); 

ïîëó÷èì:
{"Id":"a90417e2-9689-4d80-8c34-b1faeb14823b","Value":"hello"}

äåñåðèàëèçîâàòü:
DTO dto = JSON.Deserialize<DTO>(json);

--

public static class JSON
{
    public static string Serialize(object value)
    {
        // ñîçäàòü ñåðèàëèçàòîð
        DataContractJsonSerializer js = new DataContractJsonSerializer(value.GetType());

        // ñîçäàòü ñòðèì; è çàïèñàòü â íåãî ðåçóëüòàò ñåðèàëèçàöèè
        MemoryStream ms = new MemoryStream();
        js.WriteObject(ms, value);

        // ïîëó÷èòü ñòðîêó èç ñòðèìà
        // v1:
        ms.Position = 0;
        using (StreamReader reader = new StreamReader(ms))
            return reader.ReadToEnd();

        // v2:
        // byte[] bytes = ms.ToArray();
        // return System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length);
    }

    public static T Deserialize<T>(string json)
    {
        // ñîçäàòü ñåðèàëèçàòîð
        DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(T));
        // ñîçäàòü ñòðèì; è çàïèñàòü â íåãî ñòðîêó
        MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(json));
        // äåñåðèàëèçîâàòü ...
        return (T)js.ReadObject(ms);
    }
}

 

10/28/2008

Microsoft в ажуре

В ажуре (перен.) в полном порядке ...

27 октября Рэй Оззи, главный программный архитектор Microsoft, представил платформу Windows Azure (azure - по-английски означает "лазурь") - операционная система нового типа.

Windows Azure позволит переместить обычные настольные приложения в интернет, реализовать концепуию - "ПО как услуга"..

Windows Azure позволит IT-отделам компаний сократить расходы на инфраструктуру, переложив обычные задачи на свои датацентры (тысячи серверов Microsoft, которые предоставляют дисковое пространство и вычислительные мощности; нагрузка на cерверах распределяется автоматически, число серверов легко увеличить, а данные на них хранятся сразу в трех экземплярах, чтобы избежать потерь; вся информация пользователей будет синхронизироваться между их сайтами и устройствами).

Вместе с Windows Azure будут предлагаться онлайновые сервисы: Windows Live, Exchange Online, SharePoint Online, Microsoft Dynamics CRM Online, Office Communications Online и Office Live Meeting.

Использование UserControl'ов в Silverlight 2.0

Например, в Silverlight Application определен юзер-контрол SilverlightControl1 в следующих файлах:

[SilverlightControl1.xaml]

<UserControl
x:Class="SilverlightApplication8.SilverlightControl1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Grid
x:Name="LayoutRoot"
Background="Red">

        <TextBlock
Text="Hello" />

    </Grid>

</UserControl>


[SilverlightControl1.xaml.cs]

using System.Windows.Controls;

 
 

namespace SilverlightApplication8

{

    public
partial
class
SilverlightControl1 : UserControl

    {

        public SilverlightControl1()

        {

            InitializeComponent();

        }

    }

}


Для использования SilverlightControl1 в Page.xaml надо добавить атрибут ...
Пример Page.xaml c добавленным SilverlightControl1:

<UserControl
x:Class="SilverlightApplication8.Page"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Width="400"
Height="300"
xmlns:MyControl="clr-namespace:SilverlightApplication8">

    <Grid
x:Name="LayoutRoot"
Background="White">

        <MyControl:SilverlightControl1
x:Name="sc1"
Width="100"
Height="100" />

    </Grid>

</UserControl>


Примечание: Visual Studio 2008 все юзер-контролы подчеркивает волнистой линией и в Error List выводится предупреждение. Например, для MyControl:SilverlightControl1 в Error List выводится следующий текст:

Warning 1 The element 'Grid' in namespace 'http://schemas.microsoft.com/winfx/2006/xaml/presentation' has invalid child element 'SilverlightControl1' in namespace 'clr-namespace:SilverlightApplication8'. List of possible elements expected: 'Grid.ShowGridLines, Grid.ColumnDefinitions, Grid.RowDefinitions, Grid.Background, Grid.IsItemsHost, Grid.Style, Grid.OverridesDefaultStyle, Grid.Triggers, Grid.Resources, Grid.DataContext, Grid.Language, Grid.Tag, Grid.InputScope, Grid.LayoutTransform, Grid.Width, Grid.MinWidth, Grid.MaxWidth, Grid.Height, Grid.MinHeight, Grid.MaxHeight, Grid.Margin, Grid.FocusVisualStyle, Grid.Cursor, Grid.ForceCursor, Grid.ToolTip, Grid.ContextMenu, Grid.InputBindings, Grid.CommandBindings, Grid.AllowDrop, Grid.RenderSize, Grid.RenderTransform, Grid.RenderTransformOrigin, Grid.Opacity, Grid.OpacityMask, Grid.BitmapEffect, Grid.BitmapEffectInput, Grid.ClipToBounds, Grid.Clip, Grid.SnapsToDevicePixels, Grid.IsEnabled, Grid.IsHitTestVisible, Grid.Focusable, sgUIElement, sgFrameworkElement, sgShape, Ellipse, Line, Path, Polygon, Polyline, Rectangle, sgPanel, Canvas, DockPanel, Grid, TabPanel, ToolBarOverflowPanel, sgStackPanel, ToolBarPanel, UniformGrid, sgVirtualizingPanel, VirtualizingStackPanel, WrapPanel, sgControl, sgC....


Как избавиться от предупреждения?