Может ли Dart использовать службы WCF? Если да, то как?
В более широком смысле, как можно перейти от веб-приложения «Javascript ‹--> ASP.NET ‹--> WCF Service ‹--> SQL» к приложению с интерфейсом Dart?
Может ли Dart использовать службы WCF? Если да, то как?
В более широком смысле, как можно перейти от веб-приложения «Javascript ‹--> ASP.NET ‹--> WCF Service ‹--> SQL» к приложению с интерфейсом Dart?
Да, это выполнимо - по крайней мере, в режиме отладки. Я немного боролся с этим, если не сказать больше. Я надеюсь, что другие люди могут извлечь из этого пользу.
Чтобы заставить его работать с дротиком, вам нужно поместить проект дротика в подпапку под папкой вашего решения и включить файлы (дротика) в ваш проект Visual Studio.
Попался: функция, которую я вызвал, является строкой с точки зрения Darts, но .NET должен потреблять поток. Я надеюсь, что кто-то может показать лучшее решение.
Итак, у меня есть это в моем ICalculationService. Я надеюсь, что кто-то может пролить свет на то, почему это должно быть так:
[OperationContract]
System.IO.Stream RunCalculation(System.IO.Stream calculation);
Код дротика прост (и программисты ценят простоту)
void runCalculation() {
String url = "http://localhost:5548/CalculationService.svc/RunCalculation";
String data = "raw stuff to send to the service";
Future<HttpRequest> request = HttpRequest.request(url, method: 'POST',sendData: data );
request.then((HttpRequest resp) {
DivElement div = querySelector("#someresult_div");
div.text = resp.responseText;
});
}
Вот рабочая веб-конфигурация (проект является сервисным приложением WCF):
<?xml version="1.0"?>
<configuration>
<appSettings/>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<httpRuntime/>
</system.web>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="YourDefaultNamespace.CalculationService">
<enableWebScript/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="debug">
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceMetadata httpGetEnabled="true"/>
</behavior>
<behavior>
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
<services>
<service name="YourDefaultNamespace.CalculationService" behaviorConfiguration="debug">
<endpoint address="" behaviorConfiguration="YourDefaultNamespace.CalculationService" binding="webHttpBinding" contract="YourDefaultNamespace.ICalculationService"/>
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex"/>
</service>
</services>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
<staticContent>
<remove fileExtension=".dart"/>
<mimeMap fileExtension=".dart" mimeType="text/x.dart"/>
</staticContent>
</system.webServer>
</configuration>
Если вы хотите делать что-то на чистом javascript, это может помочь понять, что происходит в малоизвестном мире wcf/asp.net: http://kinsey.no/blog/index.php/2009/10/28/using -wcfsvcs-automatically-generated-javascript-proxy-без-asp-net-ajax/