ASP.NET kompatibilitás
Az ASPNetCompatibility minta bemutatja, hogyan engedélyezheti ASP.NET kompatibilitási módot a Windows Communication Foundationben (WCF). A ASP.NET kompatibilitási módban futó szolgáltatások teljes mértékben részt vesznek a ASP.NET alkalmazásfolyamatban, és olyan ASP.NET funkciókat használhatnak, mint a fájl-/URL-engedélyezés, a munkamenet állapota és az HttpContext osztály. Az HttpContext osztály engedélyezi a cookie-k, munkamenetek és egyéb ASP.NET funkciók elérését. Ez a mód megköveteli, hogy a kötések a HTTP-átvitelt használják, és magát a szolgáltatást az IIS-ben kell üzemeltetni.
Ebben a mintában az ügyfél egy konzolalkalmazás (végrehajtható), és a szolgáltatás az Internet Information Servicesben (IIS) található.
Feljegyzés
A minta beállítási eljárása és összeállítási utasításai a témakör végén találhatók.
Ehhez a mintához egy .NET-keretrendszer 4 alkalmazáskészletre van szükség a futtatáshoz. Új alkalmazáskészlet létrehozásához vagy az alapértelmezett alkalmazáskészlet módosításához kövesse az alábbi lépéseket.
Nyissa meg Vezérlőpultot. Nyissa meg a Rendszergazda istrative Tools kisalkalmazást a Rendszer és biztonság fejléc alatt. Nyissa meg az Internet Information Services (IIS) Manager kisalkalmazást.
Bontsa ki a fanézetet a Csatlakozás ions panelen. Válassza ki az Alkalmazáskészletek csomópontot.
Ha az alapértelmezett alkalmazáskészletet a .NET-keretrendszer 4 használatára szeretné beállítani (ami kompatibilitási problémákat okozhat a meglévő webhelyekkel), kattintson a jobb gombbal a DefaultAppPool listaelemre, és válassza az Alapszintű Gépház... lehetőséget. Állítsa a .Net-keretrendszer lekéréses verzióját a .Net-keretrendszer 4.0.30128-es (vagy újabb) verziójára.
Ha a .NET-keretrendszer 4-et használó új alkalmazáskészletet szeretne létrehozni (más alkalmazások kompatibilitásának megőrzése érdekében), kattintson a jobb gombbal az Alkalmazáskészletek csomópontra, és válassza az Alkalmazáskészlet hozzáadása... lehetőséget. Nevezze el az új alkalmazáskészletet, és állítsa a .Net-keretrendszer lekéréses verzióját a .Net-keretrendszer 4.0.30128-es (vagy újabb) verziójára. Az alábbi telepítési lépések futtatása után kattintson a jobb gombbal a ServiceModelSamples alkalmazásra, és válassza az Alkalmazás kezelése, Speciális Gépház... lehetőséget. Állítsa az alkalmazáskészletet az új alkalmazáskészletre.
Ez a minta az első lépéseken alapul, amely egy számológép szolgáltatást implementál. A ICalculator
szerződés szerződésként ICalculatorSession
módosult, hogy lehetővé tegye a műveletek egy csoportjának végrehajtását, miközben megtartja a futó eredményt.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculatorSession
{
[OperationContract]
void Clear();
[OperationContract]
void AddTo(double n);
[OperationContract]
void SubtractFrom(double n);
[OperationContract]
void MultiplyBy(double n);
[OperationContract]
void DivideBy(double n);
[OperationContract]
double Result();
}
A szolgáltatás a funkció használatával fenntartja az állapotot minden ügyfél esetében, mivel a rendszer több szolgáltatásműveletet hív meg egy számítás végrehajtásához. Az ügyfél hívással Result
lekérheti az aktuális eredményt, és hívással Clear
nullára törölheti az eredményt.
A szolgáltatás az ASP.NET munkamenetet használja az egyes ügyfél-munkamenetek eredményének tárolására. Ez lehetővé teszi, hogy a szolgáltatás fenntartsa az egyes ügyfelek futási eredményét a szolgáltatás több hívása során.
Feljegyzés
ASP.NET munkamenet állapota és a WCF-munkamenetek nagyon különbözőek. A WCF-munkamenetek részleteiért lásd a munkamenetet .
A szolgáltatás intim függőségben van ASP.NET munkamenet-állapottól, és ASP.NET kompatibilitási módot igényel a megfelelő működéshez. Ezeket a követelményeket deklaratív módon fejezzük ki az AspNetCompatibilityRequirements
attribútum alkalmazásával.
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Required)]
public class CalculatorService : ICalculatorSession
{
double Result
{ // store result in AspNet Session
get {
if (HttpContext.Current.Session["Result"] != null)
return (double)HttpContext.Current.Session["Result"];
return 0.0D;
}
set
{
HttpContext.Current.Session["Result"] = value;
}
}
public void Clear()
{
Result = 0.0D;
}
public void AddTo(double n)
{
Result += n;
}
public void SubtractFrom(double n)
{
Result -= n;
}
public void MultiplyBy(double n)
{
Result *= n;
}
public void DivideBy(double n)
{
Result /= n;
}
public double Result()
{
return Result;
}
}
A minta futtatásakor a műveleti kérelmek és a válaszok megjelennek az ügyfélkonzol ablakában. Nyomja le az ENTER billentyűt az ügyfélablakban az ügyfél leállításához.
0, + 100, - 50, * 17.65, / 2 = 441.25
Press <ENTER> to terminate client.
A minta beállítása, összeállítása és futtatása
Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták egyszeri beállítási eljárását.
A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse a Windows Communication Foundation-minták készítéséhez szükséges utasításokat.
A megoldás létrehozása után futtassa a Setup.bat a ServiceModelSamples alkalmazás beállításához az IIS 7.0-ban. A ServiceModelSamples könyvtárnak mostantól IIS 7.0-s alkalmazásként kell megjelennie.
A minta egyszámítógépes vagy számítógépközi konfigurációban való futtatásához kövesse a Windows Communication Foundation-minták futtatásával kapcsolatos utasításokat.