我和我的同事正在选择一个Web框架来开发一个高流量的网站.我们真的很擅长node.js + express
和php + symfony2
.两者都是伟大的框架,但我们有点担心Symfony2的,因为它似乎被大多数web框架跑赢那里.
以下是证明它的基准:http: //www.techempower.com/benchmarks/
出于这个原因,我们可能会使用的node.js +表达,但我仍然不知道为什么Symfony2的在基准执行如此糟糕.
我尝试在osx lion上编译这个cpp代码,但是我收到了一个错误.
#include <iostream>
using namespace std;
int main (int argc, char *argv[])
{
for(int i = 0; i < 10; i++)
{
cout << "hi";
cout << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译:
cc main.cpp
Run Code Online (Sandbox Code Playgroud)
错误:
Undefined symbols for architecture x86_64:
"std::cout", referenced from:
_main in ccBdbc76.o
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
_main in ccBdbc76.o
"std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)", referenced from:
_main in ccBdbc76.o
"std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> …
Run Code Online (Sandbox Code Playgroud) 为什么这个Xpath无法使用XDocument.XPathSelectElement?
Xpath的:
//Plugin/UI[1]/PluginPageCategory[1]/Page[1]/Group[1]/CommandRef[2]
Run Code Online (Sandbox Code Playgroud)
XML
<Plugin xmlns="http://www.MyNamespace.ca/MyPath">
<UI>
<PluginPageCategory>
<Page>
<Group>
<CommandRef>
<Images>
</Images>
</CommandRef>
<CommandRef>
<Images>
</Images>
</CommandRef>
</Group>
</Page>
</PluginPageCategory>
</UI>
</Plugin>
Run Code Online (Sandbox Code Playgroud)
C#代码:
myXDocument.XPathSelectElement("//Plugin/UI[1]/PluginPageCategory[1]/Page[1]/Group[1]/CommandRef[2]", myXDocument.Root.CreateNavigator());
Run Code Online (Sandbox Code Playgroud) 我有一个Action,我想知道如何访问调用该方法的实例.
例:
this.FindInstance(() => this.InstanceOfAClass.Method());
this.FindInstance(() => this.InstanceOfAClass2.Method());
this.FindInstance(() => this.InstanceOfAClass3.Method());
public void FindInstance(Action action)
{
// The action is this.InstanceOfAClass.Method(); and I want to get the "Instance"
// from "action"
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个自定义属性,我想应用于我的WCF服务中的每个方法.
我这样做:
[MyAttribute]
void MyMethod()
{
}
Run Code Online (Sandbox Code Playgroud)
问题是我的服务包含数百种方法,我不想在所有方法之上编写[Attribute].有没有办法将属性应用于我的服务中的所有方法?
这是我的属性的签名:
//[AttributeUsage(AttributeTargets.Class)]
public class SendReceiveBehaviorAttribute : Attribute, /*IServiceBehavior,*/ IOperationBehavior
Run Code Online (Sandbox Code Playgroud)
在Aliostad回答之后编辑:
我试过这个:
public void ApplyDispatchBehavior(ServiceDescription desc, ServiceHostBase host)
{
foreach (ChannelDispatcher cDispatcher in host.ChannelDispatchers)
{
foreach (EndpointDispatcher eDispatcher in cDispatcher.Endpoints)
{
foreach (DispatchOperation op in eDispatcher.DispatchRuntime.Operations)
{
op.Invoker = new OperationInvoker(op.Invoker);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
foreach (ChannelDispatcher cDispatcher in serviceHostBase.ChannelDispatchers)
{
foreach (EndpointDispatcher eDispatcher in cDispatcher.Endpoints)
{
foreach (DispatchOperation op in …
Run Code Online (Sandbox Code Playgroud) 我想调用可以使用Angular2的HTTP类返回授权失败(401)的服务器.
请求的流程应如下所示:
这就是我现在所拥有的:
export class MyService {
// ...
public getSomething(): Observable<Response> {
return this.http.get(url, options).catch((res: any, ob: any) => this.errorHandler(res, ob));
}
public errorHandler(res: Response, ob: Observable<any>): Observable<Response> {
if (res.status === 401) {
this.modalService.open(new ModalConfig({
content: LoginModalComponent,
close: () => { ob.retry(1); console.log("weow") } // <=close is the callback that should initiate the retry action on the initial request.
}));
}
else {
return Observable.throw(res.json());
}
}
}
Run Code Online (Sandbox Code Playgroud)
doSomething()的用法如下: doSomething().map((r) => r.json()).subscribe((r) => …
我正在尝试在Monotouch/Monodevelop上为IOS编写WCF服务.我使用[DataMember]/[DataContract]等标准属性作为我的可序列化对象,使用[ServiceContract]/[OperationContract]作为我的界面.一切正常,但是当我尝试在接口实现(服务器端)上实现返回IEnumerable的方法时,它没有用.
所以为了解决我的问题,我尝试使用最新版本的protobuf-net protobuf-net v2 beta r404.但我仍然从Protobuf-net收到序列化错误.请注意,"MyObject"中的IEnumerable序列化没有问题.
以下是我的代码现在的样子:
为MyObject:
[ProtoContract]
public class MyObject
{
public MyObject ()
{
}
[ProtoMember(1)]
public int Id {get;set;}
[ProtoMember(2)]
public IEnumerable<MyObject> myObjects {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我的界面(Windows上的服务器端):
[ServiceContract]
public interface ITouchService
{
[OperationContract, ProtoBehavior]
MyObject Execute();
[OperationContract, ProtoBehavior]
IEnumerable<MyObject> ExecuteENUM ();
}
Run Code Online (Sandbox Code Playgroud)
我的界面(IOS上的客户端,我无法添加ProtoBehavior作为属性,因为它不在protobuf的ISO dll中):
[ServiceContract]
public interface ITouchService
{
[OperationContract]
MyObject Execute();
[OperationContract]
IEnumerable<MyObject> ExecuteENUM ();
}
Run Code Online (Sandbox Code Playgroud)
我的界面实现:
public class TouchService : ITouchService
{
public MyObject Execute()
{
var myObject = new MyObject() { Id = 9001 …
Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个PHP Web应用程序,我想知道包含文件(include_once)的最佳方式是什么,它仍然是可维护的代码.通过maintanable我的意思是,如果我想移动一个文件,重构我的应用程序以使其正常工作是很容易的.
我有很多文件,因为我尝试了很好的OOP实践(一个类=一个文件).
这是我的应用程序的典型类结构:
namespace Controls
{
use Drawing\Color;
include_once '/../Control.php';
class GridView extends Control
{
public $evenRowColor;
public $oddRowColor;
public function __construct()
{
}
public function draw()
{
}
protected function generateStyle()
{
}
private function drawColumns()
{
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个自定义行为,其中我实现“IParameterInspector”以便能够使用 BeforeCall 和 AfterCall。我目前正在使用这些方法在 WCF 服务上执行调用之前进行一些验证。
这是我的属性:
[AttributeUsage(AttributeTargets.Class)]
public class SendReceiveBehaviorAttribute : Attribute, IServiceBehavior
{
public SendReceiveBehaviorAttribute()
{
}
public void ApplyDispatchBehavior(ServiceDescription desc, ServiceHostBase host)
{
foreach (ChannelDispatcher cDispatcher in host.ChannelDispatchers)
{
foreach (EndpointDispatcher eDispatcher in cDispatcher.Endpoints)
{
foreach (DispatchOperation op in eDispatcher.DispatchRuntime.Operations)
{
op.ParameterInspectors.Add(MyInspector);
}
}
}
}
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
}
Run Code Online (Sandbox Code Playgroud)
还有我的督察:
internal class MyInspector: IParameterInspector
{
public void AfterCall(string operationName, …
Run Code Online (Sandbox Code Playgroud) 我们有很多类的庞大应用程序.我们目前正在使用Monotouch将此.net应用程序移植到IPad.我们在使用DataContractSerializer时遇到了一些问题,我们想使用Marc Gravell的protobuf-net序列化器.
客户端和服务器之间的通信由WCF服务管理.
WCF服务由暴露给客户端和服务器的一个接口以及服务器上此接口的一个实现组成.
界面看起来像这样:
[ServiceContract]
public interface IMyService
{
[OperationContract]
SomeObject MyFunction(SomeObject myObject);
}
Run Code Online (Sandbox Code Playgroud)
服务器端实现看起来像这样:
[ServiceBehavior(...)]
public class MyService
{
public SomeObject MyFunction(SomeObject myObject)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我们的课程看起来像这样:
[DataContract]
public class MyClass
{
[DataMember]
public int SomeProp {get; set;}
[OnSerialized]
public void OnSerialized(StreamingContext context)
{
}
}
Run Code Online (Sandbox Code Playgroud)
所以这是我的问题:
对我的类,wcf接口和wcf实现做什么改动.
如何将默认WCF DataContractSerializer替换为Protobuf Serializer.
请注意,在monotouch上,我只能访问Protobuf
和Protobuf.Meta
命名空间.
[编辑] 我找到了一种交换序列化器运行时的方法: 自定义WCF DataContractSerializer
上述解决方案使用DataContractSerializerOperationBehavior.Protobuf-net是否提供此类行为?
c# ×6
wcf ×4
protobuf-net ×2
action ×1
angular ×1
attributes ×1
behavior ×1
benchmarking ×1
c++ ×1
delegates ×1
ienumerable ×1
include-path ×1
inspector ×1
javascript ×1
macos ×1
php ×1
rxjs ×1
rxjs5 ×1
serializer ×1
symfony ×1
typescript ×1
web ×1
xml ×1
xpath ×1