使用来自 angular 2 和 Silverlight 应用程序的相同 WCF 服务

Consume same WCF service from angular 2 and Silverlight application

目前我们有一个带有 WCF 服务(后端)的 Silverlight 应用程序(前端)。现在,我们将在不更改 WCF 服务的情况下用 Angular 2 应用程序替换 Silverlight 应用程序 - 只有 UI 会更改。

在开始 Angular 2 之前,我们在 Angular 2 中创建了一个演示应用程序来验证 WCF 服务是否与 Angular 2 一起工作,因为 Silverlight 支持 basicHttpBinding 而对于 Angular 2,我们需要使用 webHttpBinding。目前我们正面临这方面的问题。

是否可以在 Silverlight 中同时使用一个 WCF 服务和 Angular 2? 请建议。

由于工作方式的不同,可以以多种方式使用同一个 wcf 服务。你说你面临问题,但你没有说出它们是什么。

WCF 服务有端点。 它是通过 basicHttpBinding 或 webHttpBinding 或其他任何方式定义连接的端点。 一项服务可以有多个端点。 这些在您的配置中定义。 如果您查看那里,您将看到所有基本的 httpbinding 端点。 为您的一项服务添加一项,然后使用 angular 试一试。 这是 webHttpbinding 的样子: https://weblogs.asp.net/kiyoshi/wcf-using-webhttpbinding-for-rest-services 那里还有一些针对一些常见问题的建议。 WCF 的这一方面的设置非常繁琐。 可想而知re-using同样的wcf服务是不会实用的。 在这种情况下,我会建议将代码移植到 Web api(尽管我认为他们可能已将其重命名为当前版本)。编写大多数东西非常容易,因为它们只是具有指定路由属性的方法。

是的,您可以先使用 wcf 服务 我建议您升级 angular 4,因为 angular 2 中有很多错误,下面是 angular 4 服务示例代码。

angular 4 条服务

import { Injectable } from '@angular/core';
import {Http,Response} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';


@Injectable()
export class SampleService {
constructor(private _http: Http) { 

 };
getSample(Id) : Observable<any>{    
  return this._http.get('sample.svc/sample?Id='+Id)
.map((response:Response)=><any>response.json());
};  

}