11/17/2008

C# 4.0

В C# 4.0 добавлены новые возможности. Анонимные объекты можно передавать в метод и обращаться к свойствам/методам объекта:


public Form1()

{

var item = new { Id = 1, Value = "v1"};

Write(item);


var data = new { Id = 1, Name = "d1" };

Write(data);

}

public static void Write(dynamic value)

{

System.Diagnostics.Trace.Write(value.Id);

}

Появляется возможность приводить тип обобщенных делегатов:

delegate T Provider<out T>();
...

Provider<int> vp = delegate
{
return 1;
};
Provider<object> op = vp;
vp =(Provider<int>) op;

Добавлены значения параметров по-умолчанию и именованные параметры:

public void Method(int id, string name = "name", int value = 1)
{
}

вызывать можно так:
Method(1);
Method(1, "my name");
Method(1, value: 10);

11/09/2008

Silverlight 2.0: ServiceReferences.ClientConfig

Если в .ClientConfig-файле нет необходимых данных, то попытка обратиться к wcf-сервису из Silverlight 2.0 приводит к ошибке: System.Collections.Generic.KeyNotFoundException was unhandled by user code, Message="The given key was not present in the dictionary."

Пример правильного конфигурационного файла.

[ServiceReferences.ClientConfig]

<configuration>

    <system.serviceModel>

        <bindings>

            <basicHttpBinding>

                <binding
name="WSHttpBinding_IService1">

                    <security
mode="None" />

                </binding>

            </basicHttpBinding>

        </bindings>

        <client>

            <endpoint
address="http://localhost:3646/Service1.svc"
binding="basicHttpBinding"

             bindingConfiguration="WSHttpBinding_IService1"
contract="ServiceReference1.IService1"

             name="WSHttpBinding_IService1" />

        </client>

    </system.serviceModel>

</configuration>

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.