Desde que Apple conoció originalmente a Swift como el sucesor de Objective-C, ha cambiado la forma en que la red codifica las aplicaciones de iOS, macOS, watchOS y tvOS.
En el momento en que Swift se convirtió en una etapa de código abierto, abrió nuevos resultados concebibles para el lenguaje más allá de las aplicaciones móviles y del lado del cliente. Swift también se convirtió en un lenguaje del lado del servidor. En este ejercicio instructivo, se dará cuenta de qué es Swift del lado del servidor y por qué necesitaría tener Swift en su back-end.
La actividad de Swift del lado del servidor está siendo impulsada por tres proyectos destacados que son Vapor by Qutheory, Kitura de IBM y Perfect, con el objetivo de brindar a los desarrolladores de Swift la oportunidad de realizar administraciones de back-end completamente desarrolladas. Esto, fundamentalmente, cambiará a dichos ingenieros en desarrolladores de pila completa, invalidando el requisito de dependencia de Node o PHP u ofreciendo control a una etapa de BaaS, por ejemplo, Firebase de Google.
Objetivos de este artículo
En este artículo, aprenderá sobre Swift del lado del servidor. Primero aclararé cómo funciona Swift en el lado del servidor, y luego te mostraré las mejores prácticas para comenzar con los sistemas Kitura, Vapor y Perfect.
Introducción de Server Side Swift
Swift fue anunciado por primera vez por Apple en 2014 y rápidamente se convirtió en uno de los lenguajes de programación de desarrollo más rápido. Swift se basa en una gran cantidad de los mejores lenguajes contemporáneos, por ejemplo, Python, lo que permite elegancia y facilidad de uso. Libera a los ingenieros de los grilletes especializados de Objective-C, permitiendo un trabajo cada vez más líquido e instintivo.
En diciembre de 2015, Apple hizo otra declaración fantástica e convirtió el lenguaje Swift junto con sus bibliotecas de soporte, depurador y administrador de paquetes en un proyecto de código abierto bajo la licencia Apache 2.0, abriendo la plataforma para que la gente en general haga solicitudes de extracción y contribuya. El alejamiento de Objective-C no solo ha tentado a los numerosos desarrolladores de Objective-C que contribuyen a la App Store, sino que ha simplificado la entrada al ecosistema de Apple con Swift para desarrolladores de todas las habilidades y bases.
En cualquier caso, mientras que los dispositivos de avance de Apple han hecho que sea más fácil para los desarrolladores desarrollar aplicaciones aparentemente convincentes y atractivas para la App Store, un cuello de botella prominente ha sido que los proyectos aún requieren desarrolladores de back-end especializados para desarrollar aplicaciones complejas impulsadas por información. Por lo tanto, los desarrolladores de iOS y macOS tendrían que recurrir a la ayuda de desarrolladores de Python, PHP o Node para crear su base de datos de back-end o adquirir la capacidad ellos mismos, lo que generaría una tarea restante mucho más pesada para completar sus objetivos de empresa.
Aunque el back-end-as-a-service (BaaS) ha actuado como el héroe de los desarrolladores de iOS, con soluciones de back-end sin código, por ejemplo, Firebase de Google y el propio CloudKit especial de Apple que mitigan las complejidades del back-end, numerosos grupos y emprendimientos solicitan más. Este es el lugar donde entra Swift del lado del servidor, lo que le permite crear un servidor de back-end de múltiples subprocesos completamente desarrollado que es de código abierto y configurable de forma interminable.
Swift del lado del servidor le brinda la oportunidad de elegir cómo tiene su servidor back-end, independientemente de si tiene AWS, RackSpace o sus propios servidores físicos. También puede elegir cómo equilibrar la carga de sus servidores (por ejemplo, mediante soluciones de servidor destacadas, por ejemplo, NGINX) y cómo continuar con su información en una base de datos (ya sea arreglos NoSQL, por ejemplo, MongoDB, o bases de datos tradicionales, por ejemplo , Postgres, MySQL u Oracle). Eso, además de que nunca está vinculado a la disposición de una parte, puede cambiar sin influir en toda la base de código de su aplicación.
El hecho es que al decidir sobre un arreglo Swift del lado del servidor de código abierto, por ejemplo, Vapor by Qutheory, Kitura de IBM o Perfect, explota una gran cantidad de módulos que le permiten diseñar su back-end solo el de la manera en que lo necesita, haciendo uso del rango de habilidades de su grupo actual en Swift para hacerlo como tal.
Swift del lado del servidor suena absolutamente convincente, sin embargo, ¿qué estructura es ideal para usted? A continuación, investigamos a todos de esta manera, comenzando con Kitura.
Comenzando con Kitura
Comenzando con Kitura, tiene una etapa que se descargó por primera vez en febrero de 2016 y adquirió una calidad inconfundible poco después en la WWDC de Apple, hablando de la invasión de IBM para admitir la web del lado del servidor con Swift, que luego se estableció para la transición de las manos de Apple a fuente abierta.
Como regla, Kitura se centra en la tradición sobre la configuración. Construye su proyecto subyacente con stubs, antes de seleccionar los marcos y bibliotecas explícitos que espera construir. El proceso de autenticación de Kitura está respaldado por su marco de middleware Kitura-Credentials excepcionalmente propio, que le permite revisar una variedad de sistemas de validación, desde el nombre de usuario / contraseña convencional hasta el inicio de sesión de red en línea y la verificación unificada, utilizando OpenID que maneja JSON Web Tokens (JWT) .
La disposición ORM de la base de datos de Kitura está controlada por Kuery para confundir las complejidades de administrar SQL específicamente, admitiendo bases de datos racionales básicas, por ejemplo, MySQL, SQLite y PostgreSQL localmente, y además otras disposiciones de bases de datos, incluidas las bases de datos NoSQL, a través de otros complementos diferentes.
Kitura también ofrece otros complementos valiosos para cosas, por ejemplo, plantillas HTML, utilizando complementos bien conocidos, por ejemplo, Stencil y Markdown. Con origen en IBM, el sistema del lado del servidor se beneficia adicionalmente de la conectividad con las API de IBM Watson y, además, brinda soporte macOS para coordinarse directamente en su plataforma en la nube Bluemix. Esto le da una opción adicional disponible para usted, junto con sus otras alternativas de implementación convencionales en forma cruzada sobre servidores Linux / Unix y macOS.
Si bien la plataforma proporciona absolutamente un conjunto extraordinario de características de Kuery a la capacidad de incorporar con las diferentes bibliotecas API de IBM. No tiene la influencia de red que tiene Vapor. Recibir Kitura requiere reconocer y comprender sus propios métodos no regulares para hacer las cosas, desde cómo funciona Kuery hasta su mecanismo de autenticación. En cualquier caso, dado que está patrocinado por una organización expansiva con una atención en el esfuerzo, hay algunas afirmaciones que sellan el futuro.
Instalación y ejecución de Kitura
El método más rápido para comenzar es utilizar la interfaz de línea de dirección (CLI) de Kitura, compatible con macOS y Linux. Utilizando la conocida utilidad de administración de paquetes Homebrew, instale Kitura y Kitura CLI ingresando lo siguiente:
$ brew tap ibm-swift / kitura $ brew installkitura |
Dentro de un organizador vacío que usará como su empresa, ejecute el adjunto para establecer su empresa:
$ kitura init
Cuando termine de producir su aplicación esqueleto, verá otro proyecto llamado HelloKitura.xcodeproject. Puede obtener más información sobre la generación de proyectos consultando la documentación de Kitura. Puede abrir el proyecto creado recientemente en Xcode y modificar la clase de aplicación esencial, Application.swift , para manejar todas las llamadas a la raíz de su servidor https: // localhost: 8080 / URL :
// Maneja las solicitudes HTTP GET a "/"
router.get ("/") {solicitud, respuesta, siguiente en
response.send ("¡Hola, mundo!")
Siguiente()
}
La pieza de código anterior reacciona restaurando el ejemplar Hello, World! . Antes de que finalmente pueda ejecutar el proyecto, cambie su esquema de Xcode para que apunte a HelloKitura (su proyecto activo) y comience su empresa presionando Comando-R . Mientras su servidor se está ejecutando, en un navegador de su elección, vaya a https: // localhost: 8080 y debería ver el hola mundo en su navegador.
Comenzando con Vapor
Lanzado un par de meses después de Kitura, en septiembre de 2016, Vapor by Qutheory generalmente se considera el más destacado en cuanto al tamaño de la comunidad y la cantidad de módulos. Está construido sobre el marco Swift-nio de Apple, lo que lo convierte en una auténtica potencia de ejecución. Para nada como Kitura y las diferentes etapas, que no se fabrican simplemente en Swift sino en Node.js u otros analizadores intermedios, Vapor se desacopla de cualquiera de esas dependencias para entregar un analizador Swift y ofrecer API claras y coherentes.
Vapor brinda una ayuda completa de bases de datos a proveedores de SQL, por ejemplo, MySQL y PostgreSQL, y proveedores de NoSQL, por ejemplo, Redis y MongoDB, como Kitura. Aunque Kitura tiene sus propias soluciones Kuery ORM, Vapor aprovecha Fluent ORM para admitir las bases de datos a las que acabo de hacer referencia, lo que hace que sea moderadamente simple extender el ORM a otros proveedores de bases de datos de terceros. Vapor se aísla de marcos alternativos al admitir de forma nativa el Servicio de notificaciones push de Apple y también al admitir SMTP para enviar notificaciones por correo electrónico.
Mientras Kitura actualiza su propio marco de autenticación, Vapor tiene la biblioteca de autenticación Turnstile de Stormpath incorporada de forma nativa. Al igual que Kitura, la plataforma también es compatible con las tentaciones de Moustache y Markdown, y además de su propio lenguaje expresivo de plantillas Swift-nativo, Vapor también acompaña su propio motor CLI como el otro marco Swift del lado del servidor, con la capacidad de ampliar el comando de la aplicación. -línea de argumentos con banderas personalizadas.
Instalación y ejecución
Para comenzar con Vapor, comience instalando el kit de herramientas Vapor, que comprende todas las dependencias de la biblioteca y la caja de herramientas CLI. Instálalo con Homebrew ingresando lo siguiente en la terminal:
$ brew installvapor / tap / vapor
Cuando finalice la instalación, puede afirmar que Vapor se ha instalado correctamente escribiendo vapor —help. Para crear un proyecto, escriba lo siguiente, sustituyéndolo por el nombre de su propio proyecto:
$ vapor nuevo
El motor Vapor creará una estructura de carpetas similar a la siguiente:
├── Público
├── Fuentes
│ ├── Aplicación
│ │ ├── Controladores
│ │ ├── Modelos
│ │ ├── boot.swift
│ │ ├── configure.swift
│ │ └── route.swift
│ └── Ejecutar
│ └── main.swift
├── Pruebas
│ └── AppTests
└── Package.swift
Para crear realmente un proyecto de Xcode, también deberá ingresar explícitamente el siguiente comando, desde la carpeta del proyecto:
$ vapor xcode
Finalmente, para construir y ejecutar su proyecto, desde Xcode seleccione el esquema Ejecutar y también el dispositivo de destino de desarrollo de Mi Mac , y luego presione el botón Ejecutar como lo haría con cualquier otro proyecto de Xcode. Dado que su proyecto Xcode no experimenta ningún error, debería ver el siguiente mensaje de confirmación en la terminal:
Servidor a partir de https: // localhost: 8080
Continúe e ingrese esa URL en cualquier navegador, y debería ver su aplicación ejecutándose.
Comenzando con perfecto
Finalmente, echamos un vistazo a Perfect by PerfectlySoft, una plataforma del lado del servidor con muchas funciones como Vapor y Kitura. Perfect incorpora campanas y silbidos estándar similares que descubriría en los proveedores anteriores, desde plantillas con Moustache o Markdown hasta redes con sockets web, y además Apple Push Notification y SMTP.
Al igual que la otra plataforma del lado del servidor, Perfect tiene su propia implementación ORM, la plataforma StORM (Perfect StORM), que brinda soporte nativo para MySQL, PostgreSQL y otras bases de datos relacionales prominentes, y además MongoDB, Redis y otras soluciones NoSQL. Una exclusión destacada de Perfect es una CLI, pero el marco lo compensa con una aplicación nativa de macOS.
Al igual que Vapor, Perfect también incorpora Turnstile para impulsar su mecanismo de autenticación, ampliado para interactuar con StORM de forma más íntima. Otra calificación que esta disposición tiene sobre las demás se encuentra en una gran cantidad de bibliotecas de utilidades nativas que admite, incluida su propia envoltura cURL única en su tipo y, además, herramientas para trabajar con archivos y carpetas. La base de desarrolladores de Perfect es la segunda más grande, casi a la par con la de Vapor, lo que significa que tiene una comunidad sólida para respaldar esta plataforma, junto con un rico conjunto de recursos educativos que le brindan certeza en caso de que la elija.
Instalación y ejecución
Ponerse en marcha con Perfect es extremadamente sencillo. Inicialmente, clone el repositorio de PerfectlySoft ingresando lo siguiente:
$ git clone https://github.com/PerfectlySoft/PerfectTemplate.git
Desde dentro de la carpeta clonada, compile el proyecto:
$ construcción rápida
Finalmente, ejecute el proyecto, que ejecutará un servidor local en la dirección 0.0.0.0:8181
.build / debug / PerfectTemplate
También puede ejecutar su proyecto en Xcode creando primero un nuevo proyecto, de la siguiente manera:
$ paquete swift generate-xcodeproj
Dentro de Xcode, asegúrese de que su destino ejecutable apunte a Mi Mac , antes de compilar y ejecutar el proyecto.
Conclusión
La llegada de Swift a la red de código abierto ha impulsado un impulso para las soluciones Swift más allá de las aplicaciones cliente, con marcos de servidores back-end convirtiéndose en las siguientes periferias. Impulsado por tres proyectos destacados: Vapor de Qutheory, Kitura de IBM y Perfect. Swift del lado del servidor ha permitido a los desarrolladores de iOS (y macOS) convertirse en desarrolladores de pila completa. Esto puede anular la dependencia de los desarrolladores back-end de Node.js, PHP o .NET. Swift del lado del servidor también permite a los grupos controlar su back-end sin tener que depender de una solución de back-end-as-a-server móvil como Firebase o CloudKit.
Swift del lado del servidor no es para todos, debe decidir cuánto control requirió para su back-end y si tiene sentido para usted hacer el suyo. Además, no intenté decirte qué solución Swift del lado del servidor es ideal. Los desarrolladores están indiscutiblemente arruinados por la decisión, y cada uno de los tres ofrece una toma única y madura y vale la pena experimentar con ella. Les insto a que jueguen con cada uno de los códigos de ejemplo, evalúen la estructura del lenguaje y se conecten con sus comunidades particulares para ver qué solución se adapta mejor a sus necesidades.