Подтвердить что ты не робот

Можете ли вы использовать Swift как язык веб-программирования?

Не могли бы вы технически использовать Swift в качестве языка программирования для создания веб-сайта/веб-приложения?


Обновление: похоже, многие люди работают над этим.


Официальная поддержка Apple: https://swift.org/server-apis/

4b9b3361

Ответ 1

Теоретически любая программа, которая может выводить обычный текст, может использоваться для CGI (Common Gateway Interface), который включает Swift. Итак, да, вы можете использовать его для веб-программирования. Но нет никаких дополнительных возможностей, как в PHP или EJB/JSP, чтобы облегчить вам работу. Возможно, вы можете начать создавать эти объекты самостоятельно и быть первым, кто сделает это.

Ответ 2

Не знаю, насколько активна эта тема, но если кто-нибудь найдет это в будущем, я хотел бы объявить здесь, что начал работать над инфраструктурой для написания приложений FastCGI в Swift.

Конечно, вы можете использовать любую веб-фреймворк Objective-C (хотя их довольно мало), и вы, безусловно, можете использовать Swift как язык сценариев, чтобы выгрузить HTML-строки, чтобы срываться CGI. Тем не менее (я собираюсь получить здесь все философские мысли), я думаю, что урегулирование такого подхода не очень "похоже на Swift", если я осмелюсь использовать этот термин. Дизайнеры Swift столкнулись с множеством проблем, чтобы удостовериться, что это больше, чем "просто" Obj-C без ограничений C (на самом деле, я почти хотел, чтобы они не говорили об этом, так как он так часто неверно цитировался). Swift также намного ближе к функциональному семейству, чем Obj-C (при этом сохраняя твердую ориентацию объекта и управляя возможностью добавления скриптов Python-esque). Это открывает совершенно новый мир дизайнерских решений, которые, как мне кажется, нужно изучать. Кроме того, введите безопасность... но я отвлекся...

Все это, чтобы сказать, я взял на себя обязательство создать модульную "микрофракцию", которая позволит вам писать веб-приложения в Swift на очень высоком уровне. На момент написания этой статьи я бы классифицировал ее как функциональное доказательство концепции, но она по-прежнему не такая абстрактная, как мне бы хотелось, и не хватает ряда ключевых функций, которые необходимы для реального использования. Взносы, конечно же, приветствуются. Надеюсь, кто-то найдет это полезным. https://github.com/ianthetechie/SwiftCGI

Ответ 3

Swift отлично работает как язык веб-программирования. Вы можете сделать python как скриптинг (для быстрой разработки или простых задач), а затем скомпилировать тот же код с XCode (для скорости):

Скопируйте следующие script в /Library/WebServer/CGI -Executables/TestCGI на вашем Mac (OSX Mavericks или Yosemite с установленной Xcode 6.x). Сделайте его исполняемым с помощью 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 теперь (12/03/15) открыла библиотеку Foundation (https://github.com/apple/swift-corelibs-foundation), чтобы разрешить компиляцию на серверах Linux.

Ответ 4

Да, вы можете создавать веб-приложения в Swift. Tailor - это одна из веб-фреймворков, которая позволяет вам это делать. Его исходный код находится на Github.

Ответ 5

Да, вы можете.

Swift делает то же самое, что и ObjectiveC, но делает это проще. Таким образом, вы можете использовать очень простой CGI-интерфейс (см. http://www.sveinbjorn.org/objectivecgi) для анализа и ответа на запросы клиентов (как GET, так и POST) на сервер.

Так как Swift силен в обработке строк, он будет находиться где-то между ObjectiveC и PHP/Perl с точки зрения абстракции. Для многих целей интерфейс SQLite или MySQL не нужен. Просто оставьте свои данные в текстовом файле на сервере.

Ответ 6

В соответствии с другими ответами вы можете использовать Apple Swift любым количеством способов как часть реализации веб-сайта/приложения.

Кроме того, другие компании также разрабатывают компиляторы языка Swift, которые расширяют возможности еще больше. Например, RemObjects недавно анонсировали, что в следующем крупном выпуске своего компилятора Elements они представят новый компилятор под названием "Silver", который является компилятором Swift.

В качестве передней части существующей технологии компилятора, которая уже поддерживает ObjectPascal (Oxygene) и С# (Hydrogene), это означает, что вы сможете разрабатывать .NET и Java-приложения (в том числе Android) с использованием языка Swift. Благодаря поддержке .NET это означает, что вы можете использовать Swift для создания веб-сайта/приложения ASP.NET.

Обратите внимание, что это родной компилятор для каждой платформы - нет трансляции исходного кода или кросс-компиляции или абстракции платформы или рамки совместимости, как это имеет место (например, Xamarin). Компилятор RemObjects создает специфический для платформы собственный код (т.е. MSIL для .NET, Java Bytecode для JVM и т.д. И т.д.). Это также позволяет разработчику самостоятельно использовать библиотеки платформ. т.е. при разработке для классов Cocoa, Cocoa отображаются непосредственно на языке, а также классы Java при разработке для Java,.NET framework для .NET и т.д.

Это тот случай, если вы используете интерфейсы ObjectPascal, С# или Swift (и вы можете смешивать и сопоставлять языки в проекте, если хотите).

В выпуске 8.0 уже давно уже есть бета-версия, так что уже есть уже существующие лицензиаты Elements.:)

Ответ 7

В статье Cocoa с любовью вы можете найти пример HTTP-сервера. Это написано в Obj-C: http://www.cocoawithlove.com/2009/07/simple-extensible-http-server-in-cocoa.html

Вот моя попытка создать быструю версию: https://github.com/grzegorzleszek/HTTPSwiftServer

Просматривая Интернет, я нашел действительно хорошую быструю версию HTTP-сервера. Стоит посмотреть: https://github.com/glock45/swifter