WCF
<[Link]>
<trace autoflush="true" />
<sources>
<source name="[Link]">
<listeners>
<add name="myListener"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="myListener"
type="[Link]"
initializeData="[Link]" />
</sharedListeners>
</[Link]>
<[Link]>
<diagnostics>
<messageLogging logEntireMessage="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
logMalformedMessages="true"
maxMessagesToLog="50000"
maxSizeOfMessageToLog="20000" >
</messageLogging>
</diagnostics>
</[Link]>
WebAPI
- create Web Application
- add NuGet package for WebAPI
- add WebApiConfig class
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// ERST SPÄTER EINFÜGEN => NACH FIDDLER!
[Link]();
[Link](new JsonMediaTypeFormatter());
[Link](
name: "Api1",
routeTemplate: "api/DGBB/{controller}/{action}",
defaults: new { action = "Get" });
}
}
- add [Link]
protected void Application_Start(object sender, EventArgs e)
{
[Link]([Link]);
}
- add EventsController class
public string[] Get()
{
return new[] { "WebApi & SignalR", "Cross Platform Development", "Event 3"
};
- call in Browser => XML
- call in Fiddler => JSON
o Warum ist das so?
- setze content-type in Fiddler-Request => JSON
- configure Formatters
- zeigen in Browser und Fiddler
SignalR
Server
- add SignalR NuGet package
- add OWIN self hosting package
- add Startup class & configure SignalR
- add hub class
- add host class & start WebApp
In main:
var url = "[Link]
using ([Link](url))
{
[Link]("\n[{0}] SignalR server listening on {1}.", [Link]
String("dd-mm-yyyy hh:MM:ss"), url);
[Link]();
}
Client
- add SignalR Client NuGet package
- create hub connection
- create hub proxy from connection
- start connection
- register events to listen for with [Link]
- call server methods with [Link]
var connection = new HubConnection("[Link]
[Link] = [Link];
[Link] = [Link];
var proxy = _connection.CreateHubProxy("PlanningGridHub");
await _connection.Start(); ODER: _connection.Start().Wait();
[Link]("WriteMessage", "Hello!");
_proxy.On<string, decimal[]>("AccountDataChanged", (accountId, values) =>
{
DoSomething();
});