Co to jest format pliku SVC?
Pliki tekstowe z rozszerzeniem .svc zawierają instrukcję aktywacji usługi dla WCF - Windows Communication Foundation. Pojedynczy plik .svc przechowuje dyrektywę @ServiceHost specyficzną dla przetwarzania danych WCF, która jest uruchamiana przez Microsoft IIS. Usługi hostowane na maszynach mogą być aktywowane w ten sposób poprzez przychodzące komunikaty. Pliki .svc można otwierać i edytować w dowolnym edytorze tekstu, ale zamiast tego powszechnie używa się Microsoft Visual Studio i podobnych środowisk IDE.
Dyrektywa @ServiceHost obsługuje kilka atrybutów. Główny atrybut Service zawiera nazwę implementacji usługi CLR (Common Language Runtime), odpowiedzialnej za dynamiczne tworzenie instancji na hoście przy pierwszym żądaniu. Dodatkowe atrybuty mogą odnosić się do języka Language, w którym zaimplementowano usługę, ustawień Debug, ścieżki kodu źródłowego CodeBehind lub niestandardowej klasy Factory. Ponadto pliki .svc mogą zawierać kod usługi inline. Wszelkie zmiany wprowadzone w plikach wymagają rekompilacji przy następnym zapytaniu.
Podczas hostowania usługi w IIS, adresy punktów końcowych są zawsze względne wobec ścieżki pliku .svc. Na przykład, jeśli bazowy adres usługi WCF to http://localhost/Application/Service.svc, a plik web.config zawiera <endpoint address="point" />, to http://localhost/Application/Service.svc/point odnosi się do tego punktu końcowego. Przeglądanie adresu URL .svc bezpośrednio wyświetla stronę pomocy usługi z linkiem do kontraktu WSDL (?wsdl).
WCF to technologia legacy, która nie jest zawarta w nowoczesnym .NET (Core/5+). Zastąpiła ona starszy format .asmx w zakresie hostowania usług korporacyjnych. Projekty migrujące z usług opartych na .svc mogą celować w minimalne API ASP.NET Core, gRPC lub utrzymywaną przez społeczność bibliotekę CoreWCF jako most kompatybilności.
Bezpieczeństwo
RYZYKO: LOWSam plik .svc jest nieszkodliwym tekstem i nie zawiera kodu wykonywalnego (logika znajduje się w skompilowanych plikach DLL). Kwestie bezpieczeństwa dotyczą serwera i samej USŁUGI, a nie pliku: udostępniony punkt końcowy WCF powinien używać odpowiednich powiązań/uwierzytelniania, a pozostawienie publicznie dostępnego WSDL/metadanych może ujawnić kontrakt usługi. Dla użytkownika przypadkowy plik .svc jest bezczynny - nie ma w nim nic do uruchomienia poprzez otwarcie.
Szczegóły formatu
w pigułceProgramy otwierające pliki SVC
Szczegóły techniczne
specyfikacja| Typ pliku | Plik aktywacji usługi w formacie tekstowym - brak treści binarnej, brak własnego ładunku danych |
| Kodowanie tekstu | UTF-8 |
| Składnia dyrektywy | Składnia dyrektywy strony ASP.NET: `<%@ ServiceHost ... %>` |
| Typ MIME | `text/plain` |
| Typowy rozmiar pliku | Poniżej 1 KB - zazwyczaj pojedyncza linia dyrektywy |
| Środowisko hosta | Microsoft IIS poprzez handler ASP.NET WCF (handler HTTP `svc-Integrated` lub `svc-ISAPI`) |
| Atrybut Service | Określa nazwę klasy CLR implementującej usługę WCF (np. `MyNamespace.MyService`) |
| Atrybut Factory | Opcjonalny; określa niestandardową klasę `ServiceHostFactory` do kontrolowania sposobu konstruowania hosta usługi |
| Obsługa kodu inline | Kod implementacji usługi może być umieszczony bezpośrednio w pliku `.svc` obok dyrektywy |
| Wzorzec adresu URL punktu końcowego | Adres URL pliku `.svc` jest bazowym adresem usługi; podścieżki go rozszerzają (np. `/Service.svc/methodName`) |
| Udostępnianie WSDL | Dodanie `?wsdl` do adresu URL `.svc` zwraca automatycznie wygenerowany dokument kontraktu WSDL dla usługi |
| Lokalizacja logiki biznesowej | Skompilowana do zestawu `.dll` w katalogu `bin` aplikacji internetowej; `.svc` jest jedynie punktem wejścia IIS |
| Konfiguracja runtime | Powiązania, punkty końcowe i zachowania są deklarowane w `web.config`, a nie wewnątrz pliku `.svc` |
| Identyfikacja pliku | Brak magicznych bajtów; identyfikowany przez dyrektywę `<%@ ServiceHost` na początku lub blisko początku pliku |
| Format poprzednika | `.asmx` (Usługi internetowe ASMX) - format `.svc` w WCF zastąpił ASMX w hostowaniu usług korporacyjnych i międzyplatformowych |
| Status legacy | WCF jest nieobecny w .NET Core/5+; społecznościowy projekt CoreWCF oferuje ścieżkę migracji dla istniejących usług opartych na `.svc` |
| Wydano | 2006 (Windows Communication Foundation, .NET Framework 3.0) |
| Najnowsza wersja | Tied to WCF on .NET Framework; WCF is not in modern .NET (Core/5+) - see CoreWCF |
| Specyfikacja | learn.microsoft.com |
Konwersje SVC
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki SVC.