У меня есть библиотека классов, которую я хочу предоставить внешнему миру как службу WCF. Мой класс содержит абстрактные классы, обычные классы, перечисления и т. Д.
Я просто хочу, чтобы люди могли сделать "служебную ссылку" на мою библиотеку классов в своем проекте и начать ее использовать.
Как мне этого добиться?
3 ответа
Если вы еще не закончили, то можете спасти себя от большой ошибки, не начав.
Библиотека классов разработана как библиотека классов. Услуга создана как услуга. Это две разные вещи с разными целями.
Например, вы могли определить перечисление и производный от EventArgs класс, у которого есть свойство этого типа перечисления, и делегат обработчика событий, который принимает этот тип EventArgs, и у вас может быть один или несколько классов, которые предоставляют события, использующие это тип делегата.
Ничто из этого не имеет смысла раскрывать в сервисе!
Вместо этого вам следует разработать сервис так, чтобы он предоставлял функциональность , которую вы хотите раскрыть. Для этого служба, конечно же, будет использовать вашу библиотеку классов.
Одно различие между библиотекой классов и сервисом заключается в том, что сервис должен быть разработан таким образом, чтобы его можно было использовать на разных платформах. Подумайте, что происходит, когда Java-клиент потребляет вашу службу: у него будет прокси-класс, соответствующий операциям, предоставляемым вашей службой. Эти методы прокси будут иметь параметры примитивных типов и типов прокси, которые соответствуют структуре данных, передаваемых в вашу службу и из нее.
Очевидно, что клиент Java не будет использовать те же типы .NET, которые используются в ваших серверных операциях!
Стандартный способ создания .NET-клиента работает точно так же - через прокси-классы. Ваш вопрос предполагает, что вы ожидаете, что при открытии библиотеки классов фактические классы будут экспортированы клиенту. Это не относится к делу. Если вы решите связать клиента с конкретными классами .NET, используемыми сервером, тогда клиентам потребуется сборка на стороне сервера, как если бы клиенты использовали обычную библиотеку классов.
- Прочитать технический документ WCF
- Ознакомьтесь с руководством для начинающих
- Изучите раздел MSDN WCF
Классы и перечисления могут быть доступны через WCF. Однако абстрактные классы будут проблемой, но в любом случае нет смысла раскрывать их как службу.
Для перечислений вам нужно будет добавить атрибут [EnumMember]
, например:
public enum Sex
{
[EnumMember]
Unknown,
[EnumMember]
Male,
[EnumMember]
Female
}
Тем не менее, тема WCF слишком широка, чтобы охватить ее здесь. Просто посмотрите, что произойдет, и если у вас возникнут проблемы, задавайте более конкретные вопросы.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.