你能用Swift作为网络编程语言吗?

时间:2014-06-16 02:34:38

标签: swift

7 个答案:

答案 0 :(得分:48)

理论上,当然。

任何可以输出纯文本的程序也可以用于包含Swift的CGI(通用网关接口)。

因此,是的,您可以使用Swift进行Web编程。 但是,目前,没有其他库(如PHP或EJB / JSP中的那些)可以让您轻松完成此过程。查看一些流行的Swift Web框架,例如{{3 }}

答案 1 :(得分:25)

不确定这个主题是多么活跃,但如果有人在将来发现这一点,我想在此宣布我已经开始研究在Swift中编写FastCGI应用程序的框架。

当然,您可以使用任何Objective-C Web框架(尽管很少),您当然可以使用Swift作为脚本语言来转储要由CGI反刍的HTML字符串。然而,(我将在这里得到所有的哲学)我认为如果我敢于使用这个术语,那么解决这种方法并不是非常“类似Swift”。 Swift的设计师经历了很多麻烦,以确保它不仅仅是“只是”Obj-C而没有(约束)C(事实上,我几乎希望他们没有说过,因为它经常被错误引用)。 Swift也比Obj-C更接近功能族(同时仍然保留了坚实的面向对象并且管理着添加Python特有的脚本性)。这开辟了我认为需要探索的全新设计选择世界。同样,输入安全......但我离题了......

所有这一切都说,我自己创造了一个模块化的“微框架”,可以让你在Swift中以非常高的水平编写Web应用程序。在撰写本文时,我将其归类为概念的功能性证明,但它仍然不像我想的那样抽象,并且缺少实际使用所必需的一些关键特性。贡献当然是受欢迎的。希望有人觉得这很有帮助。 https://github.com/ianthetechie/SwiftCGI

答案 2 :(得分:23)

Swift作为一种网络编程语言非常完美。你可以像脚本一样进行python(用于快速开发或简单的任务),然后用XCode(为了速度)编译相同的代码:

将以下脚本复制到Mac上的/ Library / WebServer / CGI-Executables / TestCGI(安装了Xcode 6.x的OSX Mavericks或Yosemite)。使用chmod +x TestCGI使其可执行。使用httpd开始调用http://localhost/cgi-bin/TestCGI。您将获得呼叫参数回显...

#!/usr/bin/env xcrun swift

import Foundation

print("Content-Type: text/html")
print("Content:")
print("")
print("1. Process.argument(s):<br />")
for s in Process.arguments {
    print(s + "<br />")
}
print("<br />")

let env: Dictionary = NSProcessInfo().environment

if let requestMethod = env["REQUEST_METHOD"] {
    print("2. Request method is: \(requestMethod)<br /><br />")
}

print("3. Number of environment variables: \(env.count)<br /><br />")

print("4. List environment:<br />")
for key in env.keys {
    print("\(key) == \(env[key]!)<br />")
}

Apple现在(2015年3月12日)开源基础库(https://github.com/apple/swift-corelibs-foundation)以允许在 Linux服务器上进行编译。

答案 3 :(得分:3)

是的,您可以在Swift中创建Web应用程序。 Tailor是允许您执行此操作的Web框架之一。其源代码位于Github

答案 4 :(得分:2)

是的,你可以。

Swift和ObjectiveC一样,但更容易。因此,您可以使用非常简单的CGI接口(请参阅http://www.sveinbjorn.org/objectivecgi)来分析和回答服务器端的客户端请求(GET和POST)。

由于Swift在字符串操作方面很强大,因此在抽象方面它将介于ObjectiveC和PHP / Perl之间。出于许多目的,甚至不需要SQLite或MySQL前端。只需将数据放入服务器上的某个文本文件即可。

答案 5 :(得分:1)

根据其他答案,您可以通过多种方式使用Apple Swift作为网站/应用实施的一部分。

此外,其他公司也在开发Swift语言编译器,这些编译器可进一步扩展功能。例如,RemObjects recently announced在他们的Elements编译器的下一个主要版本中,他们将引入一个新的编译器前端,称为&#34; Silver&#34;,这是一个Swift编译器。

作为已经支持ObjectPascal(Oxygene)和C#(Hydrogene)的现有编译器技术的前端,这意味着您将能够使用Swift语言开发.NET和Java应用程序(包括Android)。有了.NET支持,这显然意味着您可以使用Swift创建ASP.NET网站/应用程序。

请注意,这是每个平台的本机编译器 - 没有涉及源代码转换/交叉编译或平台抽象或兼容性框架,就像(例如)Xamarin一样。 RemObjects编译器生成特定于平台的本机代码(即用于.NET的MSIL,用于JVM的Java字节码等)。它还允许开发人员本地使用平台库。即在为Cocoa开发时,Cocoa类直接暴露在语言中,在开发Java时使用Java类,在.NET等.NET框架中也是如此。

无论您使用的是ObjectPascal,C#还是Swift语言前端都是如此(如果您愿意,可以混合使用项目中的语言)。

8.0版本已经测试了一段时间,因此现有的Elements许可证已经在使用它。 :)

答案 6 :(得分:1)

在Cocoa with Love一文中,你可以找到一个HTTP服务器的例子。它是用Obj-C编写的: http://www.cocoawithlove.com/2009/07/simple-extensible-http-server-in-cocoa.html

这是我尝试创建一个swift版本: https://github.com/grzegorzleszek/HTTPSwiftServer

浏览网页时,我发现了非常好的快速版本的HTTP服务器。值得一看: https://github.com/glock45/swifter