WCF v.s. веб-сервисы ASP.NET прежней версии [дубликат]

Объединения (вид общей памяти C++) в чистом, безопасном C#

, не обращаясь к небезопасному режиму и указателям, Вы можете сделать, чтобы участники класса совместно использовали пространство памяти в классе/структуре. Учитывая следующий класс:

[StructLayout(LayoutKind.Explicit)]
public class A
{
    [FieldOffset(0)]
    public byte One;

    [FieldOffset(1)]
    public byte Two;

    [FieldOffset(2)]
    public byte Three;

    [FieldOffset(3)]
    public byte Four;

    [FieldOffset(0)]
    public int Int32;
}

можно изменить значения полей байта путем управления полем Int32 и наоборот. Например, эта программа:

    static void Main(string[] args)
    {
        A a = new A { Int32 = int.MaxValue };

        Console.WriteLine(a.Int32);
        Console.WriteLine("{0:X} {1:X} {2:X} {3:X}", a.One, a.Two, a.Three, a.Four);

        a.Four = 0;
        a.Three = 0;
        Console.WriteLine(a.Int32);
    }

Выводы это:

2147483647
FF FF FF 7F
65535

просто добавляют Систему использования. Время выполнения. InteropServices;

5
задан Community 23 May 2017 в 12:12
поделиться

4 ответа

WCF - это хорошо настраиваемый стек с почти бесконечными комбинациями сериализации, безопасности, транспорта и т. Д. Для вашего конкретного вопроса WCF реализует протоколы WS- *, включая безопасность транспорта и сообщений. Сериализатор WCF datacontract значительно быстрее, чем xmlserialzer, используемый в acmx. Транспорт Net.Tcp также более производительный, чем транспорт на основе http.

Я нашел здесь сравнение производительности http://msdn.microsoft.com/en-us/library/bb310550.aspx

1
ответ дан 18 December 2019 в 09:52
поделиться

Джордж,

У меня нет таких документов под рукой, потому что так очевидно, почему WCF лучше.

Во-первых, из-за Microsoft: веб-службы ASMX являются «устаревшей технологией» . Они также публично заявляют, что не будут вносить изменения в WSDL.EXE и другие части технологии ASMX. У нас достаточно проблем в этой отрасли с устаревшими технологиями и приложениями - сегодня нет смысла создавать новый фрагмент устаревшего кода.

Во-вторых, WCF абстрагирует концепции, которые являются частью ASMX, Remoting и WSE. «Все, что они могут сделать, WCF может сделать лучше».

4
ответ дан 18 December 2019 в 09:52
поделиться

WCF гораздо более гибок:

  • может использоваться через HTTP (например, устаревший ASMX)
  • , но также: может использоваться через NetTCP, MSMQ, wsHttp и так далее

  • Службы WCF могут размещаться в IIS (например, устаревший ASMX)

  • , но службы WCF также могут размещаться самостоятельно в консольном приложении, службе Windows NT и т. Д.

  • WCF предлагает гораздо больше функций безопасности и уровней безопасности, чем ASMX. (безопасность сообщений и т. д.)

  • WCF предлагает такие вещи, как надежный обмен сообщениями, поддержка транзакций и т. д.

В WCF почти все настраивается в файле конфигурации - гораздо больше, чем с ASMX.

У меня нет любые готовые документы, описывающие это, но в этом суть, я бы сказал.

Марк

PS: Не уверен, что этот документ будет содержать что-нибудь полезное для вас:

http: //whitepapers.techrepublic.com/abstract.aspx?kw=remoting&docid = 270830

PPS: вы могли бы подумать , что у Microsoft будет куча этих официальных документов, чтобы убедить людей - но нет ..... :-)

8
ответ дан 18 December 2019 в 09:52
поделиться

Проще говоря, ваш вопрос эквивалентен «Почему .NET лучше, чем VB6». Со временем любая устаревшая технология станет обременительным / финансовым бременем.

Поскольку вы спрашивали о безопасности и производительности, в частности, я бы сказал: «Это зависит от обстоятельств». Можно сделать любой вариант безопасным, а производительность во многом зависит от написанного вами кода. Один из плюсов производительности WCF заключается в том, что вам не нужно размещать его в IIS, поэтому у вас есть больше возможностей и гибкости, чтобы сделать его работоспособным.

3
ответ дан 18 December 2019 в 09:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: