WCF с .Net и другими клиентами? - PullRequest
0 голосов
/ 16 февраля 2011

Каков хороший способ создания уровня службы WCF, чтобы клиентское приложение .Net и другие типы клиентов могли общаться со службой?

Я знаю, что в будущем наше приложение должно будет поддерживать мобильные устройства.

Мы передаем объекты в наши методы WCF, подобные этому:

    [DataContract]
    public class User: DomainBase
        {
            [DataMember]        
            public string Username { get; set; }
            [DataMember]
            public string Password { get; set; }
            [DataMember]
            public string FirstName { get; set; }
            [DataMember]
            public string LastName { get; set; }
}  

Так что в нашем сервисе может быть такой метод:

public bool Save(User item){
   ...do some work
}   

public User GetUserByUsernameAndPassword(string username, string password){
   ...do some work
}    

Теперь в .Net я могу использовать ту же библиотеку объектов, что и мои службы, но с другими клиентами я не смогу. Итак, если я не хочу писать кучу разных методов для каждого типа клиента, что будет лучшим способом справиться с этим?

Ответы [ 3 ]

1 голос
/ 16 февраля 2011

Это зависит от того, какую привязку вы решите поддерживать.Некоторые привязки работают только с .NET.

  • BasicHttpBinding: SOAP через HTTP.Любой клиент SOAP может подключиться

  • WsHttpBinding: - Это то же самое, что BasicHttpBinding.Короче говоря, он использует SOAP через HTTP.Но с ним также поддерживается надежная передача сообщений, безопасность и транзакции.WS-Reliable Messaging, безопасность с WS-Security и транзакции с WS-Atomic Transaction поддерживают надежное сообщение.

  • NetTcpBinding: - Эта привязка отправляет двоичный код SOAP, включая поддержку надежной передачи сообщений, безопасности и транзакций, напрямую через TCP.Самым большим недостатком NetTcpBinding является то, что сервер и клиент также должны быть выполнены на языке .NET.

  • NetNamedPipesBinding: -Ths привязка Посылает SOAP в двоичном кодировании по именованным каналам.Эта привязка используется только для связи WCF-WCF между процессами на одном компьютере под управлением Windows.

1 голос
/ 16 февраля 2011

Я думаю, что совместимость с другими клиентами больше зависит от связывания, чем фактические контракты.Если другие клиенты и языки клиентов, которые вы будете поддерживать, могут использовать SOAP, то поддержка BasicHttpBinding обеспечивает лучшую поддержку.Например, клиенты, использующие .NET 2, по-прежнему могут взаимодействовать с сервером .NET 3.5 WCF.Здесь также есть библиотеки SOAP для Java и других языков.

Сервер может просто опубликовать WSDL, а затем клиенты могут автоматически сгенерировать все ваши контрактные интерфейсы и типы на любом языке из WSDL.Это обрабатывает «повторное использование» типов ваших контрактов данных.

Если вы хотите отойти от SOAP, есть способы сделать REST или Plain-old-XML или JSON с WCF, но это намного большесложный со стороны сервера ...

1 голос
/ 16 февраля 2011

То, что у вас есть сейчас, должно отлично работать для любого другого клиента.Что заставляет вас верить, что может быть проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...