Справочник по сервисной библиотеке WCF в веб-форме (asp.net) - PullRequest
0 голосов
/ 12 мая 2010

Я не уверен, что это правильный способ, но я читал, что вы не предполагаете, что в вашем проекте веб-формы есть ссылка на библиотеку служб WCF, а добавляете конечные точки в свой web.config, это правда? *

Вот что я сделал:

  1. создать проект библиотеки сервисов WCF
  2. создать простой сервис под названием "MyService.svc"

WebForm:

  1. Создание веб-проекта
  2. создайте Службу WCF, и в ней у меня есть этот код

    <%@ ServiceHost Language="C#"
        Service="WCFJQuery.ContactBLL.Implementation.ContactUs"
        Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
    
  3. щелкните правой кнопкой мыши веб-проект и выберите «Добавить ссылку» и добавьте ссылку MyService.dll из проекта библиотеки служб WCF.

Это то, что ты собираешься делать?

Ответы [ 2 ]

2 голосов
/ 12 мая 2010

Если вы контролируете оба конца связи (как на стороне сервера, так и на клиенте), и оба .NET, у вас есть два варианта:

  1. либо добавьте свои сервисные ссылки, как обычно (если вы не контролируете обе стороны) - в этом случае вы получите прокси-класс на стороне клиента, который реализует прокси для методов сервиса, и все контракты данных дублируются (вы получаете классы в своем пространстве имен прокси-клиента, которые сериализуются и десериализуются из одного и того же представления XML в сообщении, которое отправляется взад и вперед - но классы разные, поскольку они живут в разных пространствах имен)

или, необязательно:

  1. вы можете поместить все ваши сервисные контракты, контракты на данные и т. Д. В отдельную сборку "MyService.Contracts" (называйте это как вам удобно), а затем вы можете поделиться этой сборкой; на стороне сервера ваш код, реализующий контракт на обслуживание, будет иметь ссылку на эту общую сборку, а на стороне клиента вы делаете то же самое, в основном: ваш клиентский проект добавит ссылку на эту общую сборку, и теперь у вас есть все ваши контракты данных (ваши типы «сообщений») только один раз - в общем пространстве имен сборки.

Вариант № 2 имеет свои явные преимущества, но опять же:

  • it only работает, если вы контролируете обе стороны связи
  • it only работает, если обе стороны имеют код .NET
  • , поскольку вы не используете встроенный механизм Add Service Reference, вам может потребоваться вручную создать часть конфигурации на стороне клиента (это действительно не так сложно)

Я надеюсь, что это даст вам несколько идей и идей - если у вас есть дополнительные конкретные вопросы - вы знаете, где их задать!

1 голос
/ 12 мая 2010

Возможно, вы слышали о том, как использовать WCF в «проекте» веб-сайта. Лучшее решение, на мой взгляд, состоит в том, чтобы вместо этого использовать проект веб-приложения, используя File-> New Project. «Проекты» веб-сайта ведут себя странно и в отличие от любого другого типа проекта в Visual Studio.

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